如何使用C查找Linux中哪个设备连接到USB串口?

sta*_*vos 9 c

我们正在制造一个设备,它有8个串口.它运行在Monta Vista Pro5内核上.我们在C工作.

假设:设备连接到ttyUSB0,ttyUSB1和ttyUSB2.下一个设备连接到ttyUSB3,另一个设备连接到ttyUSB4.我怎么知道哪个设备连接到哪个端口?即ttyUSB0或ttyUSB1等.有没有办法直接查询设备并找到它所连接的端口.或者,在C中,打开ttyUSB0,以某种方式查询它并得到一些回复,它是什么设备?

一个相当复杂的方法:做一个统计,比如/ dev/ttyUSB0.获取设备编号.并在/ proc/bus/usb/devices中搜索并查找供应商ID或识别设备的内容.

或者:有没有办法为一个设备保留ttyUSB0,ttyUSB1和ttyUSB2,为其他设备保留ttyUSB3,等等什么时候插入?这样我就知道哪个设备连接到哪个端口.

请帮忙..... :)

提前致谢.努宾斯坦利

rsm*_*thy 9

您可以使用udev规则仅为您的设备创建符号链接:

(这些规则在/etc/udev/rules.d/-name.rules中 - 请查看您的udev文档

KERNEL=="ttyUSB*", ATTRS{idVendor}=="<vendorid>", MODE="0666", SYMLINK+="mydev"
Run Code Online (Sandbox Code Playgroud)

您必须为设备指定供应商ID和/或产品ID.然后,在上面的示例中,这些设备将在/ dev/mydev中可用.

您还可以使用各种其他参数来创建适当的唯一符号链接供您使用.检查udev手册页.


Jam*_*mes 0

最好的方法是使用libusb,但如果这不能为您提供有关设备的足够信息(可能不会),那么您将不得不使用/proc内核提供的文件系统,特别是/proc/bus/usb/

请阅读以下信息/proc/bus/usb: 特别是/proc/bus/usb/devices. 但正如你所说,这有点古怪!