最近用Python中的串口模块挺多的,也很好用,下面是一些基本功能的总结,包括设置并打开串口,判断串口是否打开,关闭串口
还有就是serial 模块在 读取串口数据的时候,需要对读取到的数据进行一定的处理,才能把想要的信息提取出来。
import serial # 导入串口通信模块
import re # 提取文本中的特定类型字符
portx = "COM2" # COM2口用来读数
bps = 9600
# 设置并打开串口
ser = serial.Serial(portx, int(bps), timeout=1, parity=serial.PARITY_NONE, stopbits=1)
# 串口执行到这已经打开 再用open命令会报错
if ser.isOpen(): # 判断串口是否打开
print("open success")
ser.write("hello".encode("utf8")) # 向端口些数据 字符串必须译码
line = read_line(ser) # 递归读取串口
if line:
# 不知是虚拟串口的原因还是serial模块的原因,读取到的数据是 ASCII 编码
# 这里如果不知道是什么编码的话,可以采用 chardet 库查看一下
# ret = chardet.detect(line) # 查看串口返回来的数据到底是什么编码!是ASCII!!
line.decode('ascii', 'ignore') # 以字符串的格式接收需要重新转码
line = str(line, 'utf-8') # 转换成 'utf-8' 编码
# 去除回车和换行
line = line.replace('\n', '').replace('\r', '')
step = re.sub("\D", "", line) # 这一句是把字符串中数字提取出来
expression = ''.join(re.findall(r'[A-Za-z]', line)) # 提取字符串中的字母
ser.close() # 关闭端串口
版权声明:本文为FSgongzi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。