Как узнать, какое устройство подключено к порту /dev/ttyUSB
Я использую два Wavecom 16-портовых модемов. Когда я подключаю модемы к своей системе, я могу перечислить все /dev/ttyUSB имена портов, но также я хочу знать, какой модем содержит порты 0 до 16 и какой из них содержит порты 17 до 32?
модемы могут быть подключены и удалены много раз за один день, поэтому я также хочу хранить журналы, когда модемы отключаются и подключаются снова.
любая идея, как это сделать, используя скрипт/узел c/C++/php.Яш ?
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.