我有很多与STM32 VCP相同的设备。 Windows 8.1为设备创建串行COM端口。如果我将一个设备连接到任何PC USB端口,Windows将绑定相同的COM端口。将第二个设备连接到其他USB端口后,它将创建具有不同串行COM编号的下一个COM端口。如果我拔下这些设备并按不同顺序连接,COM端口将在设备之间切换。这是一个问题,因为我每次都需要相同的订单COM端口(物理上)。 使用USBlyzer软件我可以看到每个物理USB端口的某些USB端口号是不同的:
所以我想通过这些设备按端口号访问(获取当前设备)。或列出所有设备并从设备对象获取此端口号?
在libusb文档中发现它有这样一种方法:
uint8_t libusb_get_port_number(libusb_device * dev)
获取设备连接的端口号。
link:http://libusb.sourceforge.net/api-1.0/group__dev.html
也许PyUSB也有它......
答案 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