我有一个使用libusb
来检测连接的USB设备的应用程序。该库为我提供了VID / PID和总线以及所连接设备的端口号。然而,我需要(在通过PID / VID识别设备之后)通过boost::asio::io_service
与设备通信,为此我需要/dev
目录中的设备路径。该设备通常以/dev/ttyUSBx
之类的方式安装。如何将总线和端口号与路径匹配?在Linux和macOS上运行的跨平台解决方案将是更可取的。如果没有跨平台解决方案,那么两种操作系统都有办法吗?
非常感谢!
答案 0 :(得分:0)
不那么直接但可行的方法是使用这样的sysfs:
通过浏览/sys/class/tty/ttyUSBx
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.0
和cat uevent
。
这将包含PRODUCT = xxxxxxxx
显然,使用C ++实现自动化需要一些工作,但它是可行的。