如何将具有已知总线地址的USB设备映射到已安装的路径?

时间:2016-08-31 16:45:02

标签: c++ linux macos usb libusb

我有一个使用libusb来检测连接的USB设备的应用程序。该库为我提供了VID / PID和总线以及所连接设备的端口号。然而,我需要(在通过PID / VID识别设备之后)通过boost::asio::io_service与设备通信,为此我需要/dev目录中的设备路径。该设备通常以/dev/ttyUSBx之类的方式安装。如何将总线和端口号与路径匹配?在Linux和macOS上运行的跨平台解决方案将是更可取的。如果没有跨平台解决方案,那么两种操作系统都有办法吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

不那么直接但可行的方法是使用这样的sysfs: 通过浏览/sys/class/tty/ttyUSBx

找到您要查找的USB设备

cd到您选择的设备目录中。

执行realpath .

这将显示如下内容:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB0/tty/ttyUSB0

cd/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0cat uevent。 这将包含PRODUCT = xxxxxxxx

下的USB VID / PID

显然,使用C ++实现自动化需要一些工作,但它是可行的。