Der echo sendet ein \n, dein Code erwartet ein \r. Entweder deinen Code
ändern, oder die output flags entsprechend setzen (OPOST ONLCR, s. man
stty, insb. -NL). Die input flags sind für die Antworten. MMn ist es
sinnvoller, den Code anzupassen.
Btw, man sieht das sehr häufig, dass Leute davon ausgehen, dass
termio-settings über mehrere open/close hinweg erhalten bleiben. Das ist
nicht garantiert! Auch werden einige Steuerleitungen beim close
deaktiviert und evtl auch noch nicht gesendete Zeichen verworfen. Besser
ist es, das Gerät einmal zu öffnen und dann alles mit dem einen
Filehandle zu machen. Z.B. so:
1 | #/bin/sh
|
2 | exec 4<>/dev/ttyUSB0 # open tty once on fd 4
|
3 |
|
4 | msg() { echo >&2 "*** $*"; }
|
5 |
|
6 | msg "Setting up tty"
|
7 | stty <&4 sane 19200 -echo -isig # sane includes inlcr opost onlcr
|
8 |
|
9 | msg "Sending welcome"
|
10 | echo >&4 "Hello World"
|
11 |
|
12 | msg "Reading reply"
|
13 | read <&4 a
|
14 | msg "Got '$a'"
|