Binäre Dateien Auslesen (Little Endian) - 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: Binäre Dateien Auslesen (Little Endian) (/Thread-Binaere-Dateien-Auslesen-Little-Endian) |
Binäre Dateien Auslesen (Little Endian) - ismiregal - 20.10.2009 14:38 Hallo LabVIEW-Forum, Ich versuche gerade einen binären String (float 32 – Little Endian) mit dem Baustein „Unflatten From String“ auszulesen. Obwohl ich den Datentyp und die Byte-Reihenfolge meiner Meinung nach korrekt angegeben habe bekomme ich nicht die gewünschten Werte. Darüberhinaus ist auffällig, dass die Anzahl an Werten die ich über LabVIEW einlese ziemlich genau um den Faktor 10 größer ist als die Anzahl an Werten die ich erwarte. Im Anhang befinden sich die Roh-Daten (binary.txt) die mit MATLAB erstellten Soll-Daten (header soll.txt und data soll.txt) sowie die falsch über mein VI eingelesenen Daten (data+header ist.txt). Ich freue mich über jeden Hinweis! Gruß Stefan [attachment=21861] [attachment=21857] [attachment=21858] [attachment=21859] [attachment=21860] Binäre Dateien Auslesen (Little Endian) - IchSelbst - 20.10.2009 19:23 ' schrieb:Obwohl ich den Datentyp und die Byte-Reihenfolge meiner Meinung nach korrekt angegeben habe bekomme ich nicht die gewünschten Werte.Wie sehen denn die gewünschten Werte aus? So wie in der Datei header_soll? Die Werte in der Datei binary.txt sind doch genau so wie in header_soll angegeben. Man muss natürlich beachten, dass die Werte in header_soll mit 10000 multipliziert werden müssen, um auf die ersten Werte aus binary.txt zu kommen. Im übrigen ist der Inhalt des zu konvertierenden Strings im VI anders als der des Files binary.txt. Im String wurden alle binären Nuller durch Spaces ersetzt. Das führt zu Wertefehlern. Zitat:Darüberhinaus ist auffällig, dass die Anzahl an Werten die ich über LabVIEW einlese ziemlich genau um den Faktor 10 größer ist als die Anzahl an Werten die ich erwarte.Dazu kann ich vorerst nichts sagen. Binäre Dateien Auslesen (Little Endian) - ismiregal - 20.10.2009 22:36 Hallo IchSelbst! Die Tatsache, dass der Inhalt des zu konvertierenden Strings von dem Inhalt des Binary.txt abweicht ist mir nicht aufgefallen; vielen Dank für den Hinweis! Ich habe den Fehler behoben in dem ich den String direkt aus dem File ausgelesen habe und nicht wie zuvor über die Zwischenablage eingefügt habe. Um auf deine Frage zu antworten: Ja die gewünschten Werte sehen so aus wie in den Dateien „header soll.txt“ zuzüglich der Werte im „data soll.txt“ (sie hätten genau so gut in einem Textdokument stehen können; Hoffe die Verwirrung ist nicht zu groß) Diese Daten wurden unter Verwendung von MATLAB generiert und Bilden den von mir unter Verwendung von LabVIEW angestrebten Status. Die von meinem VI ausgelesenen Werte haben sich durch deine Anmerkung mit den Spaces zwar verändert, sie decken sich jedoch trotzdem nicht mit den durch MATLAB ausgegebenen korrekten Werten. Auch der Faktor 10 bezüglich der Anzahl der Werte ist noch vorhanden (anstelle von ca. 3200 erwarteten Werten werden von meinem VI 32000 ausgegeben) Im Anhang befindet sich das geänderte VI mit dem nun korrekten Binary String und dem von ihm ausgegeben immer noch fehlerhaften Textdokument „2. data + header ist.txt“ Kann die Sache mit dem Faktor 10 vielleicht in irgendeiner Weise mit der Bytelänge zu tun haben? Habe im Examplefinder gesehen, dass dort zwischen 2 und 4 Byte unterschieden wird. Erstmal vielen Dank für die Antwort! Gruß Stefan [attachment=21875] [attachment=21876] Binäre Dateien Auslesen (Little Endian) - SeBa - 21.10.2009 07:35 Moin, also wie IchSelbst ja schon gesagt hat, steht der Faktor mit dem du die Header Werte multiplizieren musst in der ersten Headerzeile. --> Für mich siehts so aus, also ob LV das dann auch macht. Clever Header.txt hat 96 Zeilen, die ersten zwei beschreiben den Faktor + Leerzeile = 94 Datenzeilen Dann kommen die 3200 Daten. Macht 3294 Zeilen / Arrayeinträge. Wenn du dein binary.txt mit read from binary file (Anzahl: -1 = ganze Datei) ausliest, ist das Array 32940 Einträge groß. --> Faktor 10. Schließt du bei Anzahl jetzt 4*3294 an, ist dein Array 3294 Einträge groß... --> Bist du sicher, dass die Daten in binary.txt auch nur einmal drinstehn und nicht zehnmal ? Gruß SeBa Binäre Dateien Auslesen (Little Endian) - ismiregal - 21.10.2009 17:37 Hallo SeBa, Vielen Dank für deine Antwort! Ein Blick an die 3295te Stelle verriet, dass dort erneut der Header beginnt; d.h. es sind tatsächlich einfach 10 Datensätze im Binary.txt vorhanden. Also vielen Dank für die Aufklärung Gruß Stefan Binäre Dateien Auslesen (Little Endian) - SeBa - 21.10.2009 19:02 Gerne doch. |