Hallo, nachdem ich dachte, ich hätte nun alle Probleme in meinem Programm gelöst, wurde ich heute mal wieder auf den Boden der Tatsachen zurückgeholt.
Mein Programm liest in einer Timed Strukture While- Loop alle 100ms die Daten aus einem cFP 1808 aus, skaliert und parametriert sie, und übergibt sie per Melder an die Hauptschleife des Programms. Neben dem Datenerfassungs- Vi und der Hauptschleife läuft parallel noch eine Schleife mit Event- Struktur, in der die Bedienelemete des Frontpannels ausgewertet werden, dienstprogramme gestartet werden, usw. In der Hauptschleife befindet sich ein Waveform- Chart, die dem Benutzer die Kennlinien der aufgenommenen Messwerte visualisiert.
Der Benutzer soll, nach eingabe aller Daten (Materialnummer, Serialnummer, etc) eine Messung starten können, und wenn alles passt, diese Messdaten als Protokoll abspeichern könnnen. Falls es fehler gibt, kann er die Messung abbrechen, da Protokolle nur für iO- Teile benötigt werden.
Dateiformat ist TDMS, da *.xml bzw. ecel- files schnell zu gross geworden sind.
Ich hatte nun die data- History des Waveform- Charts auf so viele Werte geändert, das ich ca 2h Messung abdecken konnte, bei "Messung Start" den Chart auf 0 gesetzt, während der Messung als Puffer verwendet, und bei "Messung specihern" die Data Hisotry per PropertyNode in die *.tdms- File geschrieben.
Nach ca 10min glüht nun aber die CPU, weil das Chart eine riesige History hat, und das neuzeichnen extrem viel Leistung frisst.
Wenn ich die Daten syncron zum einlesen in eine tdms- File schreibe, habe ich das Problem natürlich nicht, allerdings wird immer eine Datei angelegt, und bei "niO"- Messungen, die abgebrochen werden, mülle ich mir die Datenbank zu. Die eine überlgung ist nun, die Daten im Arbeitsspeicher zu puffern (außerhalb des Charts), hierzu konnt eich bisher allerdings noch nichts finden. (werder in der Help, noch im Forum). Oder aber, ich speichere die Daten in einer art Cache- Bereich wie zb. die Temprary internet Files, und wenn sie "gespeichert" werden sollen, kopiere ich sie mir in den "festen" Dateipfad, wenn das Programm beendet wird, lasse ich das Temp- verzeichniss löschen. Allerdings habe ich keine Ahnung, wie ich sowas in LV realisieren sollte, das einzige, das mir einfällt, wäre eine Lösung mit der cmd- Zeilen funktion.
Und das stelle ich mir recht komplex vor
.
Oder gibt es einen komplett anderen Lösungsansatz, den ich noch nicht gesehen habe?
Grüße Alex