К сожалению, последовательные порты не являются PlugNPlay, поэтому ядро не знает, какое устройство было подключено. После прочтения руководства HowTo у меня есть рабочая идея.
/dev/
Каталог UNIX как операционки содержит файлы , указанные в ttySn (с п быть числом) . Большинство из них не соответствует существующим устройствам. Чтобы найти, какие из них делают, введите команду:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
Выше приведен пример вывода моего ПК. Вы можете увидеть инициализацию нескольких последовательных портов:
ttyS0
, ttyS1
, ttyS4
, ttyS5
.
Один из них будет иметь положительное напряжение на подключенном устройстве. Таким образом, сравнивая содержимое файла /proc/tty/driver/serial
с подключенным устройством и без него, мы можем легко найти ttyS, связанный с нашим устройством. Итак, теперь сделайте:
$ sudo cat /proc/tty/driver/serial> /tmp/1
(не) подключить устройство
$ sudo cat /proc/tty/driver/serial> /tmp/2
Затем проверьте разницу между двумя файлами. Ниже приведен вывод моего ПК:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
Сравнивая три числа с выводом dmesg, мы можем определить, какой из них является портом:
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Следовательно, наше устройство /dev/ttyS0
, миссия выполнена!