Как узнать, какое устройство подключено к порту /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.