Forum: Mikrocontroller und Digitale Elektronik QP state machine


von M.J. (Gast)


Lesenswert?

Hallo Forum,
hat hier schon jemand mit QP gearbeitet?

Ich benutze es grade und ich brauche eine Funktion die angibt aus 
welcher der letzte State war(vor dem Aktuellen State).
Mit der Info will ich unter anderem entscheiden in welchen State ich 
springen muss.

Kennt jemand die entsprechende Funktion bzw. gibts es sowas QP?

Bsp.

Last_Steate = get_last_state();

if( Last_Steate == B){
wechsle zu state G
}
else{
wechsle zu state Z
}

von Bitflüsterer (Gast)


Lesenswert?

Was bedeutet die Abkürzung "QP" hier?

Möglicherweise handelt es sich hier um ein spezielles Problem im 
Zusammenhang mit "QP", aber im allgemeinen, wird ist der Folgezustand 
einer Zustandsmaschine nur vom gegenwärtigen Zustand und den 
Eingangssignalen abhängig. Magst Du einmal erklären, warum Du annimmst, 
dass das in Deinem Fall nicht so sein sollte.?

von Bitflüsterer (Gast)


Lesenswert?

Möglicherweise das hier?
http://www.state-machine.com/

von M.J. (Gast)


Angehängte Dateien:

Lesenswert?

Das ist QP

http://www.state-machine.com/

Weils einem das Leben erleichtert und im meinem Fall Code Spart.

Bei mir unterscheiden sich check1 & check 2 nur in dem sinne dass sie in 
verschiedene Stati springen.
Wenn ich wüste aus welchen Status die state maschiene kommt bräuchte ich 
nur ein check mit einer if else Anweisung.

von Christopher (Gast)


Lesenswert?

oder du lagerst den check in ein unterprogramm aus und rufst dieses von 
den beiden unterschiedlichen zuständen auf.

von Bitflüsterer (Gast)


Lesenswert?

Hm. Tja. Du könntest natürlich in Init und makeA eine Variable jeweils 
so setzen, das klar ist, welcher der beiden Zustände aktiv war. Die 
kannst Du dann mit einer Bedingung abfragen.


ABER: Das ist nicht fachgerecht! Ich rate Dir ernsthaft davon ab.

An sich gibt es in einer "fachgerechten" State-Machine auch keinen Grund 
den vorherigen Zustand zu speichern, so daß es sehr wahrscheinlich auch 
garkeine Funktion geben wird, um ihn festzustellen. (Das mag hier anders 
sein, die Funktion sollte dann aber in der Referenz zu QP irgendwie zu 
finden sein. Da kann ich leider keinen Rat geben. Tut mir leid).

Die Codegröße wird sich in beiden Fällen (dem fachgerechten und dem 
"Würgaround" :-) sehr wahrscheinlich nicht wesentlich unterscheiden.

Ein "Erleichterung" ist es meiner Ansicht nach in keinem Fall, weil es 
denn Code schwerer verstehen lässt zumal es von der formal korrekten 
Methode eine solche State-Machine zu implementieren abweicht.

Ist nur meine Meinung. Mache es wie Du denkst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.