如何知道哪个设备连接在哪个/dev/ttyUSB端口

12
我正在使用两个Wavecom 16端口调制解调器。当我将调制解调器连接到我的系统时,我能够列出所有的/dev/ttyUSB端口名称,但是我也想知道哪个调制解调器包含0到16号端口,以及哪个调制解调器包含17到32号端口?
这些调制解调器可能会在同一天内多次连接和断开连接,因此我还希望在调制解调器断开连接并重新连接时保留日志。
有没有办法使用c/c++/php脚本或node.js来实现这一点?

最好一次性设置udev规则来分配持久的tty端口名称,而不是每次都要查找它们,这样会更容易。 - Alex P.
1个回答

23
您可以从sys文件系统获取此信息。它可以在shell中轻松检查,然后编写一个执行相同操作的程序:
  1. cd /sys/devices
  2. 找到您的端口中第一个目录:find -name "ttyUSB0"。它可能会在类似于./pci0000:00/0000:00:1d.0/usb2/2-2/2-2.1/2-2.1:1.0/... 的路径中找到它们。
  3. pci*部分是USB控制器,有趣的部分是2-2.1,即USB设备。在该目录中有许多标识您的设备的文件:

    • serial:序列号。可能是您想要的。
    • idVendoridProduct:设备的USB标识符。

步骤1和2的简便方法如下:

  1. cd /sys/class/tty/
  2. readlink ttyUSBn将为您提供设备目录的完整路径。

需要注意的是sysfs的某些部分被视为API稳定,而其他部分则不是。有关更多信息,请参见官方sysfs规则


@Mayur- 不用谢!如果您认为这个回答解决了您的问题,请将其标记为正确并关闭。 - rodrigo
完成了..!! 使用udev库和你的答案达成了我的目标.. @_@ - Mayur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接