pyserial是一个Python库,它提供了与串口通信相关的功能。它可以让我们在Python程序中直接与串口设备进行通信,如读取和写入串口数据。pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。
pip install pyserial
import serial
# 创建Serial对象,初始化串口
ser = serial.Serial('COM1', 9600, timeout=1) # Windows示例,COM1是串口号,9600是波特率,timeout是读超时时间
# 或
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # Linux示例,/dev/ttyUSB0是串口号
参数解释:
ser.write(b'Hello, Serial Port!') # 向串口写入数据
**解释:**write方法用于向串口发送数据。注意,发送的数据必须是字节类型(bytes),因此字符串前需要加b前缀
data = ser.read(10) # 读取10个字节的数据
line = ser.readline() # 读取一行数据,以换行符结束
解释:readline方法用于读取一行数据,直到遇到换行符(\n)。如果没有设置超时,且没有接收到换行符,则会一直等待。
ser.close() # 关闭串口连接
解释:close方法用于关闭串口连接,释放系统资源。
# 设置波特率
ser.baudrate = 115200
# 获取波特率
print(ser.baudrate)
# 设置数据位、校验位和停止位
ser.bytesize = serial.EIGHTBITS # 8位数据位
ser.parity = serial.PARITY_NONE # 无校验位
ser.stopbits = serial.STOPBITS_ONE # 1位停止位
# 检查串口是否已打开
print(ser.isOpen()) # 或使用 ser.is_open(注意:在较新版本的PySerial中,推荐使用is_open)
解释:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。
ser.flushInput() # 清除输入缓冲区
ser.flushOutput() # 清除输出缓冲区
解释:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。这可以在某些情况下用于重置串口状态或确保数据的准确性。
7. 发送中断信号
ser.sendBreak(duration=0.25) # 发送BREAK信号,持续0.25秒
解释:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。duration参数指定了BREAK信号的持续时间。
1. serial.Serial(): 用于打开、关闭和配置串行设备。
2. serial.Serial(port, baudrate=9600, timeout=0.5): 用于打开串行设备,并指定波特率、数据位和停止位。
3. serial.CommPortIdentifier(): 用于获取指定名称的串行设备的标识符。
4. serial.DataReceived(): 用于在串行设备上接收数据。
5. serial.DataAvailable(): 用于检查串行设备上是否有数据可用。
6. serial.OpenPort(): 用于打开指定名称的串行设备。
7. serial.ClosePort(): 用于关闭指定名称的串行设备。
8. serial.ParityError(): 用于检查在读取数据时是否出现了奇偶校验错误。
9. serial.ReadTimeout(): 用于检查在读取数据时是否超时。
10. serial.StopIteration(): 用于终止迭代器对象。
11. serial.DataReceived(bytes): 用于在读取数据时接收数据。
12. serial.RegisterApp(app_callable): 用于注册一个应用程序到串行设备上。
13. serial.UnregisterApp(app_callable): 用于从串行设备上注册的应用程序中移除指定的应用程序。
14. serial.Read(size): 用于从串行设备上读取指定数量的数据。
15. serial.Write(data[, offset[, count]]): 用于向串行设备上写入指定数量的数据。
16. serial.FlushInput(): 用于将输入缓冲区中的数据立即写入到串行设备上。
17. serial.FlushOutput(): 用于将输出缓冲区中的数据立即写入到串行设备上。
18. serial.SendBreak(): 用于发送一个破折号,以便等待接收方回复。
19. serial.SetWriteHandler(handler): 用于注册一个回调函数,以便在数据写入时进行处理。
20. serial.SetReadHandler(handler): 用于注册一个回调函数,以便在数据读取时进行处理。