LabVIEWForum.de - Problem bei TDMS lesen

LabVIEWForum.de

Normale Version: Problem bei TDMS lesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

im angehängten VI erstelle oder ersetze ich eine TDMS-Datei, schreibe mit einer for-Schleife die Zahlen 0 ... 9 rein und schließe sie wieder.
Im Anschluss defragmentiere ich die Datei.

Nun zum Problem:

Im false-Fall öffne und schließe ich die TDMS 9 mal innerhalb der for-Schleife und lese jeweils den Wert aus.
[attachment=45339]
Das funktioniert einwandfrei und führt zu dem Ergebnis
[attachment=45340]

Im true-Fall öffne und schließe ich die TMDS jeweils außerhalb der for-Schleife, also nur einmal, und will mit der Referenz den Wert in der for-Schleife 9 mal auslesen.
[attachment=45338]
Dies führt allerdings zu dem Fehler
[attachment=45341]
Da ich mir aber mit dem true-Fall erhebliche Zeitersparnisse erhoffe, tendiere ich zu dieser Vorgehensweise.

Ich kann auch nicht auf Arrays oder Text-Dateien ausweichen, da ich es mit großen Datenmengen zu tun habe und auf einzelne Kanäle zugreifen muss.

Kann sich jemand die Ursache für diesen Fehler erklären und weiß eine Maßnahme?


Gruß

Neska
Hallo Neska,

das sagt doch schon die Meldung EOF.
Du versuchst, am Ende der Datei weiterzulesen, d.h. der Lesepointer steht am Ende und du möchtest weiterlesen - da ist aber nix mehr zu lesen.

Also entweder du nimmst den automatischen Fehlerbehandler raus (VI-Einstellungen) oder du sorgst dafür, dass du nix mehr liest, wenn das Dateiende erreicht ist.


Gruß, Marko
Sehr hilfreicher Beitrag...

Fehlerbehandler rausnehmen hat nichts geändert.
Und nichts mehr lesen auch sehr sinnvoll...

Kann man den Lesepointer nach einem Lesen der TDMS auch wieder auf den Anfang setzen, ohne dass man diese schließt und wieder öffnet?
bist du dir sicher, dass du auch den automatischen Fehlerbehandler deaktiviert hast?

ansonsten speicher mal <= 2011.
2010er
Lösende Maßnahme:
Vergib mal einen Gruppennamen, bzw. falls nicht, schließe "Untitled" beim Lesen an.
Das fehlt dir nämlich zur vollständigen Lokalisierung der Messwerte in der tdms-Datei.

Gruß, Jens
@Jens
ist das ein Bug in LV oder kannst du dir dieses Verhalten erklären. Ich hätte ja glatt gedacht, LV vergibt selbst das untitled, wenn nötig.


@Neska
Sorry für meine erste pampige Antwort - da waren wohl die Finger schneller, als das HirnCool


Gruß, Marko
Scheinbar ist das ein Bug.
Top, Jens. So gehts.
Es ist eine deutliche Verbesserung hinsichtlich der Laufzeit bemerkbar.
Allerdings, wenn man es mit Arrays laufen lässt, also einfach in ein Array Schreiben und ausgeben lassen, ist es mit TDMS immernoch etwa um den Faktor 10000 langsamer...
Mir ist schon klar, dass es schneller geht, wenn man direkt auf dem Arbeitsspeicher schreibt und liest, als auf der Festplatte, aber so gravierend?

Gibt es noch andere Möglichkeiten, wenn die Datenmengen die Arbeit mit Arrays untersagen?


Gruß

Neska
Festplattenzugriffe sind langsam. Typischerweise im einstelligen ms-Bereich. Wenn du es aufgrund der Datenmenge nicht komplett im Arbeitsspeicher halten kannst dann könntest du es vielleicht auf die relevanten Bereiche reduzieren oder ggf. eine SSD verwenden. Diese haben erheblich kürzere Zugriffszeiten.
Seiten: 1 2
Referenz-URLs