Eu acho que é esse comando:
dmesg | grep tty
Executar isso em minha própria caixa Linux (que possui apenas 1 porta Serial) produz uma única linha de saída ttyS0. Tente você mesmo, você verá o que quero dizer.
Eu tenho um laptop que tem apenas uma porta serial.
Eu entrei:
/dev
diretório, e eu encontrei:
ttyS0
ttyS1
ttyS2
ttyS3
Como eu sei qual desses "ttyS" se refere à minha porta serial?
Veja quais UARTs foram detectados em /proc/tty/driver/serial
. Uma linha com uart:unknown
significa: nada detectado (e provavelmente não existente).
# 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
Se algo estiver conectado e direcionando as linhas CTS, DSR ou CD (estas são linhas de entrada), você pode até ter certeza de que realmente existe algo ... O mesmo é verdadeiro para a contagem de bytes de rx.
Se você precisar fazer isso programaticamente, ler a saída do dmesg pode ser problemático, em vez disso, a pasta / dev / serial / by-id possui links sym que são nomeados após dados identificáveis do seu dispositivo e apontam para o específico / dev / tty * eles estão conectados a.
Não tenho certeza se esta é uma regra especial do udev específica para distribuição, mas funciona bem no Ubuntu, me avise se funciona.
ttyS0
a 3
correspondem a COM1
a 4
, respectivamente. Eles geralmente têm os mesmos recursos de hardware e nem sempre são detectáveis, então eles sempre existem.
Existe também o comando setserial
, que usa /proc/tty/driver/serial
para obter seus dados.
# 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
Tags serial-port linux