Lesen von der seriellen Schnittstelle und Speicher in hexadezimaler

Habe ich einen UKW-Funk, die an einer status-Nachricht kontinuierlich über die serielle Schnittstelle, und ich brauche die Nachrichten, die ich gespeichert werden als hex-Daten in eine text-Datei

Versuchte ich hexdump-Befehl wie unten gezeigt, und die Daten, die ich habe, vom UKW-radio ist richtig, aber das problem mit diesem script, wenn ich es ausführen, wird es nicht enden, bis ich Strg-c

d -A n -t x1 -w128 /dev/ttyS0 > file.txt

also habe ich versucht, einen anderen Befehl, der read-Befehl wie folgt:

COUNTER=0
while [ $COUNTER -lt 10 ]; do
read -r -t1 -N128 DATA < /dev/ttyS0 
echo $DATA >> file1.txt
od -A n -t x1 -w128 file1.txt >> file2.txt
let COUNTER=COUNTER+1
done

aber die Daten, gespeichert in file2.txt ist nicht korrekt.

die Nachricht, die ich aus dem radio ist nicht in einem format, das konnte ich interpretieren es nach den radio-prtocol Dokument. also, wenn ich sagte, dass die Daten nicht korrekt meine ich, dass die Nachricht konnte nicht interpretiert werden (Sie erhalten nach dem Zufallsprinzip)

beachten Sie, dass ich setted die serielle Schnittstelle vor der Ausführung des Skripts wie folgt:

stty -g /dev/ttyS0 raw
stty -F /dev/ttyS0 9600

so, bitte helfen Sie mir, um dies herauszufinden. oder hatte mir ein anderer Weg, um zu Lesen vom seriellen port.

Grüße,

  • Also Sie wollen das Skript zu beenden, wenn? Sobald eine bestimmte Anzahl an bytes angekommen sind, oder?
  • ja ich will das Skript abgebrochen wird, sobald eine bestimmte Anzahl an byte eingegangen ist. die status-Meldung des radio wird um die 45 Byte, sondern weil das radio sendet kontinuierlich ich will, um sicherzustellen, dass erhielt ich einen ganzen status-Nachricht. also sagen wir, ich brauche Sie erhalten 100 bytes, dann wird das Skript beendet.
  • Für den ersten Befehl, wo Sie Daten abrufen, die Sie möchten, können Sie bitte ein Beispiel der Daten in Frage (sagen wir 100 bytes davon)?
  • Ist die ASCII-Daten? Der Bedarf für STRG+C ist wahrscheinlich, dass die 'Daten', die nicht enthalten ist ein EOF (Ende der Datei) Markierung. Wenn du weißt, was der 'start of message" und "end-of-message" - Markierungen werden dann kann man extrahieren, indem Sie nach diesen mustern. Sie könnten auch versuchen, 'tail-c (--bytes=K) und die Leitung, die zu Ihrem hexdump-tool. 🙂
InformationsquelleAutor Latifa | 2015-09-28
Schreibe einen Kommentar