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
验证方法
在运行程序的计算机上,按以下步骤验证:
- 不连接任何串口设备时运行程序,应输出“未检测到任何串口设备”。
- 连接一个USB转串口适配器(如CH340或CP2102模块)后再次运行,程序应列出该设备对应的端口名称(Windows下为COMx,Linux下为/dev/ttyUSBx)及描述信息。
- 同时连接多个不同串口设备,确认程序能全部列出且数量正确。
判定标准:程序输出的端口名称与操作系统设备管理器中显示的端口号一致,且每个已连接设备均被正确枚举。
关键说明
port.device返回操作系统识别的端口路径,Windows为COMx格式,Linux/macOS为/dev/tty*格式。port.description包含设备厂商和型号信息,不同操作系统下格式略有差异。- 若程序在Linux下运行时提示权限不足,需将当前用户加入
dialout组或使用sudo执行。