07.01.2016, 14:45
(Dieser Beitrag wurde zuletzt bearbeitet: 07.01.2016 14:54 von jg.)
Beitrag #1
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
TDMS in Queue laden
Hallo LabVIEW Forum,
ich habe ein Problem und würde mich über Hilfe von euch freuen.
Ich würde gerne eine TDMS-Datei in eine Queue einlesen, um diese dann in einer anderen Schleife kontinuierlich auszulesen.
Bei meinen Versuchen wurden die Daten zwar aus der Queue geladen, dann jedoch nur kurz im Signalverlaufsgraph angezeigt.
Hat vielleicht jemand einen Tipp für mich woran das liegt oder was ich ändern muss um mein Ziel zu erreichen?
Viele Grüße,
Gifo
TDMS in Queue.rar (Größe: 44,78 KB / Downloads: 226)
|
|
|
07.01.2016, 14:56
Beitrag #2
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: TDMS in Queue laden
Hallo gifo,
momentan liest du die komplette TDMS-Datei mit einmal ein und schreibst die gelesenen Waveforms in die Queue.
Am anderen Ende liest du die Waveforms aus und stellst sie dar.
Dann rufst du wahrscheinlich den "Datei lesen"-State erneut auf: dummerweise wurde die Datei ja schon komplett gelesen, sodass der zweite Lesezugriff mit einem Fehler enden sollte (EOF erreicht!) und dementsprechend leere Waveforms in die Queue geschrieben werden. Und die werden dann auch dargestellt…
Zusammenfassung:
- Debugging betreiben!
- Fehlerbehandlung programmieren!
|
|
|
07.01.2016, 15:16
Beitrag #3
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: TDMS in Queue laden
Hallo GerdW,
vielen Dank für deine schnelle Antwort.
(07.01.2016 14:56 )GerdW schrieb: Hallo gifo,
momentan liest du die komplette TDMS-Datei mit einmal ein und schreibst die gelesenen Waveforms in die Queue.
Am anderen Ende liest du die Waveforms aus und stellst sie dar.
Dann rufst du wahrscheinlich den "Datei lesen"-State erneut auf: dummerweise wurde die Datei ja schon komplett gelesen, sodass der zweite Lesezugriff mit einem Fehler enden sollte (EOF erreicht!) und dementsprechend leere Waveforms in die Queue geschrieben werden. Und die werden dann auch dargestellt…
Heißt das, ich müsste bei jedem neuem „Datei lesen“-State die Queue leeren? Was meinst du mit Fehlerbehandlung programmieren?
|
|
|
07.01.2016, 15:34
Beitrag #4
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: TDMS in Queue laden
Hallo gifo,
Zitat:Heißt das, ich müsste bei jedem neuem „Datei lesen“-State die Queue leeren?
Nein. Du solltest aber nicht versuchen, die TDMS-Daten weiter zu lesen, wenn du gerade eben erst die komplette Datei gelesen hast…
Zitat:Was meinst du mit Fehlerbehandlung programmieren?
Damit meine ich, dass man Fehler wie "EOF erreicht" auch programmatisch behandeln kann…
|
|
|
07.01.2016, 15:51
Beitrag #5
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: TDMS in Queue laden
(07.01.2016 15:34 )GerdW schrieb: Hallo gifo,
Zitat:Heißt das, ich müsste bei jedem neuem „Datei lesen“-State die Queue leeren?
Nein. Du solltest aber nicht versuchen, die TDMS-Daten weiter zu lesen, wenn du gerade eben erst die komplette Datei gelesen hast…
Okay, also könnte ich die Datei einmal einlesen und dann zum nächsten State (z.B. Datei schließen -> Init) gehen, wenn ich das richtig verstehe.
Mein Problem dabei ist aber das wenn ich dann in einer zweiten Schleife das Frequenzspektrum darstellen lasse und an diesem Änderung vornehme, ich jedes Mal die Datei neu einlesen muss. Gibt es dafür auch eine andere Lösung?
(07.01.2016 15:34 )GerdW schrieb: Zitat:Was meinst du mit Fehlerbehandlung programmieren?
Damit meine ich, dass man Fehler wie "EOF erreicht" auch programmatisch behandeln kann…
Sorry da stehe ich jetzt etwas auf dem Schlauch. Wenn der Fehler erscheint dann bricht das Programm ja ab. Oder wie meinst du das?
|
|
|
07.01.2016, 16:15
Beitrag #6
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: TDMS in Queue laden
Mein jetziges Problem ist, dass meine zweite Schleife, nach dem Auslesen der Queue, wartet bis die Daten in der Queue erneuert wurden.
Erst wenn das geschieht, erfolgt ein neuer Iterationsschritt der Schleife 2.
Warum ist es denn nicht möglich, die Daten in der Queue immer und immer wieder neu auszulesen?
TDMS in Queue 2.rar (Größe: 83,77 KB / Downloads: 208)
|
|
|
07.01.2016, 16:25
(Dieser Beitrag wurde zuletzt bearbeitet: 07.01.2016 16:27 von GerdW.)
Beitrag #7
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: TDMS in Queue laden
Hallo gifo,
Zitat:Mein jetziges Problem ist, dass meine zweite Schleife, nach dem Auslesen der Queue, wartet bis die Daten in der Queue erneuert wurden.
Erst wenn das geschieht, erfolgt ein neuer Iterationsschritt der Schleife 2.
Korrekt. Wo ist hier überhaupt ein Problem?
Lies dir doch einfach mal die Hilfe zur Dequeue-Funktion durch! Die kennt ja auch einen Timeout-Input und einen TimedOut-Output, die man verwenden könnte…
Zitat:Warum ist es denn nicht möglich, die Daten in der Queue immer und immer wieder neu auszulesen?
Weil eine Queue so nicht funktioniert! (Mit einem Melder wäre das möglich, der arbeitet aber auch anders.)
Wenn du ein Element aus der Queue entnimmst, ist es (logischerweise) in der Queue nicht mehr verfügbar…
(Du könntest mit QueueStatus arbeiten, ist dann aber eher ein Missbrauch als eine sinnvolle Vorgehensweise!)
|
|
|
07.01.2016, 16:33
Beitrag #8
|
gifo
LVF-Grünschnabel
Beiträge: 29
Registriert seit: Nov 2015
2014
2014
DE
|
RE: TDMS in Queue laden
(07.01.2016 16:25 )GerdW schrieb: Hallo gifo,
Zitat:Mein jetziges Problem ist, dass meine zweite Schleife, nach dem Auslesen der Queue, wartet bis die Daten in der Queue erneuert wurden.
Erst wenn das geschieht, erfolgt ein neuer Iterationsschritt der Schleife 2.
Korrekt. Wo ist hier überhaupt ein Problem?
Lies dir doch einfach mal die Hilfe zur Dequeue-Funktion durch! Die kennt ja auch einen Timeout-Input und einen TimedOut-Output, die man verwenden könnte…
Ach mensch stimmt ja. Das mit dem Timeout-Input hatte ich total vergessen. Manchmal hat man aber auch Tomaten auf den Augen.
Ich habe das jetzt etwas anders gelöst. Und zwar führe ich die States "Einstellung Datei laden", "Datei lesen" und "Datei schließen" solange nacheinander aus, bis "STOPP Daten lesen" gedrückt wird.
Ist diese Vorgehensweise okay oder ist das unsauber?
|
|
|
07.01.2016, 16:41
Beitrag #9
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: TDMS in Queue laden
Hallo gifo,
wenn es dich nicht stört, dass andauernd auf der Festplatte rumgerödelt wird, dann ist es wohl ok…
|
|
|
| |