欢迎访问宙启技术站
智能推送

串口通信实践:使用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发送onoff信号,控制LED灯的亮灭。每个信号发送后,程序会等待1秒钟。

最后,我们通过ser.close()函数关闭与Arduino的串口连接。

在实际应用中,我们可以根据需要修改以上代码,实现与其他串口设备的通信和控制操作。