LabVIEWForum.de - Error bei Laden File Datalog nach geändertem Cluster

LabVIEWForum.de

Normale Version: Error bei Laden File Datalog nach geändertem Cluster
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

hat mir evtl. jemand ein Tip wie man folgendes Problem lösen kann:

Über die File Datalog Funktionen wird ein Cluster gespeichert bzw. geladen.
Dieses Cluster beinhaltet verschiedene Elemente verschiedener Datentypen.
Nach dem ich jedoch das Cluster geändert habe (z.B. ein Element hinzugfügt wurde), kann ich eine vorherige gespeicherte
Datei nicht mehr laden. Ich denke weil sich die Anzahl der Elemente im Cluster geändert hat.

Das Problem ist, das dies nicht auftreten darf. Wenn das Programm in Zukunft erweitert wird u. Element im Cluster hinzugefügt
werden, so sind die älteren gespeichert Files nicht mehr zu laden.

Wie könnte man diese Problem umgehen?

MfG
Tobias
Hallo GT123,
eine Variante wäre: bevor die Änderung/Erweiterung des Clusters stattfindet, die Datei in ein Array zu puffern. Dann die Clusteranpassung vornehmen und dann die Protokolldatei neu mit den Änderungen schreiben. Damit sich der Anpassungsaufwand in Grenzen hält, könnte eine Typendef. zum Einsatz kommen.

viel Erfolg
Hallo ImExPorty,

aha,
also eine Typendef. verwende ich bereits für das Cluster. Jedoch keine strict type def. da man dann keine Elemente ausblenden o. Position verschieben könnte.
Datei in Array puffern?
Und neu mit Änderungen speichern: wie will man das definieren damit nur das geänderte hinzugespeichert wird?

Können Sie evtl. ein simples Beispiel mit einem Cluster erstellen.
Das wäre super Big Grin

Schon im Vorraus Vielen Dank für Ihre Bemühungen

GT123
' schrieb:Jedoch keine strict type def. da man dann keine Elemente ausblenden o. Position verschieben könnte.
Das spielt zu erst einmal keine Rolle.

Zum Ändern den Cluster auf strict umstellen, Änderungen vornehmen (Achtung: Die Reihenfolge nach Möglichkeit nicht ändern), clt speichern und alles neu durchkompilieren (aber richtig). Dadurch passen sich alle Cluster-Instanzen an. Dann Typdefinition wieder öffnen und auf nur typdef umstellen. Und wieder allles durchkompilieren. Anders bingt es irgendwie nichts.

Achja, die Sache mit dem Speichern: Bei den Daten gehe ich jetzt mal von einzelnen Datensätzen aus, nicht von Massendaten. Für solche (z.B. Konfigurationsdaten etc.) verwende ich Ini-Files. Kann man den Dateninhalt extern manipulieren. Das Hinzufügen von Elementen ist unproblemetisch. Inis machen halt etwas Aufwand.
Habe es eben probiert:

-in Automatisierung: Cluster mit 42 Element gespeichert (mit File Datalog)
-Cluster um 1 Element erhöht, d.h. 1 Schalter dazu -> 43 Elemente, ctl gespeichert
-in Automatisierung: Clustereinstellung mit 42 Elementen wieder verucht zu laden (mit File Datalog)
-geht nicht, wieder Fehlermeldung siehe Bild.

Weiss heisst richtig durchkompilieren, das wird doch automatisch beim starten von LabVIEW durchgeführt?
Oder kann man in dem Projektexplorer noch speziell etwas tun?

Anbei noch ein Screenshot meines Clusters.

Das mit Konfigurationsdateien u. Schlüsseln vergeben, das hatte ich auch schon einmal versucht an einem anderen Projekt.
Dort entstanden glaube ich Probleme beim speichern von Schaltern (bool), Arrays, Cluster.... wenn dies überhaupt funktionieren kann.

MfG
GT123
Hallo GT123,
mein Vorschlag war von der Reihenfolge der Abarbeitung etwas anders gedacht:

1. Einlesen der aktuellen Datalog-Datei mit der "alten" Clusterdefinition in ein ClusterArray.
2. sinnvolle Anpassung der Typdef.
3. erneutes speichern des nun erweiterten ClusterArrays mit der neuen Typendef.

viel Erfolg
' schrieb:-in Automatisierung: Cluster mit 42 Element gespeichert (mit File Datalog)
-Cluster um 1 Element erhöht, d.h. 1 Schalter dazu -> 43 Elemente, ctl gespeichert
-in Automatisierung: Clustereinstellung mit 42 Elementen wieder verucht zu laden (mit File Datalog)
-geht nicht, wieder Fehlermeldung siehe Bild.
Das ist doch vollkommen logisch und normal! Du hast Einstellungen eines Elements in einem File (in diesem Fall binär) gespeichert, dann dieses Element geändert, und versucht jetzt wieder die Werte zu laden. Aber die Formate stimmen ja nicht mehr überein. Muss zu einem Fehler führen. Ich weiss nicht, was du da anderes erwartest?!

Die Entwicklungsumgebung merkt sich nicht, wo du welche Werte speichert, um dir dann vielleicht automatisch die Files zu aktualiesieren. Das musst du schon selber programmieren. Oder in der Entwicklungsphase damit leben, dass es Fehlermeldungen gibt.

Gruß, Jens
' schrieb:-geht nicht, wieder Fehlermeldung siehe Bild.
Wenn du binär speicherst (was Vor- und Nachteile hat) ist das auch richtig so. Siehe auch Anmerkung von Jens G. Willst du das Binärspeichern beibehalten, musst du dirch an die Vorgehensweise wie von ImExPorty beschrieben halten.

Zitat:Weiss heisst richtig durchkompilieren, das wird doch automatisch beim starten von LabVIEW durchgeführt?
Die Sache ist insofern kompliziert, als dass du ja sehr viele SubVIs haben kannst, die Instanzen der (strikten) Typdefinition haben. Änderst du jetzt z.B. nur das ctl-File, heißt das noch lange nicht, dass alle Instanzen in allen SubVIs angepasst werden. Es gibt nämlich Möglichkeiten der Handhabung von LV (z.B. wenn man ohne Projektmanager arbeitet) da treten dann plötzlich ganz komische "Inkonsistenzen" auf. "richtig durchkompilieren" kann auch heißen "LV schließen und MainVI öffen" - was dann den von dir erwähnten Effetkt "das wird doch automatisch beim starten von LabVIEW durchgeführt" hat.

Zitat:Anbei noch ein Screenshot meines Clusters.
Das ist halt ein großer Datensatz. Da ist halt Binärspeichern schöner als Inispeichern. Mit den Nachteilen, die nach dem ImExPort'schen Vorgehen umgangen werden können.

Zitat:Das mit Konfigurationsdateien u. Schlüsseln vergeben, das hatte ich auch schon einmal versucht an einem anderen Projekt.
Dort entstanden glaube ich Probleme beim speichern von Schaltern (bool), Arrays, Cluster.... wenn dies überhaupt funktionieren kann.
Also mein aktuellen Datensatz kann sich mit deinem hier gezeigten ohne Weiteres messen. :cool:Ich hab noch nie Probleme mit Inis gehabt. Inis haben halt den Nachteil, dass sie manchmal recht aufwendig werden können.
Zitat:1. Einlesen der aktuellen Datalog-Datei mit der "alten" Clusterdefinition in ein ClusterArray.
2. sinnvolle Anpassung der Typdef.
3. erneutes speichern des nun erweiterten ClusterArrays mit der neuen Typendef.

Hallo ImExPorty,

ich habe mich schon eine Weile mit dieser Problematik auseinandergesetzt.
Wie soll dies realisiert werden: Datei in ClusterArray laden u. danach wieder speichern.

Kann mir hierzu jemand noch einen Tipp oder ein Beispiel geben.

GT123
Referenz-URLs