LabVIEWForum.de
Nachrichten Handler Problem - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Nachrichten Handler Problem (/Thread-Nachrichten-Handler-Problem)



Nachrichten Handler Problem - Maikn. - 19.05.2014 10:50

Moin,

ich bastel gerade an einen Nachrichten Handler zur Datenerfassung.
Dabei treten einige Probleme auf die ich alleine nicht gelöst bekomme.

1. Die Datenerfassung läuft in einem SubVI ab und sendet die erfassten Daten zurück ans HauptVI. Der Aufruf dieses SubVIs läuft über eine Nachricht Queue welche von einer Ereignisstruktur erstellt wird.
Dabei tritt dann das Problem auf, dass die Erfassungschleife genau einmal durchläuft. Diese soll aber kontinuierlich erfassen und die Daten dann ans HauptVI zurück schicken. Ich habe die Vermutung das die Whileschleife auf ein neues Ereigniss aus der nachrichten Queue wartet was natürlich nicht kommt. Sobald ich wieder den Start Button drücke erfolgt ein weiter Schleifen durchlauf, was ja nicht der Sinn der kontinuierlichen Erfassung ist.

Wie kann ich diese Whileschleife in "Daten Erfassen" dauerhaft laufen lassen und trotzdem mit einem Nachrichten Handler steuern ?


2. Leider beendet diese ganze Struktur nicht wie gewünscht. Nach vielen Versuchen bin am Ende meiner "begrenzten Weisheit" Cry

Ich hoffe jemand sieht die grundsätzlichen Fehler die offensichtlich im Aufbau dieser Struktur stecken und kann mir helfen.


Ps: Ich habe dieses Programm in Anlehnung an das Labview Beispeil "Nachrichten Handler" entwicklet. Allerdings finde ich das dortige Beispiel unheimlich kompliziert ( gefühlte 1000 SubVIs)


RE: Nachrichten Handler Problem - jg - 20.05.2014 22:14

Prinzipiell hast du deinen Fehler schon richtig erkannt, jetzt musst du ihn nur "sauber" beheben.

Du hast bei allen Dequeue-VIs den Timeout auf dem Standardwert -1 (also unendlich auf das nächste Queue-Event warten) gelassen, somit warten diese bis zum Sankt-Nimmerleins-Tag auf das nächste Queue-Element, welches aber nicht kommt.

Mögliche Lösungen:
1) Timeout von z.B. 100 ms anschließen & Timeout Ausgang des Dequeue entsprechend auswerten.
2) Queue immer wieder "selber" aufrufen, indem man im Messfall immer wieder das Kommando "Messen" in die Queue schiebt.
3) ...

Dann zum Beenden: THINK Dataflow:
Schleife 2 (von oben nach unten gesehen) wird nie beendet, denn:
Du schickst zwar das Kommando "Beenden" an diese Schleife und gibst nur in diesem Fall ein True weiter, ABER gibst das per Schieberegister an den nächsten Schleifendurchlauf. Schleife startet also von vorne, startet das Dequeue, was jetzt auf das nächste Element wartet. Das kommt aber NIE.

Ähnlich ist es bei der 3. Schleife, da du 3 Queues parallel hast, die alle auf ein Element warten. Die Schleife geht erst dann weiter, wenn bei allen Queues 1x ein Element anlag. Ist aber nicht...

Gruß, Jens