是否可以使用PyUSB通过USB端口获取USB设备

时间:2015-06-08 08:04:53

标签: python usb pyusb

我有很多与STM32 VCP相同的设备。 Windows 8.1为设备创建串行COM端口。如果我将一个设备连接到任何PC USB端口,Windows将绑定相同的COM端口。将第二个设备连接到其他USB端口后,它将创建具有不同串行COM编号的下一个COM端口。如果我拔下这些设备并按不同顺序连接,COM端口将在设备之间切换。这是一个问题,因为我每次都需要相同的订单COM端口(物理上)。 使用USBlyzer软件我可以看到每个物理USB端口的某些USB端口号是不同的:

enter image description here

所以我想通过这些设备按端口号访问(获取当前设备)。或列出所有设备并从设备对象获取此端口号?

在libusb文档中发现它有这样一种方法:

uint8_t libusb_get_port_number(libusb_device * dev)
获取设备连接的端口号。

link:http://libusb.sourceforge.net/api-1.0/group__dev.html

也许PyUSB也有它......

1 个答案:

答案 0 :(得分:1)

找到解决我问题的其他方法。使用Windows DeviceManager API从位置信息和设备的友好名称获取端口和集线器号(USB物理标识),其中包含COM端口号。解析此信息并获得串行通信的信息。

from infi.devicemanager import DeviceManager
dm = DeviceManager()
dm.root.rescan()

devices = dm.all_devices


for i in devices:
    try:
        print '{} : address: {}, bus: {}, location: {}'.format(i.friendly_name, i.address, i.bus_number, i.location)
    except Exception:
        pass