c++ - 如何将具有已知总线地址的 USB 设备映射到挂载路径?

标签 c++ linux macos usb libusb

我有一个应用程序正在使用 libusb用于检测连接的 USB 设备。这个库给了我 VID/PID 和总线以及连接设备的端口号。然而,我需要(在通过 PID/VID 识别设备后)通过 boost::asio::io_service 与设备对话。 ,为此我需要 /dev 中的设备路径目录。该设备通常被安装为类似 /dev/ttyUSBx 的东西.如何将总线和端口号与路径匹配?适用于 linux 和 macOS 的跨平台解决方案将是更可取的。如果没有跨平台解决方案,是否有两种操作系统的方法?

非常感谢!

最佳答案

不太直接但可行的方法是像这样使用 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++ 实现自动化,但这是可行的。

关于c++ - 如何将具有已知总线地址的 USB 设备映射到挂载路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39254961/

相关文章:

c++ - C++ 中的原始类型包装器既是 POD 又是可在表达式中构造的?

linux - 找不到命令。在远程主机上执行 bash 时

c - 如何使用 u-boot 为 ARM 处理器加载应用程序

linux - MP4Box:Concat 在 OSX 上工作,但在 Linux(Ubuntu)上不工作

c++ - 类的析构函数中的访问冲突读取位置

c++ - _CrtIsValidHeapPointer(block) 加载异常

c++ - 随机数生成器最小和最大边界,不起作用?

python - 如何将我的 epd python 作为我在 ubuntu 中的默认 python?

swift - Realm 服务器对象不正确的线程异常

c - 无法在 OSX 中附加 gdb - 无法读取未知的加载命令