Die Frage:
Ich habe ein Gerät (z. B. ein GSM-Modem) über eine serielle Schnittstelle (alias RS-232) angeschlossen und muss sehen, mit welcher Datei im /dev/
Dateisystem dieses Gerät verbunden war, um mit ihm kommunizieren zu können. Leider befindet sich keine neu erstellte Datei /dev/
in der dmesg
Ausgabe, noch ist etwas in der Ausgabe zu sehen . Das scheint also eine schwierige Frage zu sein.
Hintergrund:
Ich hatte noch nie mit einem seriellen Gerät gearbeitet. Als gestern ein Bedarf auftrat, versuchte ich, es zu googeln, fand aber nichts hilfreiches. Ich habe ein paar Stunden auf der Suche verbracht und möchte eine gefundene Antwort mitteilen, da dies für jemanden hilfreich sein könnte.
devices
tty
serial-port
Hallo Engel
quelle
quelle
Antworten:
Leider sind serielle Ports nicht PlugNPlay-fähig, sodass der Kernel nicht weiß, welches Gerät angeschlossen ist. Nach dem Lesen eines HowTo- Tutorials habe ich eine Idee.
Das
/dev/
Verzeichnis von Unix-ähnlichen Betriebssystemen enthält Dateien mit dem Namen ttySn (wobei n eine Zahl ist) . Die meisten entsprechen nicht den vorhandenen Geräten. Geben Sie einen Befehl ein, um herauszufinden, welche dieser Befehle ausgeführt werden:Oben ist eine Beispielausgabe meines PCs. Sie können die Initialisierung einiger serieller Ports sehen:
ttyS0
,ttyS1
,ttyS4
,ttyS5
.Einer von ihnen wird eine positive Spannung an einem angeschlossenen Gerät haben. Wenn
/proc/tty/driver/serial
wir also den Inhalt der Datei mit und ohne angeschlossenes Gerät vergleichen, können wir die mit unserem Gerät verbundenen ttyS leicht finden . Also machen Sie jetzt:Ein Gerät (aus) stecken
Überprüfen Sie anschließend den Unterschied zwischen den beiden Dateien. Unten ist eine Ausgabe von meinem PC:
Durch Vergleichen der drei Zahlen mit der dmesg-Ausgabe können wir feststellen, welcher der Ports ist:
Daher ist unser Gerät
/dev/ttyS0
, Mission erfüllt!quelle
dmesg
sollte eine Meldung über die Zuweisung von IRQ zu einem seriellen Gerät vorliegen . Und wenn nicht, würde ich ein Hardwareproblem annehmen. Das ist nur eine Annahme und könnte falsch sein, aber wenn ich ein solches Problem beheben würde, würde ich mit der Untersuchung beginnen und bedenken, dass die serielle Schnittstelle hätte initialisiert werden müssen.