首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C应用程序检查USB设备ID和连接的端口

从C应用程序检查USB设备ID和连接的端口
EN

Stack Overflow用户
提问于 2020-06-17 17:52:01
回答 1查看 822关注 0票数 0

我需要能够从C程序中识别插入的USB设备(USB3和/或USB2)以及集线器中连接到哪个端口。我正在开发一个基于Yocto的嵌入式Linux系统。

我可以使用lsusb从命令行获取此信息。例如,我已经连接了两个USB摄像头,一个是USB3,另一个是USB2,如果我运行lsusb -t,我可以看到端口连接树:

代码语言:javascript
复制
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 4: Dev 6, If 0, Class=Miscellaneous Device, Driver=, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 3, If 2, Class=Human Interface Device, Driver=usbhid, 480M

有了这个,我很容易知道USB3摄像头连接到端口4,USB2摄像头连接到端口3(使用4端口集线器)。如果我只运行lsusb,就会得到ID和名称:

代码语言:javascript
复制
Bus 002 Device 006: ID 20f7:3001 USB3 Camera with CMOS sensor [MQ]
Bus 001 Device 003: ID 0403:de37 Future Technology Devices International, Ltd
Bus 001 Device 002: ID 04b4:650a Cypress Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 04b4:6508 Cypress Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

如何从C应用程序轻松地扫描集线器端口并查看哪个设备(名称或ID)连接到何处(集线器端口号)?

如果这个问题已经在某个地方得到了答案,但我找不到具体的答案,我很抱歉。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 23:45:06

如上所述,答案是libusb,我在this question中找到了完整的答案。

同样,libusb的API被定义为here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62426214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档