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äre Dateien Auslesen (Little Endian)



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!

20.10.2009, 14:38
Beitrag #1

ismiregal Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2009

8.5.1
-
en

21339
Deutschland
Binäre Dateien Auslesen (Little Endian)
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

Lv85_img

Sonstige .vi  Test_Little_Endian.vi (Größe: 107,56 KB / Downloads: 281)


Sonstige .txt  binary.txt (Größe: 128,67 KB / Downloads: 285)


Sonstige .txt  header_soll.txt (Größe: 1,12 KB / Downloads: 296)


Sonstige .txt  data_soll.txt (Größe: 37,5 KB / Downloads: 710)


Sonstige .txt  data___header_ist.txt (Größe: 322,12 KB / Downloads: 333)

"Ceterum censeo Carthaginem esse delendam!"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.10.2009, 19:23
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Binäre Dateien Auslesen (Little Endian)
' 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.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.10.2009, 22:36
Beitrag #3

ismiregal Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2009

8.5.1
-
en

21339
Deutschland
Binäre Dateien Auslesen (Little Endian)
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

Lv85_img

Sonstige .vi  Test_Little_Endian.vi (Größe: 108,01 KB / Downloads: 243)


Sonstige .txt  2._data___header_ist.txt (Größe: 322,12 KB / Downloads: 358)

"Ceterum censeo Carthaginem esse delendam!"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2009, 07:35
Beitrag #4

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Binäre Dateien Auslesen (Little Endian)
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. CleverBig Grin
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

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2009, 17:37
Beitrag #5

ismiregal Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2009

8.5.1
-
en

21339
Deutschland
Binäre Dateien Auslesen (Little Endian)
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 Rolleyes
Gruß Stefan

"Ceterum censeo Carthaginem esse delendam!"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2009, 19:02
Beitrag #6

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Binäre Dateien Auslesen (Little Endian)
Gerne doch.

Metal

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Binäre Datei nach Stromausfall leer M.M.H. 6 7.008 16.11.2021 12:52
Letzter Beitrag: GerdW
  Binäre Datei kürzen M Nussbaumer 2 4.757 13.05.2011 09:49
Letzter Beitrag: M Nussbaumer
  Alle Dateien im Ordner auslesen holistic 1 11.433 28.03.2011 20:17
Letzter Beitrag: A.Berndsen
  Binäre Datei Lesen krys 5 5.813 06.02.2008 12:20
Letzter Beitrag: jg
  Auslesen von großen Dateien über Netzwerk? xaggi 1 3.913 23.08.2007 13:11
Letzter Beitrag: Ydna
  Auslesen von binären Dateien Falk 4 5.500 31.07.2007 21:06
Letzter Beitrag: Falk

Gehe zu: