Hallo,
Ich bin zurzeit Diplomand und habe seit kurzem mit LabVIEW zu tun (6.1). Ich soll von einem Lidarmessgerät (Ceilometer) die Messdaten einlesen (NC-Datei). Dazu wurde mir ein Programm gegeben, welches solche Daten einliest, jedoch für ein anderes Lidar bei dem die einzelnen Parameter (Rohdaten, Zeit) anders definiert sind/andere Dimensionen haben. Ich habe nun das Unterprogramm, in dem die Datei eingelesen wird umgeschrieben, so dass die Dimensionen stimmen. Dennoch gibt mir mein Timearray nichts aus und ich weiß nicht warum.
Ich habe die NC-Datei als .txt im Anhang.
Meine Rohdaten sind 2dim. mit Function Prototyp: long nc_get_vara_float(long ncid, long varid, long *start, long *count, float*fp);
Meine Zeit ist 1dim. mit Function Prototyp: long nc_get_var_double(long ncid, long varid, long *length, double *dp);
Woran kann es liegen?
Ich kapier' noch nicht, welche Daten Du aus der Datei möchtest.
Lad' mal Dein Bsp. hoch.
Gruß Markus
Nur als kleiner Tip:
Wenn du das Unterprogramm hast, das fast schon funzt... dann lad es doch mit hoch.
Gruß SeBa
Einlesen möchte ich einmal die Zeit:
double time(time) ;
time:units = "seconds since 1904-01-01 00:00:00.000 00:00" ;
time:long_name = "time UTC" ;
time:axis = "t" ;
Und einmal die Rohdaten:
float beta_raw(time, range) ;
beta_raw:units = "counts" ;
beta_raw:long_name = "lidar backscatter raw datan",
Hier ist das Unterprogramm mit den entsprechenden SubIV und einer Beispieldatei.
Beim Timearray müssten dementsprechend Werte um die 3 milliarden beim Ausführen rauskommen (Zeit seit 01.01.1904). Ist leider nicht so!?
Hab ich vergessen: netcdf.dll
(LV6.1)
Willst du jetzt die Variablendeklaration auslesen, oder die Daten dahinter?
Ich frag nur nach, weil Markus ja schon nach einem Bsp. gefragt hat...
...und ich hätte jetzt mit sowas wie:
"Ich brauche alles was nach 'beta_raw =' steht, bis zum nächsten ';' "
--> beta_raw = 0.05570047, 0.1810265, 1.860396, ...
gerechnet, du schreibst hier aber die Deklaration hin...
Ich glaskugel jetzt mal und empfehle dir deine Datei einzulesen, nach dem Auftreten von 'beta_raw' zu suchen und alles vom '=' bis zum ';' in eine Variable zu schreiben. Dann die Variable nach dem Motto "beim Komma kommt die nächste Zahl" das in ein Array umzuwandeln und zuletzt Zahlen daraus zu zaubern.
Leider hast du nur lv61, da weiß ich nicht welche Funktionen ect. dir zur Verfügung stehen... abgesehen von der Eingangsfrage....
Gruß SeBa
' schrieb:Hier ist das Unterprogramm mit den entsprechenden SubIV und einer Beispieldatei.
die netcdf.dll fehlt.
' schrieb:Beim Timearray müssten dementsprechend Werte um die 3 milliarden beim Ausführen rauskommen (Zeit seit 01.01.1904). Ist leider nicht so!?
Nun, der erste Fehler. Wieviel kann ein I32 Datentyp anzeigen?
Mein Datentyp beim Timearray ist beim Auslesen doch ein 8 byte Datentyp!?
Also 64 bit.
Ich hab jetzt auch die vergessene netcdf.dll mit hochgeladen
' schrieb:Mein Datentyp beim Timearray ist beim Auslesen doch ein 8 byte Datentyp!?
Also 64 bit.
Ja das ist ein DBL, die Anzeige ist ein I32.
Du hast überall die orangen und die blauen vermischt und zusammenverbunden.
Überall wo du einen kleinen roten Punkt hast, übergibst du unter umständen einen falschen Wert.
Z.Bsp. die Länge und Arrayindexe gibt man idR. als Ganzzahl (ohne Komma) an.
Wenn ich dein VI aufrufe, gibt das SubVI für die Zeit den Error -33 aus.
Vielleicht sollte man diese Fehler auch verarbeiten und nicht nur im SubVi anzeigen.
Was der Fehler bedeutet kann ich nicht wissen, nehme mal an, der entsteht, weil ncid und varid null sind.
@mud: Wieso lädst du jedes VI, einzeln verpackt in einer LLB hoch?:hmm:Entweder ALLE VIs in eine LLB packen und dann hochladen oder erst gar nicht in eine LLB packen.
Gruß, Jens