Python 串口通讯
1. 介绍
串口通讯是计算机与外部设备之间进行数据交换的一种常见的方式。Python提供了丰富的库和模块来实现串口通讯的功能。本文将详细介绍Python中常用的串口通讯库,并给出一些示例代码和运行结果。
2. PySerial库
PySerial是Python中常用的串口通讯库,它能够在多个平台上与串口通信设备进行通信,包括Windows、Linux和Mac OS等。
2.1 安装PySerial库
要使用PySerial库,首先需要安装它。可以使用pip命令来安装PySerial,命令如下:
pip install pyserial
2.2 打开和关闭串口
使用PySerial库来打开串口非常简单。首先,我们需要导入serial
模块,然后使用serial.Serial()
方法来创建一个串口对象。下面是打开串口的示例代码:
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
上面的代码中,COM1
是串口的名称,9600
是波特率。
要关闭串口,可以使用ser.close()
方法,示例代码如下:
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
# 关闭串口
ser.close()
2.3 读取和写入数据
使用PySerial库可以轻松实现和串口设备的数据交换。要从串口中读取数据,可以使用ser.read()
方法。示例代码如下:
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
# 读取一个字节的数据
data = ser.read(1)
print('读取的数据:', data)
# 关闭串口
ser.close()
要向串口中写入数据,可以使用ser.write()
方法。示例代码如下:
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
# 写入一个字节的数据
ser.write(b'Hello')
# 关闭串口
ser.close()
2.4 设置串口参数
在PySerial库中,可以通过设置串口的参数来满足特定需求。例如,可以设置串口的波特率、数据位、停止位和校验位等。可以使用ser.baudrate
、ser.bytesize
、ser.stopbits
和ser.parity
等属性来实现。下面是设置串口参数的示例代码:
import serial
# 创建串口对象
ser = serial.Serial('COM1')
# 设置波特率
ser.baudrate = 9600
# 设置数据位
ser.bytesize = serial.EIGHTBITS
# 设置停止位
ser.stopbits = serial.STOPBITS_ONE
# 设置校验位
ser.parity = serial.PARITY_NONE
3. 示例代码
下面给出一些具体的示例代码,演示了如何使用PySerial库实现串口通讯。
3.1 读取数据
下面的示例代码演示了如何从串口中连续读取数据,并将读取到的数据打印出来。要运行以下示例代码,需要连接一个能够发送数据的串口设备。
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
try:
# 循环读取数据
while True:
data = ser.read() # 读取一个字节
print('读取的数据:', data)
except KeyboardInterrupt:
pass
# 关闭串口
ser.close()
3.2 写入数据
下面的示例代码演示了如何向串口中连续写入数据。要运行以下示例代码,需要连接一个能够接收数据的串口设备。
import serial
# 创建串口对象
ser = serial.Serial('COM1', 9600)
try:
# 循环写入数据
while True:
ser.write(b'Hello') # 写入一个字节
except KeyboardInterrupt:
pass
# 关闭串口
ser.close()
3.3 读取和写入数据
下面的示例代码演示了如何同时进行读取和写入数据的操作。要运行以下示例代码,需要连接两个串口设备,并将它们连在一起。
import serial
# 创建串口对象
ser1 = serial.Serial('COM1', 9600)
ser2 = serial.Serial('COM2', 9600)
try:
# 循环进行数据交换
while True:
# 从ser1读取数据
data1 = ser1.read()
print('从COM1读取的数据:', data1)
# 将数据写入ser2
ser2.write(data1)
# 从ser2读取数据
data2 = ser2.read()
print('从COM2读取的数据:', data2)
# 将数据写入ser1
ser1.write(data2)
except KeyboardInterrupt:
pass
# 关闭串口
ser1.close()
ser2.close()
4. 总结
通过PySerial库,我们可以方便地在Python中实现串口通讯功能。本文介绍了如何使用PySerial库来打开和关闭串口、读取和写入数据以及设置串口参数。同时,给出了一些示例代码来演示具体的操作。