pyserial 使用 serial.tools.list_ports.grep() 找不到设备

Posted

技术标签:

【中文标题】pyserial 使用 serial.tools.list_ports.grep() 找不到设备【英文标题】:pyserial can't find device using serial.tools.list_ports.grep() 【发布时间】:2018-07-15 05:41:54 【问题描述】:

我有一个 USB 设备(基于 STM32F4 微控制器),在 USB 描述符中设置了 VID、PID 和产品描述。

VID = 0x0483
PID = 0x5740
Product Description = "ACME thing-a-me-bob"

在 macOS 上,使用 serial.tools.list_ports.grep() 非常适合定位我的设备。例如p = grep("thing-a-me-bob") 或 `p = grep("ACME")

但是在 Windows (Win 10) 上,grep 找不到我的设备。如果我使用grep(""),那么它会列出我的设备(以及所有其他设备),但它只是显示:

COM3 - USB Serial Device (COM3)

该设备仅使用 Win 10 附带的标准 Microsoft CDC 驱动程序。但我原以为简单/标准认为产品描述字符串将从 USB 设备读取并使用(就像标准 macOS 驱动程序一样确实)。

有没有办法让serial.tools.list_ports.grep() 与标准 Windows 驱动程序一起工作?

注意:grep("0483:5740") 确实找到了我的设备,但这是一组合理常用的 VID:PID 值,由 ST Micro 提供。

【问题讨论】:

【参考方案1】:

不确定grep() 的工作原理,但您可以这样连接。

if sys.platform == 'win32':
    ports = list(list_ports.comports())
    for port in ports:
        # query each port and connect if description is found
        if 'ACME thing-a-me-bob' in port.description:
            s = serial.Serial(port.device)

【讨论】:

以上是关于pyserial 使用 serial.tools.list_ports.grep() 找不到设备的主要内容,如果未能解决你的问题,请参考以下文章

pySerial list_port准确性

python的pyserial读取串口占用状态?

python的pyserial模块

python串口操作

pyserial在检测list_ports速度过慢的解决方案

如何列出所有的com-ports?