21.03.2011, 23:51
(11.03.2011 09:11 )GerdW schrieb: [ -> ]Hallo Frank,
ein Fehler von mir: SerialInit versteht nur U8-Werte als Terminierungszeichen, du kannst also nicht "A55A" dort vorgeben. (Es wird wohl stattdessen "FF" verwendet, da der Wert angepasst wird.) Vielleicht kommen deine PacketErrors dort her...
.
Hallo Gerd,
ja, leider kommen die Errors daher und das macht mir seit Tagen Kopfzerbrechen.
Das alleinige Prüfen auf A5 reicht nicht aus, da A5 sowohl als Messwert wie auch als Framecounter vorkommt.
Also nahm ich das Terminierungszeichen ganz raus und las immer 1 Byte nacheinander ein.
Dadurch liegt nur bei jedem 17. Whileschleifendurchlauf ein gültiger Messwert in der Whileschleife vor.
Somit füllt sich das Array nicht ausschliesslich mit Messwerten sondern auch mit vielen 0-Lücken.
Ausserdem müsste ich die Oszilloskopanzeige wieder in eine Case Struktur legen und nur
wenn ein gültiger Messwert anliegt, auf True schalten.
Das kann nicht die Lösung sein und wird auch sehr unübersichtlich
je mehr Dinge noch dazukommen.
Mein anderer Ansatz:
[attachment=32866]
Visa Read liest solange byteweise Daten ein, bis die Startkennung A55A02 am Schieberegister erscheint und dann wird
der Messwert zusammengefügt und mit Typecast gewandelt.
Problem:
Hierbei wird das Array oben links immer wieder auf 0 gesetzt.
Das Oszilloskop liegt nun in der Casestruktur und wird nur alle 17 Bytes auf True gesetzt.
Ist irgendwie auch nicht so das Richtige.
Schade, Deine Lösung war so übersichtlich, aber ich muss wohl Visa Read 1-byteweise einlesen lassen
oder siehst Du eine andere Lösung?