Stringzerlegung in Array/Tabelle - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Stringzerlegung in Array/Tabelle (/Thread-Stringzerlegung-in-Array-Tabelle) |
Stringzerlegung in Array/Tabelle - Guest - 14.11.2007 22:39 Hallo, nachdem der letzte Thementitel etwas irreführend war, versuche ich es nochmal (trotzdem danke an Achim). Ich bekomme eine txt-Datei welche Messwerte von (inzwischen) 12 Sensoren enthält. Leider ist ddie From in der die Messwerte dort angeordnet sind gänzlich unpraktisch. Es werden dabei immer nur Daten von den Sensoren gesendet, die an waren. Das heißt wenn nur ein Sensor an war, wird auch nur für einen Daten geschickt. Es können aber von bis zu 10 gleichzeitig Daten geschickt werden. Die Datei enthält einen Header, in dem die Dateibezeichnung, einige andere Infos und die Information welche Sensoren an waren, übermittelt werden. Die letzten Zeichen des Headers sind also zum Beispiel 101000000000, das heißt die Sensoren 1 und 3 waren an und für diese sind in der Datei Messwerte enthalten. Leider ist die Länge des Headers veränderlich (byte-Anzahl) aber die letzten 12 Zeichen sind jeweils die für die Aussage über die aktiven Sensoren. Nach einem "CR LF" (End of Line; HEX "0D0A") kommen zeilenweise die eigentlichen Messwerte. Eine Zeile ist wie im ersten Bild aufgebaut: erst kommt ein Counter (1byte): 00 dann kommt eine Zeit in Sekunden (4byte): 0000 0000 dann kommen die Messwerte des 1. eingeschalteten Sensors (2xSpannung (2byte), 2xStrom (2byte), 1xMessbereich (1byte) = 9byte pro Sensor) F200 FF0F 1404 0000 00 dann dasselbe Spiel nochmal für den 2. sendenden Sensor. Dies kann sich dann also für bis zu 10 Sensoren wiederholen (es können nur 10 der 12 Sensoren gleichzeitig senden). Nach so einer Messwertzeile kommt ein Seperator "LF" (HEX "0A"). Danach wiederholt sich derselbe Spaß für den nächsten Counterstand, also die nächste Zeit. Im Prinzip ist der Messwertteil also aufgebaut, wie im 2. Bild beispielhaft für 2 sendende Sensoren aufgebaut. Nach den Messwerten kommt noch ein "CR LF" ( HEX "0D0A"). Danach kommt noch die Footline, diese spielt aber keine große Rolle. Ziel: Am Ende soll eine Tabelle (Array) stehen, in der die Messwerte dargestellt und zeilenweise aufgespalten sind. Dabei hab ich mehrere Probleme: für Sensoren die keine Daten geschickt haben, sollen Nullen in die jeweiligen Felder für die 2 Spannungen, 2 Ströme und 1 Messbereichswert geschrieben werden. Schließt also die Header-Zeile wie oben mit 101000000000, dann kommen für eine Messwertzeile erst Counter und Zeit, dann die 5 Werte des ersten Sensors, dann 5 Nullen, dann die 5 Werte des dritten Sensors und dann jeweils 5 Nullen für die restlichen 9 Sensoren. Ich hätte also am Ende gerne ein Array das so aussieht wie die im Excel-File (natürlich nur die Dezimalzeilen). Die nächste Messwertzeile soll dann in eine neue Zeile des Arrays geschrieben werden. Ich habe mich, mit Achim Hilfe, schon etwas vorgearbeitet. Leider funktioniert die Aufspaltung der Messwerte der einzelnen Sensoren noch nicht richtig. Wie schaffe ich es in der FOR-Schleife für eine 1 am jeweiligen Sensor (z.B. erster Sensor wenn im Header 101000000000) die Werte aus dem String zu verarbeiten und für eine 0 5 Nullen in die Tabelle zu schreiben ? Und dann auch für eine Messwertzeile hintereinander ? In meinem VI werden irgendwie nur einmal die 5 Nullen aus dem FALSE-Zweig der Case-Struktur geschrieben. Dadurch stimmt dann natürlich auch der Rest der Tabelle nicht mehr. So, ich hoffe das war nicht zu verwirrend. Wenn doch, dann würde ich mich freuen jede Frage zu beantworten. Ich würde mich über jede Hilfe sehr freuen. Mfg Karl-Heinz P.S. hab grad gesehen, kann keine Excel-Files hochladen; Tabelle ist im RAR-Archiv Edit: Achso, Beispiel-File ist im VI als Default gespeichert (VI LV 8.0) |