作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试获取 USB 设备的设备节点(例如/dev/sdb)。
我想知道是否有任何 libusb API 可以为我提供与 USB 设备关联的特定设备节点。
如果没有 API,是否还有其他替代方法可以实现此目的?对此的任何见解都会证明非常有帮助。
提前致谢。
最佳答案
在 Linux 上,探索连接的 USB 设备及其属性的最简单方法是简单地扫描目录 /sys/bus/usb/devices
。这个虚拟目录列出了所有连接的设备。每个条目都有非常简单的结构,并且对于每个连接了从设备的设备(比如通过集线器连接的设备)都有虚拟子目录。还有一个好处是,通常您无需成为 root 用户即可读取大量设备属性,例如制造商或序列号。
这个接口(interface)的另一个非常好的特性是它是半稳定的。也就是说,每个设备都有唯一的 ID,如 a-b.c.d.e:x.y
(a - 总线编号,b,c - 根集线器,下一个集线器,端口等,x,y - 功能,子功能),并且如果一个设备连接或断开连接,此设备枚举不会突然改变所有设备。
您还可以轻松地将这些设备 ID 映射到 libusb 样式的总线/设备编号(但这些并不稳定)。
不幸的是,这是特定于 Linux 的,似乎不适用于其他操作系统。我希望 libusb 已经实现了类似的东西,但它没有。无论如何,祝你好运!
关于linux - 有没有办法使用 libusb API 获取 USB 设备的设备节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132714/
我是一名优秀的程序员,十分优秀!