Python3 serial(串口模块)读取数据及数据格式处理

  • Post author:
  • Post category:python


最近用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 版权协议,转载请附上原文出处链接和本声明。