Как узнать, какое устройство подключено к порту /dev/ttyUSB

Я использую два Wavecom 16-портовых модемов. Когда я подключаю модемы к своей системе, я могу перечислить все /dev/ttyUSB имена портов, но также я хочу знать, какой модем содержит порты 0 до 16 и какой из них содержит порты 17 до 32?

модемы могут быть подключены и удалены много раз за один день, поэтому я также хочу хранить журналы, когда модемы отключаются и подключаются снова.

любая идея, как это сделать, используя скрипт/узел c/C++/php.Яш ?

1 ответов


вы можете получить эту информацию из sys файловой системы. Легко проверить из оболочки, а затем сделать программу, которая делает то же самое:

  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: серийный номер. Наверное, то, что ты хочешь.
    • idVendor и idProduct: идентификатор USB устройства.

простой альтернативой шагам 1 и 2 является:

  1. cd /sys/class/tty/
  2. readlink ttyUSBn даст вам полный путь к каталогу устройства.

в качестве сноски, обратите внимание, что некоторые части sysfs считаются API стабильными а некоторые части-нет. Для получения дополнительной информации см. официальные правила sysfs.