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
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