Hallo Leute
Ich hab mich durch die ganzen Themen über Menüprogrammierung auf uC
gelesen. Mir wurde allerdings nicht so ersichtlich worin die Vor- und
Nachteile einer Menüprogrammierung über sitch-case bzw. Tabelle mit
Zeiger auf Funktionen (vgl. AVR Butterfly) liegen.
Ich werde die Menüprogrammierung mit Tastereingabe und LCD-Ausgabe für
mein nächstes Projekt brauchen.
Gruß Sam
Mit Tabellen spart man sich viel Arbeit weil das Anlegen von Menübildern
schnell von der Hand geht. Arbeit macht nur die grundsätzliche
Definition von Bildelementen.
Im Beilspiel sieht man die Tabelle für zwei Menübilder. Da der Compiler
die Daten stur hintereinander anordnet sind es einfach nur unabhängige
Datenzeilen ohne Array. Also wie ein Array in dem jedes Element eine
andere Struktur beinhaltet.
Die erste Zeile kennzeichnet den Menübild Kopf. Hier ist der Pointer zur
Callback Funktion für alle Elemente dieses Menübildes und die Nummer von
vorherigem und nachfolgendem Menübild.
Die anderen Zeilen sind die vordefinierten Bildelemente. Der Zugriff auf
die RAM Daten erfolgt weitestgehend ohne Callbackfunktion. Einfach nur
über die Adresse der Daten und Tabellenangabe um was es sich für Daten
handelt.
Eigentlich wollte ich eine Tabelle mit {aktuelles Menü, nachfolgendes
Menü, vorhergehendes Menü, Zeiger auf Funktion}, angelegt als
struct-Feld. Was ich ein bischen unangenehm finde ist das Anlegen der
Feldnummer = aktuelles Menü. Wenn ich dies mit nem enum mache muss ich
bei Erweiterung/Änderung immer aufpassen, dass die Erweiterung/Änderung
im struct-Feld auch mit der Erweiterung/Änderung im enum zusammenpasst.
Vielleicht weiss ja jemand wie ich das besser machen kann.
gruß Sam