Python与串口通讯
1. 引言
串口通讯是一种常见的用于设备之间传输数据的方式。在许多应用中,我们需要通过串口与外部设备进行通讯,例如与传感器、单片机等交互。Python作为一种简单易用的脚本语言,提供了许多库和工具可以帮助我们在程序中实现串口通讯。本文将介绍如何使用Python进行串口通讯,并给出5个示例代码及运行结果。
2. Python中的串口通讯库
Python中有多个库用于串口通讯,其中较为常用的有serial
库和pyserial
库。这两个库都支持跨平台,并提供了丰富的API用于控制串口设备。本文主要介绍pyserial
库的使用,因为它在大多数情况下更受欢迎。
2.1 安装pyserial库
在使用pyserial
库前,需要先安装该库。可以通过pip命令来进行安装。打开终端或命令提示符,输入以下命令:
pip install pyserial
2.2 pyserial库的基本用法
pyserial
库提供了Serial
类来实现串口通讯。下面是Serial
类的一些常用方法:
open()
:打开串口。write(data)
:向串口写入数据。read(size)
:从串口读取指定大小的数据。close()
:关闭串口。
在使用pyserial
库前,需要首先导入该库:
import serial
3. 示例代码及运行结果
下面给出5个示例代码及运行结果,分别演示了使用Python与串口进行数据交互的不同场景。
3.1 示例1:发送数据到串口
下面的代码演示了如何向串口发送数据:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600) # 打开串口
data = 'Hello, serial!' # 待发送的数据
ser.write(data.encode()) # 发送数据
ser.close() # 关闭串口
运行结果:无报错信息。
3.2 示例2:从串口接收数据
下面的代码演示了如何从串口接收数据并打印输出:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600) # 打开串口
data = ser.read(10) # 从串口读取10个字节的数据
print('Received:', data.decode()) # 打印接收到的数据
ser.close() # 关闭串口
运行结果:无报错信息。如果串口中有数据输入,将被读取并打印输出。
3.3 示例3:连续读取串口数据
下面的代码演示了如何实现连续读取串口数据,并将数据保存到文件中:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600) # 打开串口
file = open('serial_data.txt', 'w') # 打开文件
while True:
data = ser.readline() # 读取一行数据
file.write(data.decode()) # 将数据写入文件
file.flush() # 刷新文件缓冲区
file.close() # 关闭文件
ser.close() # 关闭串口
运行结果:无报错信息。通过该代码可以实现将串口接收到的数据连续写入到文件serial_data.txt
中。
3.4 示例4:设置串口参数
下面的代码演示了如何设置串口的通信参数,例如波特率、数据位、停止位、校验位等:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 打开串口,设置超时时间为1秒
ser.baudrate = 115200 # 设置波特率为115200
ser.bytesize = serial.EIGHTBITS # 设置数据位为8位
ser.stopbits = serial.STOPBITS_ONE # 设置停止位为1位
ser.parity = serial.PARITY_NONE # 设置校验位为无校验
ser.close() # 关闭串口
运行结果:无报错信息。通过该代码可以设置串口的通信参数。
3.5 示例5:获取可用串口列表
下面的代码演示了如何获取可用串口列表:
import serial.tools.list_ports
ports = serial.tools.list_ports.comports() # 获取可用串口列表
for port in ports:
print(port.device) # 打印串口名称
运行结果:无报错信息。通过该代码可以获取当前系统中可用的串口列表,并打印输出串口名称。
4. 总结
本文介绍了如何使用Python进行串口通讯,并给出了5个示例代码及运行结果。通过这些示例代码,我们了解了Python如何向串口发送数据、从串口接收数据,以及如何设置串口参数和获取串口列表。