serielle Daten auswerten / interpretieren

Gast #804155
Hallo,

ich stehe vor dem Problem, eine serielle Übertragung (hier: Funk) 
irgendwie auswerten zu müssen.
Wie macht man sowas am besten?

Meine Überlegung:
-Startmarkierung
-|Ziel-ID|
-|Sender-ID|
-|Nutzdaten|
-|Checksumme|
-Endmarkierung

Da sind aber noch viele Fragen offen:
- Wenn ich z.B. "|" als Markierung für Start und Ende eines "Blocks" 
nehme, was passiert, wenn meine Nutzdaten ein "|" enthalten?
- Wie programmiert man das? Ich hätte das jetzt mit Zuständen gemacht:

Z0: nix
Z1: Startmarkierung wurde empfangen
Z1: ZielID empfangen
...

Z6: Endmarkierung empfangen => auswerten

In jedem Zustand würde ich das dann empfangene auf Gültigkeit prüfen 
(kommt das End-Zeichen nach x zeichen, oder was anderes? Sind es gültige 
Zeichen für eine ID?.....). Wenn nicht: Wieder nach Z0.

Thorsten
Ja, mit einer State-Machine ist das schon sinnvoll gelöst.
Vorallem wenn du keine fixe Länge eines Kommandos hast, oder noch 
Timeouts implementieren willst.
Wenn du die Daten ASCII-Kodiert schickst, kannst du statt dem '|' ja 
auch andere Trennzeichen nehmen, der "Record Seperator" 0x1E bietet sich 
da an.

Wenn du binär sendest, könntest du die Trennzeichen einsparen, und 
entweder mit fixen längen arbeiten (Sender/Empfänger ID) oder vor dem 
Block die Länge der nachfolgenden Daten schicken.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.