haas506 2.0开发教程-高级组件库-tcp/usocket
最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
tcp测试用例
1、LuatOS网络测试工具
工具介绍:
- 功能强大的串口工具。支持Lua自动化处理、串口调试、串口监听、串口曲线、TCP测试、MQTT测试、编码转换、乱码恢复等功能。链接: 网络测试工具
点击链接进入主界面后,点击"打开TCP",左上角会出现host:port,复制到main.py中的host、port处。(每次连接host:port都会改变)
2、烧录程序
代码主要功能:
- 连接网络、网络校时获取实时时间
- socket连接、socket发送/接收数据
注意:修改host和port处的值后烧录代码。
2.2版本net接口有更新,需要更改以下内容(Ctrl+F 查找mynet)
#2.2版本改为
#from modem import net as mynet
......
#2.2版本改为
#print("csq:",mynet.getCsq())
main.py
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : main.py
@Description:
@Author :
@date :
@version : 1.0
'''
import ustruct
import gc
import utime as time
import uos
import usys
import http
import network
import usocket
import _thread
import sntp
import modem
#2.2版本改为
#from modem import net as mynet
import net as mynet
g_connect_status = False
g_tcp=False
global sock
host = "112.125.89.8"
port = 36394
# host = "124.67.74.184"
# port = 7010
def on_4g_cb(args):
global g_connect_status
pdp = args[0]
netwk_sta = args[1]
if netwk_sta == 1:
g_connect_status = True
else:
g_connect_status = False
def connect_network():
global net,on_4g_cb,g_connect_status
net = network.NetWorkClient()
g_register_network = False
if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
g_register_network = True
else:
g_register_network = False
if g_register_network:
net.on(1,on_4g_cb)
net.connect(None)
else:
print('network register failed')
while True:
if g_connect_status:
print('network register successed')
break
time.sleep_ms(20)
def tcpsend(s):
global g_tcp
while True:
try:
print('tcp send gateway heartbeat...')
ret=s.send("heartbeatbuf")
time.sleep(5)
g_tcp=True
except OSError:
g_tcp=False
print('TCP OSError')
break
except:
g_tcp=False
break
def tcprecv(s):
global g_tcp
while True:
try:
recvdata=s.recv(255)
g_tcp=True
except OSError:
g_tcp=False
print('TCP OSError1')
break
except:
g_tcp=False
break
print(recvdata)
if len(recvdata)==0:
g_tcp=False
print('recv data len=0')
break
time.sleep(1)
def doConnect(host,port):
global sock
sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
try :
sock.connect((host,port))
except :
pass
return sock
def tcprecv(s):
global sockLocal
print('Running thread tcprecv...')
while True:
try:
recvdata=sockLocal.recv(255)
except OSError:
print('TCP OSError')
if len(recvdata)!=0:
print(recvdata)
time.sleep(1)
def main():
global sockLocal
global sock
print(host,port)
sockLocal = doConnect(host,port)
_thread.start_new_thread(tcprecv, (sockLocal,))
while True:
try :
msg = str(time.time())
sockLocal.send(msg)
print("send msg ok : ",msg)
# print("recv data :",sockLocal.recv(1024))
except:
print("\r\nsocket error,do reconnect ")
time.sleep(3)
sock.close()
sockLocal = doConnect(host,port)
time.sleep(1)
if __name__ == '__main__':
connect_network()#连接网络
time.sleep(1)
#2.2版本改为
#print("csq:",mynet.getCsq())
print("csq:",mynet.csqQueryPoll())
main()
board.json
{
"name": "haas506",
"version": "1.0.0",
"io": {
"serial1":{
"type":"UART",
"port":0,
"dataWidth":8,
"baudRate":115200,
"stopBits":1,
"flowControl":"disable",
"parity":"none"
},
"serial2":{
"type":"UART",
"port":1,
"dataWidth":8,
"baudRate":115200,
"stopBits":1,
"flowControl":"disable",
"parity":"none"
},
"serial3":{
"type":"UART",
"port":2,
"dataWidth":8,
"baudRate":115200,
"stopBits":1,
"flowControl":"disable",
"parity":"none"
}
},
"debugLevel": "ERROR",
"repl":"enable",
"replPort":0
}
3、测试结果
- 连接成功后,将时间戳发送过去
- 利用网络测试工具发送字符串数据、HEX数据
- 串口助手可以看到测试工具发过来的数据和被发送的时间戳数据
注意:网络测试工具一旦断开TCP连接,它的host:port数据会改变。