Python中的串口通信库pyserial(基础)

文章目录

    • 概要
    • 基础知识
      • 1初始化串口
      • 2. 写入数据
      • 3. 读取数据
      • 4. 关闭串口
      • 5. 设置和获取串口参数
      • 6. 清除缓冲区
    • 小结

概要

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相关,python,开发语言)