Gast
#4755079
Hallo Miteinander, ich habe mir anhand der Anleitung (https://www.mikrocontroller.net/articles/Statemachine#Implementierung_einer_objektorientiert_Finite_State_Machine_in_C.2B.2B) eine FSM aufgebaut. Die Umsetzung hat soweit auch ganz gut geklappt bis auf einen Punkt. In dem Beispiel wird nur eine Abfrage nach einer Induktionsschleife gemacht, also nur ein Schalterzustand mit der entsprechenden Übergangsbedingung im Zustands-Struct verglichen. In der Form einer If-Anweisung:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
In meinem Projekt habe ich nicht nur einen Schalter wie die Induktionsschleife, sondern 3. Also habe ich 3 entsprechende If-Abfragen und nur wenn alle den gewünschten Zustand 1||0 haben, soll in den nächsten Zustand gesprungen werden. Soweit so gut, aber: Ich habe jetzt mehrere Zustände, wo unabhängig vom Wert des Schalters S3 in den nächsten Zustand gesprungen werden soll. Es ist also egal, ob er gerade den Wert 0 oder 1 hat. Die im Beispiel genutzte if-Abfrage lässt mir, nach meinem Verständnis aber keine Wahl, da immer ein bestimmter Bool-Wert des Schalters pro Zustand vorliegen MUSS um in den nächsten Zustand zu springen. Ich hatte mir jetzt überlegt, die If-Abfragen als Funktion zu erstellen und je nach State nur die relevanten Schalter abzufragen. Gibt es da eine elegantere Lösung?