串口通信实践:使用serial.tools.list_ports.comports()函数获取串口设备列表
发布时间:2024-01-13 17:47:29
串口通信是指通过串行接口进行数据传输的通信方式。在实践中,我们通常需要获取当前连接到计算机上的串口设备列表。Python中提供了serial库来实现串口通信,其中serial.tools.list_ports.comports()函数用于获取串口设备列表。
首先,我们需要安装pyserial库,可以使用以下命令来安装:
pip install pyserial
接下来,我们可以编写以下代码来获取串口设备列表:
import serial.tools.list_ports
# 获取串口设备列表
port_list = serial.tools.list_ports.comports()
# 打印串口设备信息
for port in port_list:
print(f'设备名: {port.name}, 说明: {port.description}, 供应商ID: {port.vid}, 产品ID: {port.pid}')
运行以上代码,将会输出当前连接到计算机上的串口设备信息,包括设备名、说明、供应商ID和产品ID。
下面是一个使用例子,我们使用串口通信来控制Arduino的LED灯亮灭。
首先,我们需要准备一个Arduino开发板和一个电阻。然后,将电阻连接到Arduino的D13引脚和GND引脚上,以控制LED灯的亮灭。
接下来,我们需要编写以下代码来发送控制信号给Arduino:
import serial.tools.list_ports
import time
# 获取串口设备列表
port_list = serial.tools.list_ports.comports()
# 查找Arduino设备
arduino_port = None
for port in port_list:
if 'Arduino' in port.description:
arduino_port = port.name
break
if arduino_port is None:
print('未找到Arduino设备')
else:
# 打开串口连接
ser = serial.Serial(arduino_port, baudrate=9600, timeout=1)
print(f'成功连接到Arduino设备 {arduino_port}')
# 控制LED灯亮灭
while True:
ser.write(b'on')
time.sleep(1)
ser.write(b'off')
time.sleep(1)
# 关闭串口连接
ser.close()
以上代码首先通过遍历串口设备列表,查找到Arduino设备。然后,通过serial.Serial()函数打开与Arduino的串口连接,设置波特率为9600,超时时间为1秒。
在无限循环中,我们连续向Arduino发送on和off信号,控制LED灯的亮灭。每个信号发送后,程序会等待1秒钟。
最后,我们通过ser.close()函数关闭与Arduino的串口连接。
在实际应用中,我们可以根据需要修改以上代码,实现与其他串口设备的通信和控制操作。
