【发布时间】:2011-05-10 17:29:35
【问题描述】:
我们正在制作一个设备,它有 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,依此类推?这样我就知道哪个设备连接到哪个端口了。
请帮忙.....:)
提前致谢。 努宾斯坦利
【问题讨论】:
-
让我看看我是否做对了。您要做的是将 /dev/ttyUSBx 节点与主机系统上的 /proc/bus/usb 设备相匹配?或者您是否正在尝试识别连接到 USB 串行适配器的串行设备?
-
stat'ing /dev/
只会为您提供设备的主要和次要版本。这些与供应商/产品/设备 ID 没有任何关联。 -
所以你有一个带有一些usbserial IC的设备(例如来自FTDI),你需要识别它吗?你有没有在usbserial芯片中设置供应商/产品ID和序列号?
标签: c