2017-10-30 5 views
0

Ich verbinde mich mit einem Modem über eine serielle Schnittstelle und versuche herauszufinden, wie man einen AT-Befehl sendet, und füge Bedingungen je nach Ausgabe hinzu. Ich kann mit screen oder minicom/dev/ttyAMA0 verbinden und den AT Befehl senden und die Antwort OK, aber wenn ichBash Serial Scripting

echo -en "AT" >/dev/ttyAMA0 && cat /dev/ttyAMA0 

verwende ich nur sehen, was ich Echo, nicht das, was die Antwort ist. Ich muss in der Lage sein, den AT Befehl zu senden, zu prüfen, ob die Ausgabe OK ist, oder FEHLER, dann basierend auf dieser Antwort etwas anderes zu tun. Warum bekomme ich vom seriellen Gerät keine Antwort?

Ich versuche, ein Bash-Skript zu erstellen, das eine Verbindung zum Modem herstellen und eine Textnachricht senden kann, aber wissen müssen, ob es Fehler gibt, anstatt nur zu sagen, dass es funktioniert. Gibt es einen besseren Weg, dies zu erreichen?

Antwort

0

Nach dem Echo können Sie nicht einfach die Gerätedatei erfassen. Sie benötigen einen listening Schleife zu starten:

while read -r str < /dev/ttyAMA0; do 
    # $str will contain a line of text returned from modem. 
done 
+0

Ich verstehe nicht, warum ich nicht einfach das Gerät katzen kann? Wenn ich es in zwei Terminals geöffnet habe, sehe ich alle AT-Befehle, die ich in Terminal 1 an Terminal 2 eingegeben habe, bei dem 'cat/dev/ttyAMA0' läuft. Mit dieser Schleife sah ich überhaupt nichts mehr zu der Variablen "read" zurückkehren. – Alan

+0

Ich habe diese Methode verwendet und es hat gut funktioniert. Es tut uns leid, wenn das nicht in allen Fällen universell ist. Und zwischendurch müssen Sie $ str Variable überprüfen –