Lesen von seriellen von Linux-Befehlszeile

51

Ich habe ein Gerät mit serieller Schnittstelle, das ich unter Verwendung der Linux-Befehlszeile testen möchte.

Ich kann stty und echo zum Senden von Befehlen an die serielle Schnittstelle verwenden, aber wenn das Gerät antwortet, kann ich nicht lesen, was von der seriellen Schnittstelle kommt. ich benutze

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

um einen Befehl an das Gerät zu senden. Gerät arbeitet und sendet in 300 ms eine Antwort zurück. Wie kann ich diese Antwort über die Befehlszeile an die Konsole senden?

erin c
quelle

Antworten:

56

Gleich wie bei der Ausgabe. Beispiel:

cat /dev/ttyS0

Oder:

cat < /dev/ttyS0

Das erste Beispiel ist eine App, die die serielle Schnittstelle öffnet und die gelesenen Daten an stdoutdie Konsole weiterleitet . Die zweite ist die Shell, die den Datenverkehr über die serielle Schnittstelle an eine beliebige App weiterleitet. Diese spezielle App leitet sie dann einfach stdinan ihre weiter stdout.

Um eine bessere Sicht auf den Verkehr zu erhalten, bevorzugen Sie möglicherweise einen Hex-Dump:

od -x < /dev/ttyS0
Jirka Hanika
quelle
odersocat stdio /dev/ttyS0
pstanton
Ich habe einen Befehl an ein Gerät gesendet, mit dem ich arbeite. Der Befehl lautet: echo "1GAINS" | sudo tee / dev / ttyUSB0 .... und als Antwort erhalte ich einen unendlichen Stream, der dieselbe Nachricht wiederholt. Irgendwelche Ideen? Das Gerät selbst sollte den Befehl, den ich einmal gesendet habe, wiedergeben, aber hier erhalte ich seltsames Feedback.
user391339
Ich habe mit einem seriellen Analysator überprüft, dass das Feedback nicht "echt" ist. Das Gerät gibt den Befehl nur einmal zurück, aber mit den obigen Befehlen erhalte ich eine verrückte endlose Wiederholung am Terminalausgang.
user391339
Funktioniert es mit Binärdaten?
Ransh
@ransh - Siehe den Hex-Dump-Teil der Antwort. Sie benötigen letztendlich einen Menschen oder ein Tool, der bzw. das diese speziellen Binärdaten versteht oder zurückentwickeln kann.
Jirka Hanika