mikrocontroller.net

Forum: Compiler & IDEs serielle Daten auswerten / interpretieren


Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir!
Dann gehe ich mal ans Werk :)

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Beitrag "Auswertung RS232-Befehle"

Richtig, die Nutzdaten als ASCII (+ 0x30) senden, dann kannst du als 
Start STX und ETX nutzen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.