Im Prinzip ist es ganz einfach.
Programme werden ja immer komplett ausgeführt.
Sprich, es wird im Flussdiagramm oben angefangen und sich
nach unten durchgearbeitet.
Bei großen komplexen Programmen kann das aber ärger geben.
Z.B. Du hast eine Vorrichtung, die mit sagen wir mal CAN-Bus, Display,
Tastenpanel, RS232, und diverse Sensoren dann kann z.B.
Der Displayrefresh bei jedem Programmdurchlauf die ganze
Geschichte mächtig ausbremsen. Kommt dann noch dazu
Tastenabfrage kanns ganz finster werden.
Dein Bus wird durch die tausende von PRogrammschritten
fürs Userinterface arschlangsam.
Geht man nun hin und fragt nur alle x Programmdurchläufe
die Tasten ab gewinnt man schon Ausführungszeit.
Tut man nun das Display nur bei bestimmten Events, z.B.
Tastendruck aktualisieren gewinnt man nochmal ne Menge
Ausführungszeit.
Man speichert also die Zustände, die States, des Programmablaufs
in eine selbst definierte Struktur. Die einzelnen Programmteile
gehen dabei immer in die Hauptroutine zurück, wo dann
geprüft wird ob nun ein Zustand ansteht ... z.B. ein Telegramm
vom Bus. Von dort gehts dann in die entsprechende Subroutine
und wieder zurück in die Mainloop.
Lesezeichen