需要准备好的工具
windows上找个串口通信工具
Linux上查看设备列表
有可能需要安装串口驱动,去设备管理器中安装一下
或这个一般串口开发,厂家都会给驱动和串口调试工具
如果串口调试工具调试没有问题了
接下来你用python代码调试
你需要在python环境中安装pyserial
库
pip install pyserial
列出所有再用的串口
https://blog.csdn.net/sprawling/article/details/50477166
import os
import serial.tools.list_ports
port_list = list(serial.tools.list_ports.comports())
print(port_list)#if there is no serial ports,here wil show '[]'. array mode
if len(port_list) == 0:
print('No serial ports.')
else:
for i in range(0,len(port_list)):
print(port_list[i])
os.system("pause")
根据显示的串口列表或者从设备管理器中看到的结果
初始化串口
def initSerial():
print()
if platform.system() == "Windows":
# 根据情况看要不要E
# 串口名, 比特率等参数根据 设备通信协议来设置
# ser = serial.Serial("COM3", 115200, 8, "E", timeout=50, stopbits=1)
ser = serial.Serial("COM3", 115200, 8, timeout=50, stopbits=1)
print('开启ser', ser)
elif platform.system() == "Linux":
# print("linux sys")
ser = serial.Serial("/dev/ttyUSB1", 9600, 8, timeout=50, stopbits=1)
# ser = serial.Serial("/dev/ttyUSB1", 9600, 8, "E", timeout=50, stopbits=1)
else:
print('不认识的操作系统')
return ser
获取数据
此处有获取到的是16进制数据
有的直接获取的byte, 根据情况来获取
def getData(ser):
time.sleep(1)
count = ser.inWaiting()
print(count)
# 数据的接收
if count > 0:
data = ser.read(count)
print(
data
)
if data != b'':
# 将接受的16进制数据格式如b'h\x12\x90xV5\x12h\x91\n4737E\xc3\xab\x89hE\xe0\x16'
# 转换成b'6812907856351268910a3437333745c3ab896845e016'
# 通过[]去除前后的b'',得到我们真正想要的数据
# print("receive", str(binascii.b2a_hex(data))[2:-1])
# res = str(binascii.b2a_hex(data))[2:-1]
# print('res1-->', res)
res = str(data)[2:-1]
# print('res2-->', res)
if res.startswith("$") and res.endswith("\\r\\n"):
# if res.startswith("$") and res.endswith("\r\n"):
parseData(res)
else:
print('数据格式由问题')
print(res)
savefile(res,filename='error.txt')
return res
# else:
# print('没有接收到数据')
接下来是解析数据
这一步中,数据位代表的内容不同,无法做到统一,根据通信协议文档来吧
def parseData(res):
pass
接下来是根据解析出来的数据进行其它业务
当然一般我会将整个过程封装到一个流程函数中
类似于
def start():
"""
流程函数
:return:
"""
ser = initSerial()
# for i in range(1, 5):
while True:
# time.sleep(0.5)
res = getData(ser)
# res = "01030e01a70002000d000e0011011401eae53e"
# parseData(res)
# print(d)
return ''