LabVIEWForum.de - Größe von noch nicht fertig erstellter TDMS bestimmen

LabVIEWForum.de

Normale Version: Größe von noch nicht fertig erstellter TDMS bestimmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallöchen mit meinem cRIO nehme ich Messwerte imFPGA Modus auf und speichere diese in einer TDMS nach diesem Schema: http://www.ni.com/white-paper/11198/de/

Nun möchte ich in Abhängigkeit der Dateigröße der TDMS eine neue Datei beginnen.
Eine ähnliches Problem wird hier http://www.labviewforum.de/Thread-TDMS-i...n-anfangen schon gelöst.
Allerdings ist die Bedingung für den Beginn einer neuen Datei hier der Schleifenindex.
Anstatt diesen zu verwenden suche ich nach einer Möglichkeit die Größe einer Datei vor dem "TDMS Close" zu bestimmen. Mit get File Size kann man leider nur Dateigrößen bestimmen, bei denen die "Dateibildung" schon abgeschlossen ist.

Gibt es hierfür eine Lösung?

Über die Größe des freien Speichers des cRIO zu gehen ist bei mir nicht möglich, da neben dieser Aufgabe weitere Daten entstehen und andere wieder gelöscht werden.
Die Größe einer TDMS-Datei vorherzusagen, ist ein schwieriges Unterfangen, da neben den eigentlichen Daten auch eine ganze Menge Overhead wie Kanalnamen, Attribute etc. pp. geschrieben wird. Die Größe hängt auch davon ab, ob z.B. nur Einzelwerte oder immer wieder gesamte Arrays/Waveforms geschrieben werden. Jeder Schreibvorgang erzeugt weiteren Overhead.

Führt man am Ende nach dem Schließen der Datei noch ein TDMS Defragment aus, wird die Dateigröße in der Regel danach deutlich kleiner ausfallen.

Entgegen deiner Aussage müsste es trotzdem möglich sein, immer wieder per Filesize oder "File/Directory Info" möglich sein, die aktuelle Größe der tdms-Datei zu bestimmen. Es ist möglich, dass du nicht immer die exakte Größe zurückbekommst, da aus eigener Erfahrung das Betriebssystem VxWorks immer nur komplette Blöcke wegschreibt solange die Datei nicht geschlossen ist, aber einen Anhaltspunkt bekommst du auf jeden Fall.

Alternativ musst du einige Versuche machen und ermitteln, wie groß deine TDMS-Dateien nach einer bestimmten Anzahl von Schreibvorgängen ist. Dann kannst du wieder auf die Lösung "Anzahl Schleifendurchgänge" gehen. Gerne werden auch Dateien nach bestimmter Laufzeit (z.B. jede Stunde / jeder Tag) neu angelegt.

Gruß, Jens
Über deinen zweiten Vorschlag habe ich auch schon nach gedacht. Dieser ist dann leider aber nicht so flexibel.

Wenn ich die Größe der noch nicht beendeten Datei mit "Get File Size" herausbekommen möchte, bekomme ich den Fehler 1430 zurück: The path is empty or relative. You must use an absolute path.

Die Größenanzeige bleibt auf Null.
(15.09.2013 22:33 )Mietzekatze schrieb: [ -> ]Über deinen zweiten Vorschlag habe ich auch schon nach gedacht. Dieser ist dann leider aber nicht so flexibel.

Wenn ich die Größe der noch nicht beendeten Datei mit "Get File Size" herausbekommen möchte, bekomme ich den Fehler 1430 zurück: The path is empty or relative. You must use an absolute path.

Die Größenanzeige bleibt auf Null.

Was genau übergibst du an das VI "Get File Size"? Laut Fehlermeldung stimmt da was nicht.

Gruß, Jens
Das übergebe ich ( Anhang). Sollte der aktuelle Pfad der Datei sein.
Hallo Mietze,

dort, wo der rote Kreis gezeichnet ist, erstellst du einen neuen Dateinamen für den Fall, das die Referenz nicht existiert. Und du fragst uns, warum für eine neue Datei, die noch nicht existiert, die Dateigröße Null ausgegeben wird?

Im zweiten Case gibst du den Pfad "D:\x" an die FileSize-Funktion - und wunderst dich, warum ein Verzeichnis die Dateigröße Null hat?

Was sagt Homer? Doh...

Zitat:Sollte der aktuelle Pfad der Datei sein.
Hast du einfach mal rudimentäres Debugging mit Sonden und Highlighting probiert? Dann bräuchtest du nicht im Konjunktiv sprechen, sondern wüßtest Bescheid... Hmm
Hallo Mietzekatze

Ich sehe es genau so wie Gerd... Da hat sich wohl ein Programmierfehler eingeschlichen.

Vor einiger Zeit hatte ich ein Projekt, bei welchem ich die Funktion "Get File Size" verwendet habe, um die Grösse eines offenen TDMS-File auszulesen.
Dies hat funktioniert (allerdings unter Windows).
Gehe davon aus, dass dies unter RT auch geht....

Gruss
Chris
Referenz-URLs