首页 > Python 笔记 > python 读取串口

python 读取串口

更新:

初始串口通讯

首先,使用Python进行串口通信需要使用pySerial库-它为串口通信提供了方便的包装。确认pySerial已经安装好之后,可以使用以下代码初始化串口对象:

import serial

ser = serial.Serial(
    port='COM3',      # 串口号
    baudrate=9600,    # 波特率
    parity=serial.PARITY_NONE, # 校验位
    stopbits=serial.STOPBITS_ONE, # 停止位
    bytesize=serial.EIGHTBITS, # 数据位
    timeout=1         # 超时设置
)

注意:确保用实际串口号替换‘COM3’,波特率等参数与硬件设置一致。

读取串口数据

串口对象初始化后,通过ser.read()或者ser.readline()读取数据的方法如下:

# 阅读单个字节
data = ser.read()

# 读一行,以换行符'\n'为结束标志
data = ser.readline()

为了显示或进一步处理,经常需要将字节数据解码为字符串:

# 默认情况下,对刚才的数据进行解码。
decoded_data = data.decode('utf-8')
print(decoded_data)

如遇解码错误,应及时考虑使用错误的处理策略,如‘ignore’:

# 在解码过程中忽略错误
decoded_data = data.decode('utf-8', 'ignore')

数据的循环读取和处理

在实际应用中,经常需要循环阅读数据并实时处理。下面的代码显示了如何持续监控串口,并在收到数据后解码打印:

while True:
    if ser.in_waiting:
        data = ser.readline()
        decoded_data = data.decode('utf-8').strip() # 去掉可能的换行符
        print(decoded_data)

在这个例子中,检查了输入缓冲区域是否有待读取的数据,并且使用strip()方法去除了字符串首尾的空白字符。

写入串口数据

Python除了读取之外,还可以通过write()的方法将数据写入串口:

# 在发送字符串时,首先要把它编码成字节。
ser.write('你好串口!\r\n'.encode('utf-8'))

发送完成后,可以调用flush()方法,以确保数据完全发送:

ser.flush()

关闭串口

记得在数据交互结束后关闭串口,释放资源:

ser.close()

异常处理

处理异常也是串口通信所必需的。举例来说,读取时可以添加异常处理:

try:
    while True:
        if ser.in_waiting:
            data = ser.readline()
            decoded_data = data.decode('utf-8').strip()
            print(decoded_data)
except serial.SerialException as e:
    print('串口错误:', e)
finally:
    ser.close()

使用try使用可能导致异常的代码区块。...except结构,确保及时捕捉和处理问题。最终finally确保串口无论如何都会关闭。

总结

Python读取串口的步骤包括:使用pySerial库初始化串口,读取和处理数据,写入数据,最后关闭串口。合理的错误处理机制可以保证程序的强度和稳定性。掌握Python串口通信技术在当今物联网和智能硬件兴起的背景下尤为重要,它可以使您与外部世界的设备实现有效的通信,拓宽编程应用的边界。

文章目录
顶部