LabVIEWForum.de
Programm stoppt nicht - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Programm stoppt nicht (/Thread-Programm-stoppt-nicht--29516)



Programm stoppt nicht - Alighieri - 07.10.2016 15:03

Hallo zusammen,

anbei findet ihr mein LabView Programm (auf das Problem runtergelöscht), in dem ich in einer Schleife (der unteren) analoge Werte von einer NI Karte auslese und in eine Queue gebe, zusammen mit der Zeit.
In der oberen Schleife sollen dann die Elemente aus der Queue entnommen und gespeichert werden. Wenn ich jetzt aber das Programm beenden möchte durch Drücken der Stopp Taste, stoppen zwar die Schleifen, aber nicht das VI. Ich habe schon mit der Highlight Funktion nach dem Problem gesucht aber blieb bisher erfolglos. Was mir jedoch auffiel ist, dass die Speicher-Schleife immer einmal mehr läuft als die Erzeuger-Schleife was ja eigentlich nicht sein kann oder?
Es gehen zwar keine Werte verloren, aber richtig kann das ja nicht sein.
Ich hoffe ihr könnt mir weiterhelfen.

MfG


RE: Programm stoppt nicht - GerdW - 07.10.2016 16:41

Hallo Alighieri,

THINK DATAFLOW!
So ziemlich alles hat hier mit Race Conditions zu tun…

Außerdem:
- Warum keine Timeouts bei den Queue-Operationen?
- Warum Controls ohne Label?
- Warum wird die Queue nirgends entsorgt?
- Warum wird der Stopp-Button per PropertyNode abgefragt?


RE: Programm stoppt nicht - Alighieri - 07.10.2016 17:35

Hallo GerdW,

ich bin kein Experte in LV deswegen ist manches 'komisch' Big Grin aber das mit den RaceConditions klingt plausibel.
Aber wie kann man das Problem denn jetzt lösen?

Außerdem:
zu 1: Queue Timeout ist default -1. Was genau die Timeouts aber machen ist mir noch schleierhaft.
zu 2: ist ja nur ein Beispiel
zu 3: Queue entfernen hab ich ausversehen mitgelöscht aber ändert nicht viel an dem eigentlichen Problem
zu 4: ja okay geht auch über LokaleVariable oder viele andere Möglichkeiten, ändert aber auch nichts.

Über eine Queue in einer zweiten Schleife zu speichern ist doch der Standard oder nicht?

MfG


RE: Programm stoppt nicht - GerdW - 07.10.2016 18:37

Hallo Alighieri,

Zitat:1: Queue Timeout ist default -1. Was genau die Timeouts aber machen ist mir noch schleierhaft.
Dabei wird das doch in der LabVIEW-Hilfe beschrieben…

Zitat:2: ist ja nur ein Beispiel
Zeugt aber von schlechten Programmiergewohnheiten - und macht dein VI nicht besser…

Zitat:3: Queue entfernen hab ich ausversehen mitgelöscht aber ändert nicht viel an dem eigentlichen Problem
Doch, das würde eine Menge bewirken!
Wenn man nämlich eine Queue-Referenz ordentlich löscht, werden noch wartende Dequeue-Funktionen beendet!

Zitat:4: ja okay geht auch über LokaleVariable oder viele andere Möglichkeiten, ändert aber auch nichts.
Ja, das ändert nicht direkt etwas am Problem.
Das Problem sind ja auch eher die Race Conditions, die du genau hier programmiert hast!

Zitat:Über eine Queue in einer zweiten Schleife zu speichern ist doch der Standard oder nicht?
Ja, das stimmt.
Und deswegen gibt es ja auch fertige Beispiel-VIs und -Projekte, die den Umgang damit demonstrieren!
Einfach mal diese Beispiele anschauen!


RE: Programm stoppt nicht - Alighieri - 09.10.2016 13:30

Hallo Gerd,

ja ich hätte mal direkt in die Beispiele schauen sollen. Anbei, falls es jemanden interessiert, habe ich mein Minimalbeispiel angehängt. Funktioniert jetzt auf diese Weise wie es soll.

MfG


RE: Programm stoppt nicht - GerdW - 09.10.2016 17:10

Hallo Alighieri,

ich wiederhole mal einen Punkt aus Beitrag #2:
Zitat:- Warum Controls ohne Label?