Hallo jg
(19.11.2013 17:26 )jg schrieb: Prinzipiell musst du die Schnittstelle öffen, in einer Schleife andauernd die anliegenden Bytes auslesen und solange zu einem String zusammensetzen und analysieren (Stichwort Schieberegister), bis du auf das Synchronisationsmuster "3x 0x0" triffst. Jetzt muss das nächste Byte im Stream untersucht werden. Ist es ungleich 0x0, dann ist es das erste Byte einer Kanal-Info, falls es dagegen 0x0 lautet, dann war es das letzte Byte eines Trennblocks und das darauffolgende Byte muss das erste Byte einer Kanal-Info sein.
Wie der "prinzipielle" Ablauf ist, ist mir klar.
Wenn ich die anliegenden Bytes innerhalb der Schleife andauernd auslese und mir die Werte der einzelnen Bytes anschaue (über Array dezimieren?!). Bsp:
Byte1: 0000 0000
Byte2: 0000 0000
Byte3: 0001 0000
Byte4: 1011 0101
Byte5: 0000 0000
dann sehe ich das beispielsweise so.
Wenn das bis hierhin richtig ist, muss ich jetzt innerhalb der Schleife irgendwas machen, dass geprüft wird, ob 3 aufeinanderfolgende Bytes 0x0 entsprechen. Ist dies nicht der Fall muss ich dann die vorliegenden Bytes "eins weiter schieben" und in das Schieberegister geben welches meine Werte wieder an den Anfang der Schleife übergibt und solange überprüft, bis man auf das Muster "3x 0x0" trifft.
Bei der Bedingung welche in der Schleife geprüft werden muss häng ich.
Ist die Grundlage so wie im Anhang ok (rechts unten)?
Vielen Dank
redhand
Edit: bzw so wie in Wegmessung UART2, kann mir zwar kaum vorstellen das es so umsetzbar ist, aber kann man mit der Logik evtl. etwas anfangen?