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 einzelnekey press
zum auslösen einerboot option
echo=0
auf beiden Seiten verhindertkey press
Verdoppelungcrnl
auf beiden Seiten verhindernenter
key press
Verdoppelungescape=0x03
erlaubt mir, michquit
die Sache durch drückenctr+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
oderstty sane
nach dersocat
Befehl zum zurücksetzen des terminal auf vernünftige Werte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Austin Phillips sagt, Sie können
stty sane
zu erholen......aber was noch besser ist, dass Sie (wahrscheinlich) hängen Sie an Ihr schockiert Befehl als
socat xxxxx ; stty sane
haben und die Genesung automatische beim beenden mit Strg-c.Dank, das funktionierte für mich!
Ich möchte nur darauf hinweisen, dass das Skript sollte sich nicht auf "statische" Konsole Identifikation, denn wenn
expect
erstellt das Skript, es geht um ein völlig anderestty
, dafür:edit:
nonblock
auch gelöst die "enter" - problem