INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Binärdateien schreiben/lesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

28.10.2010, 20:14
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Binärdateien schreiben/lesen
Hi zusammen,

ich habe heute Stunden vergebens verbracht, einen Fehler zu suchen, der beim Auslesen von Binärdateien auftritt.
Das Projekt ist zu umfangreich, um es anzuhängen und beim Versuch, nur den relevanten Code zu extrahieren, funktionierte (leider) alles.

Ich schreibe einen Cluster über "Binärdatei schreiben" in eine Binärdatei (Windows-PC). Auf einem RT-Target lese ich das ganze über "Binärdatei lesen" wieder aus.
Das Ganze klappt leider nicht richtig.
Manche Werte werden korrekt ausgelesen, manche komplett falsch und ich weiß nicht mal ansatzweise, wonach ich suchen soll.

Eine geschriebene 1, wird z.T. etwas wie 1,22434E-385 (die genaue Zahl weiß ich nicht mehr, aber der Exponent stimmt glaub).

Eine 1,234 im Cluster (mehrere numerische Felder) war z.T. eine 1,234, aber in anderen Feldern eine 1072938614 oder -1,76176E+42.

Das ist echt frustrierend.

Habt ihr eine Idee, wo ich mit der Fehlersuche anfangen könnte?

Der Cluster ist eine strikte Typendefinition. Und mehr als den "popeligen" Code (lesen + schreiben) mache ich eigentlich nicht. Der Modus (z.B. Big Endian) ist auch überall der gleiche.
Wie kann es denn dazu kommen, dass die Werte so komisch interpretiert werden? Rundungsfehler, Überläufe o.ä. sind beim Schreiben/Lesen auszuschließen.

Schreibe ich die Binärdatei auf dem RT-System und versuche sie unter Windows zu lesen, kommt irgendein EOF-Fehler.

Hat jemand von euch eine Idee, was hier schief laufen könnte?Sad

Lese ich die unter Windows geschriebene Datei unter Windows aus, ist dort alles ok.
Beide Anwendungen sind mit LV 2010 programmiert.

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.10.2010, 21:34
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Binärdateien schreiben/lesen
Poste doch mal den Cluster als VI. Ich nehme an, daß der Cluster mindestens 1 Element veränderlicher Länge (String oder Array) enthält, und dann wirds kompliziert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2010, 21:41 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2010 21:42 von Matze.)
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Binärdateien schreiben/lesen
Es enthält mehrere Arrays, ja. Doch das ist eigentlich kein Problem. Ich habe den Cluster in einem neuen Projekt binär gespeichert und am RT-Target geladen - null Probleme.

Den Cluster habe ich grad nicht hier, aber wie gesagt, das funktioniert in einem Mini-Projekt mit diesem Cluster einwandfrei.
Ich vermute, in der Binärdatei ist eine Art Mini-Header vor dem Array angestellt, das die länge o.ä. beinhaltet. Auf jedenfall funktioniert das ohne manuelle Veränderungen mit dem Standard-VI.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 00:02
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Binärdateien schreiben/lesen
Oder enthält dein Cluster Booleans? Auch da gab es Änderungen zwischen den LabVIEW-Version, wie das Binär abgespeichert wird. Lies dir am besten die Hilfe zu TypeCast und FlattenToString durch. Vielleicht hast du auch ein Problem mit Big Endian und Little Endian?

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 05:54 (Dieser Beitrag wurde zuletzt bearbeitet: 29.10.2010 05:58 von Matze.)
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Binärdateien schreiben/lesen
' schrieb:Oder enthält dein Cluster Booleans? Auch da gab es Änderungen zwischen den LabVIEW-Version, wie das Binär abgespeichert wird.
' schrieb:Lese ich die unter Windows geschriebene Datei unter Windows aus, ist dort alles ok.
Beide Anwendungen sind mit LV 2010 programmiert.

' schrieb:Vielleicht hast du auch ein Problem mit Big Endian und Little Endian?
' schrieb:Der Modus (z.B. Big Endian) ist auch überall der gleiche.

Und nein, booleans sind keine enthalten.
Es ist ein Cluster, das ein Array of Cluster enthält. In den inneren Clustern sind nur numerische Anzeigewerte und Enums.
Und wie gesagt, wenn ich das unter Windows schreibe und lese geht alles. SObald ich die Daten zwischen Windows und RT-System austauschen möchte, funktioniert es nicht mehr.

Ich habe zum Schreiben/Lesen auch ein SubVI geschrieben, das das Binär-VI (File I/O) und dessen Einstellungen wie Big Endian enthält, um sicherzugehen, dass es überall gleich ist. Selbst mit meinen SubVIs tritt das Problem auf.
Ich weiß gar nicht, was ich da heute noch machen könnte und ohne das, komme ich nicht weiter.

Ein Demo-Projekt kann ich leider auch nicht an NI schicken, da bei einem kleinen, neuen Projekt, alles tut.Sad

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 14:26
Beitrag #6

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Binärdateien schreiben/lesen
Also das Problem war folgendes:

Ich bin her gegangen und habe für die Win- und RT-Anwendung je ein eigenständiges Verzeichnis erstellt.
Die strikte Typendefinition der Binärdatei habe ich als Ctl-Datei doppelt gehabt (in jedem Verzeichnis einmal).

In einem Fall hat das funktioniert, im anderen nicht, obwohl die Dateien identisch waren.
Ich habe sie nun in ein Verzeichnis gelegt und binde die Ctl-Datei jeweils von dort ein. Nun geht es.

Wieso es allerdings mit 2 physikalischen Dateien nicht ging, ist mir ein Rätsel.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 16:00
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Binärdateien schreiben/lesen
Um dieses Rätsel zu lösen, müsstest du die ctl-Dateien einmal hochladen.Glas2

Vielleicht hast du unbewusst einmal die Reihenfolge innerhalb des einen Clusters getauscht, oder, oder, oder...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 18:15
Beitrag #8

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Binärdateien schreiben/lesen
Ne, hab sie per Copy&Paste sogar ersetzt. Die waren daher identisch.

Also ich verstehe das nicht und merke mir einfach, dass ich nicht mehrere Dateien verwenden sollte.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Dateien lesen und schreiben stoa 4 4.863 17.03.2020 11:50
Letzter Beitrag: stoa
  String Array in bin schreiben und lesen EOF hansi9990 9 9.584 31.08.2016 10:56
Letzter Beitrag: hansi9990
  String lesen, nach vorgaben löschen und in Array schreiben nova.08 6 7.972 18.09.2014 13:31
Letzter Beitrag: GerdW
  Viele Dateien lesen und schreiben Kügelchen 1 4.333 19.06.2013 09:13
Letzter Beitrag: Achim
  Datei lesen --> schreiben --> Unterschied DrHoas 2 4.847 14.06.2013 12:28
Letzter Beitrag: DrHoas
  CSV Datei, lesen + schreiben, strings, double Fireraiser 3 11.916 02.05.2013 14:49
Letzter Beitrag: Fireraiser

Gehe zu: