插件窝 干货文章 Python中串口通信库pyserial基础知识

Python中串口通信库pyserial基础知识

class serial 串口 数据 308    来源:    2024-10-28

概要

pyserial是一个Python库,它提供了与串口通信相关的功能。它可以让我们在Python程序中直接与串口设备进行通信,如读取和写入串口数据。pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。

pip install pyserial

基础知识

1初始化串口

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是串口号

参数解释:

  • port:串口号,Windows上通常以COM开头,Linux上通常以/dev/tty开头。
  • baudrate:波特率,数据传输的速率。
  • timeout:读操作的超时时间,单位秒。如果在指定时间内没有读取到数据,将返回空。

2. 写入数据

ser.write(b'Hello, Serial Port!')  # 向串口写入数据

**解释:**write方法用于向串口发送数据。注意,发送的数据必须是字节类型(bytes),因此字符串前需要加b前缀

3. 读取数据

data = ser.read(10)  # 读取10个字节的数据
line = ser.readline()  # 读取一行数据,以换行符结束

解释:readline方法用于读取一行数据,直到遇到换行符(\n)。如果没有设置超时,且没有接收到换行符,则会一直等待。

4. 关闭串口

ser.close()  # 关闭串口连接

解释:close方法用于关闭串口连接,释放系统资源。

5. 设置和获取串口参数

# 设置波特率  
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对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。

6. 清除缓冲区

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): 用于注册一个回调函数,以便在数据读取时进行处理。

总结

到此这篇关于Python中串口通信库pyserial基础知识的文章就介绍到这了,更多相关Python串口通信库pyserial内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!