LabVIEWForum.de
Simple Event Struktur - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Simple Event Struktur (/Thread-Simple-Event-Struktur)

Seiten: 1 2 3 4


RE: Simple Event Struktur - jg - 21.06.2016 18:57

Ich bin verwirrt - was willst du mit dem Code-Schnippsel, den du gepostet hast, erreichen? Nur dafür brauchst du keine Queues, dafür langt auch eine State-Machine. Warum, fragst du dich? Dann erkläre ich mal, was bei deinem Code passiert:

Bei Start des VI wartet das "Dequeue Element" beim ersten Aufruf 50 ms, wenn bis dahin nichts kommt, wird der Default-Wert des Enum zurückgegeben, selbst wenn kein Element in der Queue ist. Das VI springt in den Case "Initialize Front US". Dort wird das Element "Left..." in die Queue geschoben. Im nächsten Schleifendurchlauf gibt "Dequeue" sofort das Element "Left..." zurück, das VI springt in den Case "Left...". Dort wird "Right..." in die Queue geschoben. Nächster Schleifendurchlauf, Dequeue gibt "Right..." zurück, springt in den "Right..." Case. Dort wird wieder "Front..." angehängt. Usw. usw. usw., ab diesem Zeitpunkt beginnst du also wieder von vorne, das quasi ohne Wartezeit und entsprechender Auslastung der CPU. Für diesen Ablauf langt es auch, wenn du einfach in einer State-Machine von Case zu Case springst.

Gruß, Jens


RE: Simple Event Struktur - berlinfatih - 23.06.2016 17:45

Hallo Jg,
danke für die schnelle Antwort.

(21.06.2016 18:57 )jg schrieb:  Ich bin verwirrt - was willst du mit dem Code-Schnippsel, den du gepostet hast, erreichen? Nur dafür brauchst du keine Queues, dafür langt auch eine State-Machine. Warum, fragst du dich?
Mit der Gedanke habe ich auch schon die ganze Zeit gespielt, nur auf State-Maschine zu setzen. Weil das reicht, wie du schon meintest, für meine Bedürfnisse aus.
Zuerst wollte ich ja mit Event-Struktur programmieren, GerdW hat mir empfohlen nicht mit Events zu Programmieren (da ich myrio verwende) sondern mit Queue zu Programmieren. Seine Gedanke war sicherlich, wenn auch Queue nötig ist Big GrinBig Grin

(21.06.2016 18:57 )jg schrieb:  Dann erkläre ich mal, was bei deinem Code passiert:

Bei Start des VI wartet das "Dequeue Element" beim ersten Aufruf 50 ms, wenn bis dahin nichts kommt, wird der Default-Wert des Enum zurückgegeben, selbst wenn kein Element in der Queue ist. Das VI springt in den Case "Initialize Front US". Dort wird das Element "Left..." in die Queue geschoben. Im nächsten Schleifendurchlauf gibt "Dequeue" sofort das Element "Left..." zurück, das VI springt in den Case "Left...". Dort wird "Right..." in die Queue geschoben. Nächster Schleifendurchlauf, Dequeue gibt "Right..." zurück, springt in den "Right..." Case. Dort wird wieder "Front..." angehängt. Usw. usw. usw., ab diesem Zeitpunkt beginnst du also wieder von vorne, das quasi ohne Wartezeit und entsprechender Auslastung der CPU. Für diesen Ablauf langt es auch, wenn du einfach in einer State-Machine von Case zu Case springst.

Was bei den Programm so abläuft, war mir schon bekannt Big GrinBig Grin. Das Programm bestant eigentlich aus eine Event-Struktur, wo auf bestimmte Tasten reagiert, die halt je nach welche Taste gedrückt wird, die dazugehörige Queue abläuft.
Wie gesagt, wollte ich Stur mit Queue Programmieren, was in meinen Fall nicht nötig war.
Werde mein Programm dementsprechend ändern und nochmal posten.Box

Danke für die Unterstützung.


RE: Simple Event Struktur - jg - 23.06.2016 18:53

Prima, wenn dir alles klar war. Ich wollte sichergehen, dass du nicht von irgendwo anders noch Kommandos einschleust, dann wärst du irgendwann ins schleudern gekommen.

Gruß, Jens