senden von hex-bytes auf die serielle in der bash
Ich bin in der Lage zu senden, die einen hec-bytes zu einem Seriell-port mit
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb -echo
echo -en '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > /dev/ttyUSB0
Aber wenn ich versuche, dies in einem loop test Lesen aus einer Datei, die es nicht arbeiten wollen
#!/bin/bash
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb -echo
while read line
do
name=$line
echo -en $name | tr -d ' ' > /dev/ttyUSB0
sleep 0.04
done < $1
Rufe ich das Skript wie dieses
./sendData.sh file.txt
file.txt hat einige einfache Inhalte wie diese
Versuchen 1
\\ xFF\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00
Versuchen 2
\xFF\xF2\x00\xFF\xF2\x00\xFF\xF2\x00\xFF\xF2\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
Könnte mir jemand zeigen Sie mir, was fehlt.
echo
ist schwierig, versuchen printf
oder einen speziellen hex-Konvertierung tool wie xxd
oder hexdump
.können Sie schlagen alle Probe zu versuchen ?
printf "%s\n" "$line"
? Viel Glück.funktioniert nicht 🙁
Wenn Sie die erste Fehlermeldung, am besten Bearbeiten Sie Ihre Frage so, dass Informationen enthalten. Am besten angeben, wie Sie wissen, es funktioniert. Diese erschöpft sich mein wissen (von denen es keines gibt) über die Kommunikation zu einem
/dev/USB*
. Ich werde nicht in der Lage sein, zu Debuggen, was da passiert. Viel Glück!InformationsquelleAutor Pavan K | 2014-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass
read
interpretiert escape-Sequenzen standardmäßig, effektiv entfernen von backslashes. Machen Sie Ihre Datei enthalten, z.B.\x01\x02\x03
und verwendenread -r
:Das sollte nicht der Fall sein. Können Sie
read -r line < "$1"; echo -en $line | od -t x1 -c; echo -en "$line" | od -t x1 -c;
- und post-Ausgang?Beide geben die gleiche Leistung. Es ist ein bisschen lang, um geben Sie die Ausgabe hier. Aber, seltsam, die serial bekommt die richtige aus, nur ohne die Anführungszeichen.
Sorry, habe ich gerade nochmal überprüft. Beide arbeiten! Es war ein Tippfehler in meinem code.
InformationsquelleAutor that other guy