确定相同USB设备的唯一设备ID(例如序列号)

时间:2016-08-24 19:39:05

标签: python windows winapi gps pywin32

我有多个相同的GPS logging devices我可以使用GPSBabel在命令行中传输跟踪数据。

问题:使用Python 2.7,Windows 7和这些GPS日志记录设备,如何才能唯一且重复地识别每个相同的设备?一个很好的例子就是一个序列号,它是唯一的每个相同的设备(并在设备上实际打印)。

我正在使用Python 2.7和Windows 7(由于驱动程序,必须是Windows而不是Linux)。

这是我到目前为止所尝试的内容:

当两个设备插入USB端口时,设备管理器会为端口(COM& LPT)显示以下内容。 (USB设备安装为USB磁盘。)

enter image description here

(港口8和10)

在端口10上选择设备的属性 - 详细信息会为我提供一个名为 ContainerID 的唯一ID,但我无法以编程方式为多个相同的设备查找任何唯一的ID,如序列号。

enter image description here

使用this question中的代码,

import win32com.client

wmi = win32com.client.GetObject ("winmgmts:")
for usb in wmi.InstancesOf ("Win32_SerialPort"):
    if usb.Name.startswith('GPS'):
        print usb.DeviceID, usb.Name, usb.PNPDeviceID

我收到了这个回复:

COM10 GPS USB Serial Interface Driver (COM10) USB\VID_0E8D&PID_3329\6&21C2E9BE&0&1
COM8 GPS USB Serial Interface Driver (COM8) USB\VID_0E8D&PID_3329\6&25E9E978&0&3

(不唯一!尾随ID 6&21C2E9BE&0&1实际上与端口有关,而不是设备。我可以通过连接相同的设备运行代码,或连接2个设备来测试。)

我可以在设备实例路径

下的设备管理器/详细信息视图中找到此编号

enter image description here

我已经浏览了Win32 API documentation Win32_SerialPort和其他一些选项。我找不到任何返回任何唯一的API类,比如序列号。

enter image description here

0 个答案:

没有答案