¿Cómo sé cuál / dev / ttyS * es mi puerto serie?


Respuestas:


32

Creo que es este comando:

dmesg | grep tty

Ejecutar eso en mi propia caja de Linux (que solo tiene 1 puerto serie) produce una sola línea de salida ttyS0. Pruébelo usted mismo, verá lo que quiero decir.


¿Significa eso que después de ejecutar ese comando, si la respuesta es ... consola [tty0] habilitada ..., y ningún otro dispositivo está conectado a / dev / tty0 (perdón por la aparente tontería de la pregunta)?
Hektor

1
El único problema es que la salida de dmesg se puede borrar, por lo que si ejecuta esto demasiado tarde, no tiene suerte. Mirar / proc / tty / driver / serial parece la respuesta más sólida y luego verifica si hay interrupciones de rx que aumentan en el recuento a medida que escribes datos en ese puerto
Neil McGill

Lo siento, ¿qué debo hacer si no veo ningún resultado?
user3019105

Si actualmente se encuentra en un terminal sobre dicha línea serie, puede escribir ttypara obtener el nombre de su tty. Supongo que eso es lo que OP quiso decir, ya que no plantearon la pregunta como "¿qué puerto (s) serie (s) se están gettyejecutando?"
Thom Nichols

14

Vea qué UART se detectaron en /proc/tty/driver/serial. Una línea con uart:unknownmedios: nada detectado (y probablemente no 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

Si algo está conectado y maneja las líneas CTS, DSR o CD (estas son líneas de entrada), incluso puede estar bastante seguro de que realmente hay algo ... Lo mismo es cierto para el conteo de bytes de rx.


7

Si necesita hacer esto, leer la salida de dmesg mediante programación puede ser problemático, en su lugar, la carpeta / dev / serial / by-id tiene enlaces simbólicos que llevan el nombre de los datos identificables de su dispositivo y apuntan al / dev / tty * específico están conectados a

No estoy seguro de si esta es una regla especial de udev que es específica de la distribución, pero funciona bien en Ubuntu, avíseme si funciona.


5

ttyS0through 3corresponde a COM1through 4, respectivamente. Usualmente tienen los mismos recursos de hardware y no siempre son detectables, por lo que siempre existen.


gracias por la respuesta. Digamos que quiero decirle a Linux que quiero que ttyS0 se asigne al hardware de mi puerto serie, ¿qué debo hacer?
sivabudh

Lo usaría setserialpara asignar los recursos que ttyS0 usa a los de su puerto serie. linux.die.net/man/8/setserial Sin embargo, esto normalmente no es necesario, ya que cualquier cosa más allá de COM4 generalmente tiene suficiente hardware auxiliar para permitir que Linux lo detecte y agregue un dispositivo en serie según corresponda.
Ignacio Vazquez-Abrams

0

También existe el comando setserialque utiliza /proc/tty/driver/serialpara obtener sus datos.

# 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.