3. 串口列表扫描

串口列表扫描 学习卡片

任务说明

在串口调试或设备管理中,经常需要先确认当前系统连接了哪些串口设备。本案例要求编写一个Python程序,自动扫描并列出系统中所有可用的串口设备,包括端口名称和对应的设备描述信息。

实现方案

使用pyserial库提供的serial.tools.list_ports模块完成扫描。该模块跨平台支持Windows、Linux和macOS,能够枚举系统串口并返回端口信息。程序将遍历所有检测到的串口,输出端口设备名称和描述信息,并统计总数。

代码实现

import serial.tools.list_ports as list_ports

def scan_serial_ports():
    """扫描并列出系统中所有可用的串口设备"""
    ports = list_ports.comports()
    
    if not ports:
        print("未检测到任何串口设备")
        return
    
    print(f"检测到 {len(ports)} 个串口设备:\n")
    print(f"{'序号':<4} {'端口名称':<12} {'设备描述'}")
    print("-" * 60)
    
    for idx, port in enumerate(ports, 1):
        # port.device: 端口名称,如 COM3 或 /dev/ttyUSB0
        # port.description: 设备描述信息
        print(f"{idx:<4} {port.device:<12} {port.description}")

if __name__ == "__main__":
    scan_serial_ports()

运行方式

首先安装依赖:

pip install pyserial

然后运行程序:

python scan_ports.py

验证方法

在运行程序的计算机上,按以下步骤验证:

  1. 不连接任何串口设备时运行程序,应输出“未检测到任何串口设备”。
  2. 连接一个USB转串口适配器(如CH340或CP2102模块)后再次运行,程序应列出该设备对应的端口名称(Windows下为COMx,Linux下为/dev/ttyUSBx)及描述信息。
  3. 同时连接多个不同串口设备,确认程序能全部列出且数量正确。

判定标准:程序输出的端口名称与操作系统设备管理器中显示的端口号一致,且每个已连接设备均被正确枚举。

串口列表扫描流程 系统串口设备 USB转串口适配器 主板原生串口 蓝牙虚拟串口 list_ports.comports() 枚举所有串口 返回ListPortInfo列表 遍历并输出 port.device port.description 统计总数 预期输出示例(Windows系统,连接2个USB转串口设备): 检测到 2 个串口设备: 序号 端口名称 设备描述 1 COM3 USB-SERIAL CH340 (COM3) 2 COM5 USB Serial Port (COM5)

关键说明

  • port.device返回操作系统识别的端口路径,Windows为COMx格式,Linux/macOS为/dev/tty*格式。
  • port.description包含设备厂商和型号信息,不同操作系统下格式略有差异。
  • 若程序在Linux下运行时提示权限不足,需将当前用户加入dialout组或使用sudo执行。