Mit schockiert für roh -, serielle Verbindung

Ziel ist es, die Verbindung zu einem embedded Gerät mit serial - Schnittstelle.
Bisher habe ich verwendet:

stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0

Und es funktioniert sehr gut, aber dann habe ich entdeckt, dass es einige Optionen, die während system boot erfordern, dass Sie drücken eine einzige Taste, ohne das enter, und readline scheitert es. Meine Idee war also, zu binden, das ttyS2 zu cons0, aber dann entdeckte ich mehrere Probleme, wie die Unfähigkeit zu beenden (ctr+c, ctr+q ctr+] und sogar esc funktioniert nicht), backspace und delete funktionieren nicht, Buchstaben werden getippt, zweimal, etc. So, nachdem einige Versuch und Irrtum, ich kam mit dieser:

socat /dev/cons0,raw,echo=0,crnl /dev/ttyS2,raw,echo=0,escape=0x03,crnl
  • raw auf beiden Seiten ermöglicht eine einzelne key press zum auslösen einer boot option
  • echo=0 auf beiden Seiten verhindert key press Verdoppelung
  • crnl auf beiden Seiten verhindern enter key press Verdoppelung
  • escape=0x03 erlaubt mir, mich quit die Sache durch drücken ctr+c

Das problem ist, wenn ich aussteige, meine cons0 ist alle f****d up, wenn es irgendwie bewahrt die raw,echo=0,crnl Einstellungen. Ich weiß, dieses problem ist wohl zu speziell für mein Szenario, aber ich brauche nur eine einfache Möglichkeit zum senden von Tastatureingaben auf die serielle als würde ich mit putty (die steht nicht auf meiner Plattform). Ich bin mit socat denn es ist sehr leicht, benötigt keine weiteren Bibliotheken, und weil die gezeigten Befehle sind ein Teil des größeren Skript, dass verwendet expect.

Alle Ideen und Vorschläge sind wir sehr dankbar.

  • Sie können reset oder stty sane nach der socat Befehl zum zurücksetzen des terminal auf vernünftige Werte.
InformationsquelleAutor Ulrik | 2014-10-15
Schreibe einen Kommentar