2010-04-14 21:10:13 +0000 2010-04-14 21:10:13 +0000
33
33

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

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, welches dieser “ttyS” sich auf meine serielle Schnittstelle bezieht?

Antworten (5)

34
34
34
2010-04-14 21:24:54 +0000

Ich glaube, es ist dieser Befehl:

dmesg | grep tty

Wenn ich das auf meinem eigenen Linux-Rechner ausführe (der nur eine serielle Schnittstelle hat), erzeuge ich eine einzige ttyS0-Ausgabezeile. Probieren Sie es selbst aus, Sie werden sehen, was ich meine.

14
14
14
2016-06-30 15:45:47 +0000

Sehen Sie, welche UARTs in /proc/tty/driver/serial erkannt wurden. Eine Zeile mit uart:unknown bedeutet: 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 (das sind Eingangsleitungen) ansteuert, können Sie sogar ziemlich sicher sein, dass da tatsächlich etwas ist… Gleiches gilt für den rx-Byte-Count.

7
7
7
2014-12-20 13:55:13 +0000

Wenn Sie dies programmatisch tun müssen, kann das Lesen der Ausgabe von dmesg mühsam sein. Stattdessen hat der Ordner /dev/serial/by-id Sym-Links, die nach identifizierbaren Daten Ihres Geräts benannt sind und auf das spezifische /dev/tty* zeigen, mit dem sie verbunden sind.

Ich bin mir nicht sicher, ob dies eine spezielle udev-Regel ist, die distributionsspezifisch ist, aber es funktioniert gut in Ubuntu, lassen Sie es mich wissen, wenn es funktioniert.

6
6
6
2010-04-14 21:17:04 +0000

ttyS0 bis 3 entsprechen jeweils COM1 bis 4. Sie haben in der Regel die gleichen Hardwareressourcen und sind nicht immer erkennbar, daher sind sie immer vorhanden.

1
1
1
2016-09-12 15:19:53 +0000

Es gibt auch den Befehl setserial, der /proc/tty/driver/serial verwendet, um seine Daten zu erhalten.

# 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