Linux 如何通过IDP供应商和IDP产品获得USB设备路径?

Linux 如何通过IDP供应商和IDP产品获得USB设备路径?,linux,usb,Linux,Usb,如何根据其idVedor和idProduct获取USB设备的路径,如/dev/ttyACM0或/dev/ttyUSB0?后续函数需要此路径,而不是其idVendor和idProduct 注意:使用C/C++代码,而不是命令 我使用的是Qt和CentOS。您可以使用libusbp,一个USB抽象库来实现这一点。看。这肯定适用于USB CDC ACM设备(例如/dev/ttyACM0),但我不确定它是否适用于使用不同驱动程序的设备。如果您尝试过,请在此处发表评论,说明它是否有效。取决于设备。这是什么

如何根据其idVedor和idProduct获取USB设备的路径,如/dev/ttyACM0或/dev/ttyUSB0?后续函数需要此路径,而不是其idVendor和idProduct

注意:使用C/C++代码,而不是命令


我使用的是Qt和CentOS。

您可以使用libusbp,一个USB抽象库来实现这一点。看。这肯定适用于USB CDC ACM设备(例如
/dev/ttyACM0
),但我不确定它是否适用于使用不同驱动程序的设备。如果您尝试过,请在此处发表评论,说明它是否有效。

取决于设备。这是什么样的设备?有些USB设备没有设备节点,有些设备有几个。它是Arduino设备。在我的计算机中,它显示/dev/ttyACM。谢谢David。我在以下链接中找到了另一个解决方案:。此解决方案直接使用libusb。我将尝试这两种方法。1)libusb::libusb_get_port_path(),libusb 1.0.21。结果不是我所期望的。它不是像/dev/ttyACM0那样的字符串。相反,它仍然与libusb_get_port_numbers()的结果相似。我没有找到更多关于如何使用libusb_get_port_path()以及如何解析其参数的示例。从中,我发现libusb_get_port_path()是libusb_get_port_number()的贬值版本。2)libusbp::find_device_with_vid_pid(),libusbp 1.0.1因为我使用的是qmake4.8.6,但libusbp需要c++11,我必须在.pro文件中添加
QMAKE_cxflags+=-std=c++11
。但在此之后,出现了另一个错误:[main.o]错误1。我检查了Qt“compileoutput”,它说“cc1plus:error:无法识别的命令行选项”-std=c++11“。我使用的是g++4.4.7,但至少g++4.7支持c++11。似乎我必须升级我的g++。在我的测试程序中,接口_编号必须是0或1而不是2,复合值为真或假都可以。下面是我的测试结果:
/dev/ttyACM0