Lesen von einer seriellen Schnittstelle

Lesen von einer seriellen Schnittstelle

Ich habe ein serielles Gerät in Betrieb, von dem ich Daten lesen muss (über das Gerät selbst habe ich absolut keine Kontrolle), außer dass ich seine Ausgabe lesen kann. Mit Hyperterminal in Windows kann ich sinnvollen Datenverkehr erkennen, und gestern, als ich cat verwendet habe (oder mein eigenes kleines C-Programm, um die Daten zu lesen und auf stdout auszugeben), hat es problemlos funktioniert.

Wenn ich heute cat/mein Programm verwende, erhalte ich nur eine Art beschädigte Daten, Hyperterminal zeigt die Daten jedoch weiterhin an.

Was könnte nur falsch sein? Wie kann es gestern funktioniert haben, aber heute nicht?

Die Datei, die ich lese/gelesen habe, ist/dev/ttyUSB1

*Bitte beachten Sie, dass ich nie BEIDE Programme und die Katze gleichzeitig ausführe, sondern immer nur eines von beiden gleichzeitig.

Antwort1

Jemand auf SO hat in die richtige Richtung gewiesen; das Problem lag bei der Baudrate, sie war auf einen anderen Wert eingestellt, als ich brauche.

So überprüfen Sie die Baudrate: stty -F /dev/ttyUSB1
So stellen Sie die Baudrate ein: stty -F /dev/ttyUSB1 57600(57600 ist in meinem Fall die Baudrate, die mein Gerät benötigt)

Jetzt funktioniert es wie am Schnürchen.

Antwort2

Serielle Schnittstellen sind besonders seltsame Biester. Sie sollten ein Terminalemulationsprogramm der alten Schule verwenden. Ich dachte immer, tipes wäre das Beste, aber anscheinend hat niemand mehr den Quellcode dafür. cuEs wird mit UUCP geliefert und die Installation und Konfiguration ist ein einziger Aufwand, also machen Sie sich nicht die Mühe.

Eine kurze Google-Suche zeigt mir, dass die Leute dazu neigen,minicomheutzutage.Hier ist eine Stack Overflow-Fragedas scheint zumindest bei der Kommunikation minicommit einem seriellen USB-Gerät einige Auswirkungen zu haben.

Lassen Sie uns wissen, wie es ausgeht. Aktualisieren Sie Ihre Frage oder hinterlassen Sie einen Kommentar oder etwas Ähnliches.

verwandte Informationen