26

У меня есть ноутбук, который имеет только один последовательный порт.

Я вошел в:

/dev 

каталог, и я нашел:

ttyS0
ttyS1
ttyS2
ttyS3

Как мне узнать, какой из этих "ttyS" относится к моему последовательному порту?

5 ответов5

22

Я думаю, что это команда:

dmesg | grep tty

Запуск этого на моем собственном Linux-боксе (который имеет только 1 последовательный порт) выдает одну строку вывода ttyS0. Попробуйте сами, вы поймете, что я имею в виду.

8

Посмотрите, какие UART были обнаружены в /proc/tty/driver/serial . Строка с uart:unknown означает, что ничего не обнаружено (и, вероятно, не существует).

# cat /proc/tty/driver/serial 
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

Если что-то подключено и управляет линиями CTS, DSR или CD (это входные линии), вы даже можете быть уверены, что на самом деле что-то есть ... То же самое верно для счетчика rx-byte-count.

6

Если вам нужно сделать это программно, чтение вывода из dmesg может быть проблематичным, вместо этого папка /dev /serial /by-id имеет ссылки на символы, которые названы в честь идентифицируемых данных вашего устройства и указывают на конкретные /dev /tty * они связаны с.

Я не уверен, является ли это каким-то особым правилом udev для конкретного дистрибутива, но оно хорошо работает в Ubuntu, дайте мне знать, если оно работает.

3

ttyS0 по 3 соответствуют COM1 до 4 соответственно. Они обычно имеют одинаковые аппаратные ресурсы и не всегда обнаруживаются, поэтому они всегда существуют.

0

Существует также команда setserial которая использует /proc/tty/driver/serial для получения своих данных.

# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .