LabVIEWForum.de - Export to file (nicht indexierte Daten)

LabVIEWForum.de

Normale Version: Export to file (nicht indexierte Daten)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag miteinander,

Kann gut sein, dass es irgendwo ein Bsp. dazu gibt aber ich habe jetzt nach längere Suche nichts gefunden. Ich danke auch das Problem ist sehr einfach zu lösen, doch ich finde keinen Anhaltspunkt der mir weiterhilft. Das Problem ist folgendes:

Ich möchte eigentlich ganz einfach Daten in ein .txt oder .xls file schreiben. Ich habe einen Loop der pro Sekunde 4 Messungen macht. Diese werden auch in einem Graphen dargestellt.
Nun möchte ich per Knopfdruck (z.B. über eine Eventstruktur) alle Messdaten in ein File speichern. Das Problem ist, dass alle Bsp. zum Abspeichern von Daten (die ich gefunden habe), immer über den Loop-Rahmen gezogen werden und dort indexiert werden. Nach dem Beenden des Loops werden dann dort die indexierten Daten gespeichert. Da ich aber meinen Loop nicht stoppen kann (wegen anderer Funktionen die darin laufen) muss ich irgendwie eine Funktion haben auf die ich meine Laufvariable und meine Messwerte verbinde und die mir ein Array ausgibt dass ich per Knopfdruck dann z.B. über die Funktion "spreadsheet" ausgeben kann.
Kann mir irgendwer helfen?

Vielen Dank schon im voraus!
Spontan fällt mir dazu ein: Schieb deine Daten einfach in eine Queue so wie die anfallen. In einer parrallelen Schleife lässt du die dann bei Mausklick auslesen und ausschreiben. Ich hab mal ein Beispiel zusammengeschustert (an dem man sicher noch weiter feilen kann) um das Prinzip zu verdeutlichen. Zu beachten: Die parrallele Schleife wird durch die Zerstörung der Queue nach Beendigung der Datenproducerschleife beendet. Außerdem fasst die Queue in dem Fall unbegrenzt viele Daten. Lässt man das ganze also beliebig lange laufen stürzt das irgendwann ab. Da sollte man also noch eine sinnvolle Begrenzung der Elementezahl oder andere Vorsichtsmaßnahmen hinzufügen.

P.S: Man kann natürlich auch aus den Elementen sukzessive ein Array zusammenbasteln und das zwischenspeichern über Schieberegister. Kann mir allerdings vorstellen, dass für große Datenmengen die lösung mit Queue performanter sein dürfte.
Vielen, vielen Dank! Habs zwar nicht ganz verstanden mit diesen Queue-Funktionen (kannte ich vorher noch nicht) aber funktionieren tuts perfekt. Wie ich das mit der Datenmenge handle muss ich noch schauen...
Noch ne Anmerkung dazu vielleicht: Mit der Lösung kannst du die Daten jeweils genau nur einmal wegschreiben (danach ist die Queue leer) und "musst" alles wegschreiben was an Daten angefallen ist. Sinnvoll wären also noch sowas, wie nen "Clear Data" (das einfach die Queue leert ohne die Daten wegzuschreiben).

Falls du die gleichen Daten potentiell mehrmals wegschreiben willst musst du dir dafür dann auch noch ne Zwischenspeicherlösung überlegen (es würde sich dabei eher nicht empfehlen, dass als 2D Array zu speichern, da du dann alle vormals 1D Arrays auf die gleiche Länge bringst (ergo: die längste Datenreihe bestimmt dann wie viele Spalten das Array hat und in jeder Zeile wird mit dem Standardwert aufgefüllt was fehlt (also zum Beispiel mit 0en).
Lösung dafür: Die Einzelarrays in einem Cluster Kapseln und in einem Array dieses Clusters aufbewahren - zum Beispiel innerhalb eines Schieberegisters (wie gesagt, sofern notwendig). In den Cluster kannste dann auch noch Metadaten reinpacken (Name der Messung oder whatever).

Gruß Kiesch
Referenz-URLs