QP state machine

Gast #4046698
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
}
Gast #4046714
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.?
Gast #4046778
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.