String-Datensatzverarbeitung
Hallo, ich bin zwar inzwischen relativ LabView eingearbeitet, habe aber mit der Stringerarbeitung noch recht wenig erfahrung.
Ich habe nun ein VI laufen, das Daten von der seriellen Schnittstelle ausliest und in einen Stringpuffer schreibt. Der Inhalt des Puffers (ein String) sieht dann z.B. so aus:
Configuration finished. Leaving Config-Mode.
Module;Channel;Wavelength;Speedmode;ADC-Value;Timer-Value;
[0-3];[0-3];[0:750nm, 1:850nm];[1:on, 0:off];[16Bit HEX, *5/2^16];[16Bit HEX, 1/100s];
M0;C2;L1;S0;0D2D;05C4;
M0;C0;L0;S0;1817;05CB;
M0;C0;L1;S0;16DE;05D2;
M0;C1;L0;S0;11F5;05DA;
M0;C1;L1;S0;0EA8;05E1;
M0;C0;L0;S0;0DB8;05E8;
M0;C0;L1;S0;0DE3;05F0;
Speedmode On
M0;C1;L0;S1;0E1B;05F7;
M0;C1;L1;S1;0E4D;05FE;
Nun muss man noch dazu sagen, was hier nicht angezeigt wird: Jeder Absatz wird durch CR + LF gekennzeichnet (in ebender Reihenfolge).
Was ich tun möchte ist nun eigentlich relativ simpel: Die Datensätze (Zeilen) bestehen aus Header - z.B. "M0,C2;L1;S0;" und Hex-Daten "0D2D;05C4". Der Header gibt Modulnummer (M), Channelnummer ©, Lambda (L) und Speedmode (S) an. Ich würde nun gerne aus jeder vollständigen Zeile ein Cluster machen, das die Informationen und Daten trägt.
Alle anderen Zeilen mit Informationen (z.B: "Speedmode On") sollen ignoriert werden.
Mein Problem ist, dass ich nicht genau weiß wie das nun am besten zu bewerkstelligen ist, denn: Der Stringpuffer muss ja nicht zwangsweise ganze vielfache einer Zeile beinhalten (da kommt ja immer wieder etwas dazu).
Könnte mir da jemand kurze Hinweise oder Beispiele geben, wie ich den Puffer von vorne (d.h. älteste Daten zu erst) in vollständigen Zeilen auslesen und verarbeiten könnte? Hinten werdem ja laufend neue Daten angehängt. Der Rest ist in einer Queued State Machine implementiert, es sollte also alles darumherum bereits "optimal" laufen.
Viele Grüße und besten Dank!!
Alexander
|