Hi
ich habe einen Ablauf, den ich in ein c-Programm stecken möchte:
Aktion 1
Ergebnis von Aktion 1 true oder false
Wenn true > Aktion 1
Wenn false > Aktion 2
Aktion 2 erfolgreich ausgeführt
ja > Aktion 3
nein > Aktion 2
Aktion 3 erfolgreich ausgeführt
ja > Aktion 4
nein > Aktion 3
Aktion 4 erfolgreich ausgeführt
ja > Warten auf Ereignis
nein > Aktion 4 bis erfolgreich ausgeführt
EREIGNIS auswerten
je nach dem Ergebnis des Ereignis geht es bei Aktion 1 oder Aktion 2
weiter.
Ich habe nun Programmiertechnisch mich total in lauter if-else Schleifen
verhaspelt und mein Programm findet immer ein Schlupfloch zwischen
Aktion 3 und Aktion 1 und nun wollte ich es mit Variablen sperren und
freischalten...
Nun bin ich auf die Idee gekommen es wäre besser euch zu fragen, wie man
es professionell macht nun nicht nur "Hinpuscht".
Ich wäre euch sehr dankbar, wenn mir wer helfen könnte!
Zeichne dir zuerst (Papier&Bleistift) auf, wie das Programm wann was machen soll. Dann das Programm entsprechend programmieren (Eine Variable speichert den aktuellen Zustand, die Hauptschleife ruft entsprechend des Zustandes eine Funktion auf, die entscheidet wann es Zeit ist den Zustand zu wechseln...)
Sven schrieb: > Hi > ich habe einen Ablauf, den ich in ein c-Programm stecken möchte: > > Aktion 1 > > Ergebnis von Aktion 1 true oder false > > Wenn true > Aktion 1 > > Wenn false > Aktion 2 > > Aktion 2 erfolgreich ausgeführt > ja > Aktion 3 > nein > Aktion 2 > > Aktion 3 erfolgreich ausgeführt > ja > Aktion 4 > nein > Aktion 3 > > Aktion 4 erfolgreich ausgeführt > ja > Warten auf Ereignis > nein > Aktion 4 bis erfolgreich ausgeführt > > EREIGNIS auswerten > je nach dem Ergebnis des Ereignis geht es bei Aktion 1 oder Aktion 2 > weiter. Statemachine wie schon vorgeschlagen. Oder so: while (Aktion 1) /* EMPTY */ ; while (!Aktion 2) /* EMPTY */ ; while (!Aktion 3) /* EMPTY */ ; while (!Aktion 4) /* EMPTY */ ; Warten auf Ereignis Ereignis auswerten Wie Du nun wieder zu Aktion 1 oder Aktion 2 kommst überlasse ich Dir... ;-) Alle Fehler sind meine.
Statemachine for the win. Das funktioniert auf jedenfall und ist sehr professionel. Außerdem kann man sehr leicht debuging machen. Du brauchst nur ein interface um den Zustand auszulesen oder um das device in einen bestimmten zustand zu setzen.
Statemachine ist gut, allerdings würde ich mit Switch-Case arbeiten. Hat den Vorteil auch noch außerhalb der Statemachine Funktionen auszuführen wohingegen das Prog sonst in einer while "hängen" bleibt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
