LabVIEWForum.de
Dateiposition festlegen - 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: Dateiposition festlegen (/Thread-Dateiposition-festlegen)



Dateiposition festlegen - dimitri84 - 28.10.2009 12:09

Hallo zusammen,

ich will ein Pendant zu dem VI schreiben, dass mir hier gezeigt worden ist. Kurz: ich will in großen Messdateien (bis zu 300 MB *.lvm) beliebig hin und her scrollen können ... dazu wird eben nur ein bestimmter Bereich der Messdaten gelesen. Für tdms Dateien klappt das wunderbar, weil man beim "TDMS: Lesen" VI den Offset und die Anzahl (der zu lesenden Messwerte) in "Samples" angibt. Wenn ich jetzt das Gleiche für *.lvm (ascii) Dateien nachbauen möchte muss ich mit dem VI "Dateiposition festlegen" vorlieb nehmen. Dort wird der Offset allerdings in Byte angegeben ... an sich nicht schlimm aber meine Zeilen sind nicht immer gleich groß, da es sich um ein bipolares Signal handelt: je nachdem wieviele der 4 Messwerte negativ sind, schwankt die Zeilegröße von 49 bis 52 Bytes. Wenn ich also in Zeile X möchte weiß ich nicht wieviele Bytes zu überspringen sind...

Gibt es eine Möglichkeit durch die angabe der Zeilennummer in einer ascii-Datei zu springen?

Oder muss ich schon beim Abspeichern der Daten das Problem anpacken? (Ich speichere meine Daten mit der Express VI ab.)

Beispieldatei: [attachment=22041]


Gruß dimitri


Dateiposition festlegen - SeBa - 28.10.2009 13:35

Hi,

du kannst die Datei zeilenweise einlesen und die Anzahl der Bytes/Zeile in einem Array ablegen. Dann kannst du mit der Angabe der Zeilennummer die du anzeigen möchtest, die Summe der Bytes der davor liegenden Zeilen berechnen und den Dateizeiger an die gewünschte Position setzen.

Hier ein Beispiel für eine Zeile:
[attachment=22047]
[attachment=22048]

Willst du mehrere Zeilen ab dem Dateizeiger ausgeben, musst du die entsprechende Anzahl der Zeichen od. Zeilen an den Anzahl-Eingang der "Textdatei lesen" geben.

Gruß SeBa


Dateiposition festlegen - dimitri84 - 28.10.2009 14:37

Hallo SeBa,

über diese Variante habe ich auch nachgedacht. Klasse dass du es direkt auch umgesetzt hast! Ich muss mal testen wie lange das anlegen des arrays dauert (bei großen Messdateien) und mit was für einer Latenz die anzuzeigenden Daten dargestellt werden.

Je nach dem tendiere ich dazu einfach einen Konverter (lvm zu tdms) einzubauen. Dann hat man zwar einmal 'ne lange Rechenzeit ... danach aber den Komfort der Binärdateien.

Vielen Dank für die Mühe. Gruß dimitri


Dateiposition festlegen - SeBa - 28.10.2009 14:49

' schrieb:Je nach dem tendiere ich dazu einfach einen Konverter (lvm zu tdms) einzubauen. Dann hat man zwar einmal 'ne lange Rechenzeit ... danach aber den Komfort der Binärdateien.

Dann könnte der letzte Post für dich interessant sein: Guckst du hier...

Gruß SeBa


Dateiposition festlegen - dimitri84 - 28.10.2009 15:49

Danke für den Hinweis. Das VI von Lucki ist durchaus interessant in meinem Zusammenhang. Prinzipiell hatte ich aber beim Konvertieren nie Probleme mit dem Speicher, da das Express VI "Messwert aus Datei lesen" sowieso von Hause aus segmentweise ausliest und ich auch dementsprechend die Daten auch segmentweise speichere.

Lohnt sich denn der Weg über die primitives von der Perfomance her?

Bringt es viel, wenn ich die Daten "selbst auslese" und die Zahlenarrays "selbst" in Waveform wandel?


So hat's auch mit den größten Dateien funktioniert:
[attachment=22057]