Woher weiß ich, welche / dev / ttyS * meine serielle Schnittstelle ist?

33

Ich habe einen Laptop, der nur eine serielle Schnittstelle hat.

Ich ging in:

/dev 

Verzeichnis, und ich fand:

ttyS0
ttyS1
ttyS2
ttyS3

Woher weiß ich, welcher dieser "ttyS" sich auf meine serielle Schnittstelle bezieht?

sivabudh
quelle

Antworten:

32

Ich denke, es ist dieser Befehl:

dmesg | grep tty

Wenn ich das auf meiner eigenen Linux-Box (die nur 1 seriellen Port hat) laufen lasse, entsteht eine einzige ttyS0-Ausgabezeile. Probieren Sie es selbst aus, Sie werden sehen, was ich meine.

sivabudh
quelle
Bedeutet das, dass nach dem Ausführen dieses Befehls, wenn die Antwort ... console [tty0] enabled ... ist und kein anderes Gerät mit / dev / tty0 verbunden ist (entschuldigen Sie die offensichtliche Dummheit der Frage)?
Hektor
1
Das einzige Problem ist, dass die dmesg-Ausgabe gelöscht werden kann. Wenn Sie dies also zu spät ausführen, haben Sie kein Glück. Ein Blick auf / proc / tty / driver / serial scheint die robustere Antwort zu sein. Überprüfen Sie dann, ob die Anzahl der Empfangsinterrupts steigt, wenn Sie Daten an diesen Port schreiben
Neil McGill,
Entschuldigung, was muss ich tun, wenn ich keine Ausgabe sehe?
user3019105
Wenn Sie sich gerade über diese serielle Leitung in einem Terminal befinden, können Sie einfach ttyden Namen Ihrer Tty eingeben. Ich nehme an, dass dies die Bedeutung von OP ist, da sie nicht die Frage gestellt haben, welche seriellen Ports gettyausgeführt werden.
Thom Nichols
14

Sehen Sie, in welchen UARTs welche gefunden wurden /proc/tty/driver/serial. Eine Zeile mit uart:unknownbedeutet: nichts erkannt (und wahrscheinlich nicht vorhanden).

# 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

Wenn etwas angeschlossen ist und die Leitungen CTS, DSR oder CD ansteuert (das sind Eingangsleitungen), können Sie sogar ziemlich sicher sein, dass tatsächlich etwas vorhanden ist ... Gleiches gilt für die Anzahl der empfangenen Bytes.

Robert Siemer
quelle
7

Wenn Sie dies programmgesteuert tun müssen, kann das Lesen der Ausgabe von dmesg problematisch sein. Stattdessen enthält der Ordner / dev / serial / by-id sym-Links, die nach identifizierbaren Daten Ihres Geräts benannt sind und auf das spezifische / dev / tty * verweisen sind verbunden mit.

Ich bin mir nicht sicher, ob es sich um eine spezielle udev-Regel handelt, die verteilungsspezifisch ist, aber in Ubuntu funktioniert sie gut. Lassen Sie mich wissen, ob sie funktioniert.

santileortiz
quelle
5

ttyS0durch 3entsprechen jeweils COM1durch 4. Sie haben in der Regel die gleichen Hardwareressourcen und sind nicht immer erkennbar, sodass sie immer vorhanden sind.

Ignacio Vazquez-Abrams
quelle
Danke für die Antwort. Angenommen, ich möchte Linux mitteilen, dass ttyS0 meiner seriellen Port-Hardware zugeordnet werden soll. Was muss ich tun?
Sivabudh
Sie würden verwenden setserial, um die Ressourcen, die ttyS0 verwendet, der Ihrer seriellen Schnittstelle zuzuordnen. linux.die.net/man/8/setserial Dies ist jedoch normalerweise nicht erforderlich, da über COM4 hinaus in der Regel genügend Hilfshardware vorhanden ist, damit Linux es erkennen und ein serielles Gerät hinzufügen kann.
Ignacio Vazquez-Abrams
0

Es gibt auch den Befehl setserial, mit /proc/tty/driver/serialdem die Daten abgerufen werden.

# 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
Daniël W. Crompton
quelle