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

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

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

Любая идея, как это сделать, используя c/С++/php script/node.js?

Ответ 1

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

  • cd /sys/devices
  • Найдите каталог первого из ваших портов: find -name "ttyUSB0". Вероятно, они найдут их как-то вроде ./pci0000:00/0000:00:1d.0/usb2/2-2/2-2.1/2-2.1:1.0/...
  • Часть pci* - это USB-контроллер. Интересным является бит 2-2.1, который является устройством USB. В этом каталоге есть много файлов, которые идентифицируют ваше устройство:

    • serial: серийный номер. Возможно, что вы хотите.
    • idVendor и idProduct: идентификатор USB устройства.

Легко альтернативно для шагов 1 и 2:

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

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