05.09.2007, 15:51
Hallo,
habe ein kleines Problem mit QSM.
Meine Parser Schleife bekommt befehle über eine Queue und führt diese aus:
Read&Parse
Idle
Exit
und noch paar andere.
Sobald die Schleife den Befehl Read&Parse bekommt, fängt diese an die Schnittstelle auszulesen und die Daten zu parsen UND nachdem es gemacht ist, befiehlt die sich selbst Read&Parse und macht es solange bis etwas anderes kommandiert wird.
Stellt euch vor, die Schleife ist gerade in diesem Dauerzustand Read&Parse. Jetzt wird von außen Idle kommandiert, nun wird der Zustand ausgeführt und nach dem Ausführen wird der Befehl Read&Parse wie oben beschrieben kommandiert. Somit befinden sich jetzt zwei Befehle in der Statequeue. Als nächstes sind wir im State Idle, da aber noch ein Befehl "Read&Parse" in der Queue ist kommen wir wieder in den Dauerzustand "Read&Parse".
D.h. ich komme da nicht mehr raus!?!? Ok, das habe ich jetzt gelöst in dem ich im Zustand Idle die Queue flushe (alle Elemente löschen). Und damit bekomme ich mein nächstes Problem:
wenn ich gleich nach dem "Idle" den "Exit" machen will wird es nicht mehr aqusgeführt, da alle Elemente inclusive "Exit" aus der Statequeue entfernt wurden.
Was kann man dagegen tun? Befehlsunterscheidung? Andere Vorgehensweise?
Ich warte auf euere Vorschläge
eg
habe ein kleines Problem mit QSM.
Meine Parser Schleife bekommt befehle über eine Queue und führt diese aus:
Read&Parse
Idle
Exit
und noch paar andere.
Sobald die Schleife den Befehl Read&Parse bekommt, fängt diese an die Schnittstelle auszulesen und die Daten zu parsen UND nachdem es gemacht ist, befiehlt die sich selbst Read&Parse und macht es solange bis etwas anderes kommandiert wird.
Stellt euch vor, die Schleife ist gerade in diesem Dauerzustand Read&Parse. Jetzt wird von außen Idle kommandiert, nun wird der Zustand ausgeführt und nach dem Ausführen wird der Befehl Read&Parse wie oben beschrieben kommandiert. Somit befinden sich jetzt zwei Befehle in der Statequeue. Als nächstes sind wir im State Idle, da aber noch ein Befehl "Read&Parse" in der Queue ist kommen wir wieder in den Dauerzustand "Read&Parse".
D.h. ich komme da nicht mehr raus!?!? Ok, das habe ich jetzt gelöst in dem ich im Zustand Idle die Queue flushe (alle Elemente löschen). Und damit bekomme ich mein nächstes Problem:
wenn ich gleich nach dem "Idle" den "Exit" machen will wird es nicht mehr aqusgeführt, da alle Elemente inclusive "Exit" aus der Statequeue entfernt wurden.
Was kann man dagegen tun? Befehlsunterscheidung? Andere Vorgehensweise?
Ich warte auf euere Vorschläge

eg