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.