![]() |
Array Binär speichern & laden - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO) +---- Thema: Array Binär speichern & laden (/Thread-Array-Binaer-speichern-laden) Seiten: 1 2 |
Array Binär speichern & laden - stud_lab - 28.07.2008 07:55 Guten Morgen, ich möchte ein Array speichern und auch wieder laden können. Daher habe ich mit Hilfe der Funktionen "Write Binary File" und "Read Binary File" aus der LabVIEW-Hilfe mir eine solche Möglichkeit gebastelt. Das Speichern funktioniert wunderbar, allerdings taucht bei der Funktion ein Problem auf. LabVIEW sagt mir, dass die Dimensionen der zu landenden Datei und des angegebenen Dateiformats verschieden sind. Das Dateiformat ist laut LV in der Dimension 1, die angebenen Datei in Dimension 2. Verstehe das nicht, da ich die Konstante des Dateiformats aus der angebebenen Datei erstellt habe?! Anbei die Bilder meiner Funktionen. Version LabVIEW 8.5 Danke für eure Hilfe und Antworten! Gruß stud Array Binär speichern & laden - Y-P - 28.07.2008 08:21 Lad' mal Dein VI hoch.... Ich möchte nicht alles nachbauen und auf die Schnelle sehe ich nicht, an was das liegt. Gruß Markus Array Binär speichern & laden - stud_lab - 28.07.2008 08:34 Hallo Markus, anbei eine Kurzversion meines VIs. Gruß stud LV Version 8.5 [attachment=13704] ' schrieb:Lad' mal Dein VI hoch.... Array Binär speichern & laden - Y-P - 28.07.2008 08:45 Wenn Du das VI mit der File-Size und den "Quotient & Remainder" weglässt, dann klappt's. Allerdings kriegst Du dann den Fehler 116 beim Auslesen. Wieso speicherst Du eigentlich die Elemente so kompliziert ab? Gruß Markus Array Binär speichern & laden - stud_lab - 28.07.2008 08:56 Hallo Markus, kann ich den Fehler 116 auch irgendwie abstellen? Ich kenne mich mit den Speichermöglichkeiten nicht aus, da ich nun das erste Mal sowas mache. Ich möchte halt ein Array komplett abspeichern und auch wieder laden können. Im Array sind die Informationen komplett enthalten und nach dem Laden ist es wichtig, dass das Array genauso wieder aufgebaut werden kann. Habe hier im Forum schon nach besseren Sachen gesucht (z.B. diese Speicherung als *.xml), nur habe ich da immer Probleme bekommen, da ich ein Array speichern will. Daher habe ich nun einfach mal das Beispiel auf der LV-Hilfe genommen. Für einen eleganteren, einfacheren Lösungsweg wäre ich natürlich dankbar! Gruß stud ' schrieb:Wenn Du das VI mit der File-Size und den "Quotient & Remainder" weglässt, dann klappt's. Allerdings kriegst Du dann den Fehler 116 beim Auslesen. Array Binär speichern & laden - Y-P - 28.07.2008 09:50 So klappt's... [attachment=13705] ![]() Gruß Markus EDIT: Eine andere Alternative findest Du hier. Array Binär speichern & laden - stud_lab - 28.07.2008 10:11 Hi Markus, danke für die schnelle Hilfe! Klappt so super, werde mir aber auch die anderen Möglichkeiten nun mal genauer Anschauen. Einen schönen Tag noch! Gruß stud ' schrieb:So klappt's... Array Binär speichern & laden - Lucki - 28.07.2008 13:16 ' schrieb:werde mir aber auch die anderen Möglichkeiten nun mal genauer Anschauen.Schau Dir mal in diesem VI das Speichern und Laden das binären Daten an. Allerdings handelt es sich hier nur um ein 1D-Array mit hierarchischen Elementinhalten, du hast hingegen ein ebensolches 2D Array. Habe aber das Gefühl, daß es mit einer leichten Modifikation - ja, aber welche?? - funktionieren könnte. Array Binär speichern & laden - Iceman810 - 28.07.2008 16:46 ' schrieb:Wenn Du das VI mit der File-Size und den "Quotient & Remainder" weglässt, dann klappt's. Allerdings kriegst Du dann den Fehler 116 beim Auslesen. ...Zunächst hierzu: wenn man am Eingang 'Count (1)' vom 'Read From Binary File' nichts anklemmt, liest er ja nur ein Element des Datentyps, den man am 'data type' Eingang definiert hat. Das wäre dann ja korrekt, da es sich bei beidem um 2D-Arrays eines Clusters handelt. Der Fehler 116 entsteht dadurch, dass die Lesefunktion nicht weiss wieviele Elemente das 2D-Array enthält. Das hat natürlich nichts mit dem 'Count' - Eingang beim Lesen zu tun, sondern mit der boolschen Konstante beim Schreiben am Eingang 'prepend array or string size? (T)', die auf FALSE steht. Hierdurch wird die Größe des Arrays nicht mit in der Datei abgelegt ( würde ich auch in den allermeisten Fällen genauso tun). Die Konstante mal auf TRUE setzen und schon gehts. ' schrieb:... ich möchte ein Array speichern und auch wieder laden können. Daher habe ich mit Hilfe der Funktionen "Write Binary File" und "Read Binary File" aus der LabVIEW-Hilfe mir eine solche Möglichkeit gebastelt. Das Speichern funktioniert wunderbar, allerdings taucht bei der Funktion ein Problem auf. LabVIEW sagt mir, dass die Dimensionen der zu landenden Datei und des angegebenen Dateiformats verschieden sind. Das Dateiformat ist laut LV in der Dimension 1, die angebenen Datei in Dimension 2. Verstehe das nicht, da ich die Konstante des Dateiformats aus der angebebenen Datei erstellt habe?! ...Das Beispiel sieht soweit ja nicht schlecht aus ^_^ Eine Lösung hat Y-P ja schon aufgezeigt (s.o.) und jetzt weisst Du auch, wie sich der Fehler 116 vermeiden lässt. Eine andere Lösung auf Deiner Grundlage wäre Folgendes: Wenn am 'data type' Eingang beim 'Read From Binary File' - VI nicht das 2D-Array des Clusters sondern nur der Cluster selbst angeklemmt wird, wird mit jedem 'Count' ein Cluster ausgelesen. D.h., wenn keine Zahl am Count-Eingang angeklemmt ist, kommt genau der angeklemmte Datentyp auch am Ausgang raus. Hier: ein Cluster! Wenn aber eine Zahl bei 'Count' angeklemmt wird, versucht die Funktion diese Anzahl an Clustern aus der Datei zu lesen und gibt diese als 1D-Array von Clustern zurück. Dieses 1D-Array kann jetzt natürlich mit geeigneten Array-Funktionen wieder in die verlangte Form (2D) umgewandelt werden ( z.B. 'Reshape Array' ![]() Einzige weitere Schwierigkeit: wie bekomme ich die korrekte Zahl an den Count-Eingang. Entweder man weiss genau, wieviel man hineingeschrieben hat oder man liest so lange einzelne Counts und bastelt die aneinander, bis ein Fehler aus der Funktion zurückkommt. Oder man klemmt eine mehr als genügend grosse Zahl an und bekommt alle gespeicherten Cluster als 1D-Array zurück und lebt damit, dass auf jeden Fall der Fehler 4 'End of file' aus dem 'Read From Binary File' - VI herauskommt. Durchaus nichts ungewöhnliches, da sich mit Error-Clustern ja hervorragend arbeiten lässt ![]() Ich hoffe, das hat ein wenig weitergeholfen. Array Binär speichern & laden - stud_lab - 30.07.2008 12:20 Hallo Iceman, antworte zwar etwas spät, habe aber vorher nicht gesehen, dass du noch was dazu geschrieben hast. Habe nun die ganze Sache besser verstanden, danke! Werde zwar bei dem Vorschlag von Y-P bleiben, da der Weg sehr kurz und in meinen Augen auch für mich ausreicht. Das Dateiformat ist mir mehr oder wenig egal. Aber nun weis ich wengistens wie der Fehler 116 zu Stande kam und behoben werden kann. Danke! Gruß stud |