前言
Python的pyserial库允许与不同的设备进行通信。
安装
python >= 3.4
pip install pyserial
基本流程
python
import serial
# 1. 打开串口
ser = serial.Serial()
# 2. 设置串口参数(例如波特率、数据位、校验位、停止位)
ser.port = '/dev/ttyS0' # 这是一个示例端口号,实际应替换为你的设备对应的串口名称
ser.baudrate = 9600 # 波特率设置为 9600
ser.bytesize = serial.EIGHTBITS # 数据位数为 8 位
ser.parity = serial.PARITY_NONE # 无奇偶校验位
ser.stopbits = serial.STOPBITS_ONE # 停止位为 1 位
# 3. 打开串口连接
ser.open()
# 检查是否成功打开
if ser.is_open:
print("串口已成功打开!")
else:
print("无法打开串口!")
# 4. 发送数据
data_to_send = b"Hello, Serial World!" # 要发送的数据,必须是字节类型
ser.write(data_to_send)
# 5. 接收数据(可读时)
while True:
if ser.in_waiting > 0: # 如果有数据可读
received_data = ser.read(ser.in_waiting) # 读取所有可用的数据
print(f"接收的数据:{received_data.decode('utf-8')}")
# 在这里可以添加适当的条件来退出循环或处理数据后继续等待新数据
# 6. 关闭串口连接
ser.close()
使用心得
1.注意不同的python版本安装方式不一样;
2.串口配置:打开串口前需要正确配置参数,包括端口号(如COM1或/dev/ttyUSB0)、波特率(如9600、115200等)、数据位(通常8位)、校验位(无、奇、偶、标记)、停止位(1位或2位)以及流控方式(硬件或软件控制)等。
3.串口使用结束后,记得关闭串口.否则可能会导致资源占用问题。
4.读写操作 读取时,先用in_waiting属性判断是否有可读数据. 写入时,记得字符串需先转为字节. 方法为 my_string.encode('utf-8')
5.设备响应需要一定时间 记得设置超时时间
6.换行符 Arduino等设备通常使用\r\n作为一行数据的结束标志,所以在Python端编写数据发送时要注意匹配这一约定,或者根据实际设备调整消息格式。
7.清理缓冲区 在开始正式读取新的数据之前,有时需要清除串口缓冲区中的残留数据,可以通过连续读取直至没有更多数据的方式实现