pyserial无法使用serial.tools.list_ports.grep()

时间:2018-07-15 05:41:55

标签: python windows pyserial

我有一个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")确实找到了我的设备,但这是ST Micro提供的一组合理使用的VID:PID值。

1 个答案:

答案 0 :(得分:0)

不确定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)