tpm2 Protokoll UART - Programmierfrage

OP #4647789
Lesenswert?
• ▲
▼
Hallo Liebes Forum,

Ich bin gerade dabei meine LED-Matrix mit Leben zu füllen. Dazu möchte 
ich gerne Software wie Jinx oder Glediator verwenden. Um die Daten auf 
die Matrix zu bekommen benutze ich ein Stm32f4-Discovery mit HC-05 
Bluetooth Modul. Die Ansteuerung der LED und des HC-05 funktioniert 
alles schon.
Ich möchte gerne das TPM2-Protokoll über die serielle Schnittstelle 
nutzen 
(http://www.ledstyles.de/index.php/Thread/18969-tpm2-Protokoll-zur-Matrix-Lichtsteuerung/). 
Kurz zusammengefasst:
1. Blockstart: 0xC9
2. Blockart: 0xDA
3. Framegröße: 0x0003 (In meinem Fall)
4. Nutzdaten: 256*3=768 Byte (In meinem Fall)
5. Endekennung: 0x36

Kopfschmerzen bereitet mir dabei die Endekennung des Protokolls. Bisher 
wurde im Empfangspuffer nach 0x36 gesucht und wenn gefunden wurde ein 
Telegramm als Empfangen angesehen. Funktioniert soweit auch gut bis 0x36 
als Farbwert in den Nutzdaten auftaucht. Dann wird ja mitten im 
Telegramm das Ende erkannt und es kommt Unsinn auf der Matrix heraus.
Wie umgeht man dieses Problem nun am elegantesten?

Gruß M.M.
OP #4647814
Lesenswert?
• ▲
▼
Kam mir natürlich auch schon in den Sinn.
Nur welchen Ansatz benutzt man da. man muss ja nicht immer das Rad neu 
erfinden ;-)

Ein Ansatz von mir wäre Blockstart und -art zu suchen und dann die 
Framegröße auszulesen. Diese dann auf Plausibilität prüfen. Ebenfalls 
benötige ich die Position des Lese-Pointers (Empfangspuffer ist ein 
Ringpuffer). Dann kann ich mir die Position berechnen an dem die 
Endekennung auftauchen müsste. Wenn dann die restlichen Bytes bis zu 
dieser Position empfangen wurden und es wirklich die Endekennung ist 
habe ich mein Telegramm beisammen.
Macht dieser Ansatz Sinn oder gibt es einfachere  bessere  elegantere 
Methoden?

Es könnte natürlich auch passieren dass zufälligerweise mal irgendwo 
0xC9DA als Farbwert auftaucht!

Antwort schreiben

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.

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.