Moin !
Ich habe eine gewaltige State-Machine mit mehr als 450 Schritten programmiert.
Dafür habe ich einen Haupttimer laufen lassen, der über den jeweiligen Zustand die State-Machine bedient.
Nun müssen allerdings noch Punkte in der Mitte zugefügt werden - und zack, müssen alle Cases nach unten hin korrigiert werden.
Um dies zu vermeiden, wollte ich ein Enum benutzen, doch leider *hüstel* ist vb dann kaum noch bedienbar...es ruckelt und der Cpu-Verbrauch geht enorm in die Höhe.
Ich habe dann die Enums aufgeteilt, in vier unterschiedliche Enums:
Initialisierung, Geräteansteuerung, Messung, Prüfmodi.
Deklariert habe ich jedes Enum als Byte, mit genügend Platz um zusätzliche Punkte inefügen zu können.
Für die State-Machine benutze ich nun die Position im Enum und schaltet dieses weiter, was auch soweit gut funktioniert.
Wie komme ich aber von einem Enum zum anderen Enum, wenn jeweils das letzte Enum durch +1 weitergezählt wird ?
Wie kann ich z.B. von dem Enum "Geräteansteuerung" / Position 2 um z.B. 4 Positionen zum Enum davor zurückgehen ?
Gibt es vielleicht einen besseren Ansatz, um die Größe von so vielen States zu handeln ?
Ich habe eine gewaltige State-Machine mit mehr als 450 Schritten programmiert.
Dafür habe ich einen Haupttimer laufen lassen, der über den jeweiligen Zustand die State-Machine bedient.
Nun müssen allerdings noch Punkte in der Mitte zugefügt werden - und zack, müssen alle Cases nach unten hin korrigiert werden.
Um dies zu vermeiden, wollte ich ein Enum benutzen, doch leider *hüstel* ist vb dann kaum noch bedienbar...es ruckelt und der Cpu-Verbrauch geht enorm in die Höhe.
Ich habe dann die Enums aufgeteilt, in vier unterschiedliche Enums:
Initialisierung, Geräteansteuerung, Messung, Prüfmodi.
Deklariert habe ich jedes Enum als Byte, mit genügend Platz um zusätzliche Punkte inefügen zu können.
Für die State-Machine benutze ich nun die Position im Enum und schaltet dieses weiter, was auch soweit gut funktioniert.
Wie komme ich aber von einem Enum zum anderen Enum, wenn jeweils das letzte Enum durch +1 weitergezählt wird ?
Wie kann ich z.B. von dem Enum "Geräteansteuerung" / Position 2 um z.B. 4 Positionen zum Enum davor zurückgehen ?
Gibt es vielleicht einen besseren Ansatz, um die Größe von so vielen States zu handeln ?