linux / libusb获取usb设备路径
我使用libusb来枚举一些usb设备.现在我想获得“设备路径”.我认为这不是usb device-path,因为我没有成功使用谷歌. 如果我用linux连接usb设备,我会在dmesg中收到一条消息,这里有一些带有usb温度传感器的“设备路径”的例子(类似于this): 直接到usb端口: 直接到另一个港口: 到第一个使用端口的USB集线器: 到同一USB集线器上的另一个端口: 现在用于以前使用的usb集线器上的usb集线器: 长话短说: 我需要这个来识别这些usb温度计中的多个,因为它们没有唯一的序列号,有时它们只是在运行时“重新连接”,因此它们会得到不同的usb id.所以我认为识别它们的唯一方法是通过物理位置. 谢谢您的帮助, 最好的祝福 -编辑- 目前我使用以下代码来搜索我的USB设备: usb_dev_handle *find_lvr_winusb() { struct usb_bus *bus; struct usb_device *dev; for (bus = usb_busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { if (dev->descriptor.idVendor == VENDOR_ID && dev->descriptor.idProduct == PRODUCT_ID ) { usb_dev_handle *handle; if(debug) { printf("lvr_winusb with Vendor Id: %x and Product Id: %x found.n",VENDOR_ID,PRODUCT_ID); printf("INFO: %dn",dev->bus->location); printf("INFO: %d %sn",bus->location,bus->dirname); } if (!(handle = usb_open(dev))) { printf("Could not open USB devicen"); return NULL; } return handle; } } } return NULL; } 但是使用此代码我无法获得唯一的物理位置ID. bus->位置返回一个整数(bus-> dirname包含相同的,但作为字符串),这不是唯一的.我知道usb有一个层次结构,在dmesg中我可以看到这个层次结构的路径. 使用libusb我只能得到总线ID(?)和一些设备ID.但他们没有帮助我,因为我需要识别这些温度传感器中的两个或更多个.当温度传感器复位连接(每5到60秒)并且总线ID不唯一时,device-id总是会改变.不幸的是,温度传感器没有唯一的序列号. 所以我认为物理路径是识别设备的唯一方法. 最好的祝福 解决方法从libusb 1.0.12开始,他们引入了libusb_get_port_path(),并在1.0.16中将其替换为 libusb_get_port_numbers(),它允许您查询总线拓扑.(编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |