如何使用 c 获取总线和开发信息
Posted
技术标签:
【中文标题】如何使用 c 获取总线和开发信息【英文标题】:how to get bus and dev info using c 【发布时间】:2014-02-18 09:18:08 【问题描述】:我想使用 C 语言读取连接到 PC 的 USB 串行设备的总线和开发。我怎样才能得到它,请帮助我...示例我想从下面读取 Trust International USB 设备总线信息和设备信息。
lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 014: ID 15d9:0a4f Trust International B.V.
Bus 001 Device 009: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard
Bus 001 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
如何使用C语言?
【问题讨论】:
希望对您有所帮助。github.com/gregkh/lsusb 【参考方案1】:在标准 C 中没有办法做到这一点,因为标准 C 没有提到 USB。
您需要使用特定于平台的代码,这使其非常适合将其包装到库中。
这样一个非常常用的库是libusb。是这样描述的:
libusb 是一个 C 库,可让应用程序轻松访问许多不同操作系统上的 USB 设备。
【讨论】:
【参考方案2】:您可以从 popen() 方法执行 lsusb,然后将 fgets() 作为字符数组执行 lsusb 报告的各个行。
然后使用 sscanf() 或您选择的任何其他字符串操作函数从每个数组中提取总线和设备 ID,因为总线和设备 ID 的位置始终是固定的。
【讨论】:
以上是关于如何使用 c 获取总线和开发信息的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Windows 服务总线订阅中获取未处理的消息计数?
如何获取事件总线指标 Vertx 与 Prometheus 集成