it-swarm.com.de

Wie finde ich heraus, welche serielle Schnittstelle verwendet wird?

Die Frage :

Ich habe ein Gerät (d. H. Ein GSM-Modem) über eine serielle Schnittstelle (a.k.a. RS-232) angeschlossen und muss sehen, mit welcher Datei in /dev/ Dateisystem Dieses Gerät wurde gebunden, um mit ihm kommunizieren zu können. Leider gibt es keine neu erstellte Datei in /dev/ noch kann etwas in dmesg Ausgabe gesehen werden. Das scheint also eine schwierige Frage zu sein.

Hintergrund :

Ich hatte noch nie mit einem seriellen Gerät gearbeitet, also habe ich gestern, als es nötig wurde, versucht, es zu googeln, konnte aber nichts hilfreiches finden. Ich habe ein paar Stunden auf der Suche verbracht und möchte eine gefundene Antwort teilen, da sie für jemanden hilfreich sein könnte.

35
Hi-Angel

Leider sind serielle Schnittstellen kein PlugNPlay, sodass der Kernel nicht weiß, welches Gerät angeschlossen wurde. Nach dem Lesen eines HowTo - Tutorials Ich habe die Arbeitsidee.

Das /dev/ - Verzeichnis von Unix-ähnlichen Betriebssystemen enthält Dateien mit dem Namen ttySn (wobei n eine Zahl ist ) . Die meisten von ihnen entsprechen nicht vorhandenen Geräten. Geben Sie einen Befehl ein, um herauszufinden, welche dies tun:

$ dmesg | grep ttyS
[    0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[    0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2

Oben ist eine Beispielausgabe meines PCs. Sie können die Initialisierung einiger serieller Schnittstellen sehen:

ttyS0, ttyS1, ttyS4, ttyS5.

Eine davon ist wird eine positive Spannung haben bei einem angeschlossenen Gerät. Wenn wir also den Inhalt der Datei /proc/tty/driver/serial Mit und ohne angeschlossenem Gerät vergleichen, können wir leicht die ttyS in Bezug auf unser Gerät. Also jetzt:

$ Sudo cat /proc/tty/driver/serial> /tmp/1

(un) ein Gerät anschließen

$ Sudo cat /proc/tty/driver/serial> /tmp/2

Überprüfen Sie als nächstes den Unterschied zwischen den beiden Dateien. Unten ist eine Ausgabe meines PCs:

$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR

Durch Vergleichen der drei Zahlen mit der dmesg-Ausgabe können wir bestimmen, welche der Port ist:

[    0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

Daher ist unser Gerät /dev/ttyS0, Mission erfüllt!

37
Hi-Angel