Unter Linux möchte ich eine Befehlszeichenfolge (dh einige Daten) an eine serielle Schnittstelle senden (die Steuerzeichen enthält) und die Antwort abhören (die normalerweise auch Steuerzeichen enthält).
Wie kann ich das unter Linux so einfach wie möglich machen? Ein Beispiel wird geschätzt!
serial-port
Alex
quelle
quelle
Antworten:
Alle Geräte unter Unix sind einer Gerätedatei zugeordnet, die seriellen Schnittstellen wären
/dev/ttyS0
/dev/ttyS1
....Schauen Sie sich zunächst die Berechtigungen für diese Datei an. Nehmen wir an, Sie verwenden sie
/dev/ttyS1
.ls -l /dev/ttyS1
Sie möchten einen Lese- / Schreibzugriff. Wenn es sich um ein freigegebenes System handelt, sollten Sie die Sicherheitsfolgen berücksichtigen, die sich aus dem Öffnen für alle ergeben.
Eine sehr einfache rohe Methode, um in die Datei zu schreiben, würde den einfachen
echo
Befehl verwenden.und zu lesen
Sie können in einem Terminal eine Katze laufen lassen und in einem zweiten ein Echo erzeugen.
Wenn alles Kauderwelsch ist, müssen die Bit-Einstellungen möglicherweise vorgenommen werden, bevor Sie mit dem Senden beginnen.
stty
wird das machen. !! HINWEIS stty verwendet stdin als Standarddateideskriptor.Äquivalente Befehle.
Dies könnte für Sie ausreichen, um etwas zu schreiben und zu protokollieren? Nicht sicher, was Sie erreichen wollen.
Für eine interaktivere, erinnert sich Ihre Standardeinstellung wäre, es zu verwenden
minicom
, ist nur ein Programm, das alles tut, was ich bisher erwähnt habe. (Ähnlich wie bei Hyperterminal unter Windows sind Sie möglicherweise vertraut).Eine Zwischenlösung wäre ein Terminalprogramm, wie
screen
es auf einem seriellen Gerät funktioniert.man screen
man minicom
man stty
für mehr Informationenquelle
# stty -speed 38400 -f /dev/ttyUSB1
kehrt zurückstty: invalid argument '-speed'
Sie müssen lediglich zwei Terminals öffnen. Im ersten Terminal hast du
cat
alles vom Gerät, zIm anderen Terminal können Sie beliebige hexadezimale Zeichen und Text an das Terminal senden, z. B. wie folgt:
Der
echo -e
Befehl ermöglicht die Interpretation von Backslash-Escapes.Man muss natürlich sicherstellen, dass (i) die seriellen Einstellungen (Geschwindigkeit, Wortlänge, Flusskontrolle usw.) korrekt sind und (ii) das serielle Gerät (am anderen Ende) nicht blockiert.
quelle
Programme, die mit seriellen Geräten kommunizieren:
oder von der Shell aus können Sie tun:
quelle
exec 99<&-
oderexec 99>&-
sollte verwendet werden. Oder vielleicht beides?Dies könnte ein besserer Ansatz sein:
quelle
Sie können auf einem Gerät gleichzeitig lesen und schreiben:
Ihre Nachricht wird an die zweite
cat
von gesendetstdin
, und die erstecat
leitet die Antwort an weiterstdout
und verwandelt Ihr Terminal in einen Chatroom.Zum Schluss dann nochmal
ctrl-c
laufen .fg
ctrl-c
quelle