Einen wunderschönen guten Abend und frohes neues Jahr.
Nach meiner letzten bastellei zu Weihnachten (Die Lampe mit IR-Sensor,
vlt errinnert sich wer) bin ich schon wieder am nächsten Projekt dran.
Und zu diesem neuen Projekt gehört nun auch ein LCD mit entsprechendem
Menü.
Meine Frage bezieht sich nun weniger auf die technische Lösung
(Auswertung des Drehgeber hab ich zwar noch nicht so 100%ig drauf, das
schaffe ich allerings auch so), sondern hat eher einen strukturellen
Hintergrund.
Der Gedanke:
Ich möchte ein typisches Menü auf dem LCD bereitstellen in dem ich zum
einen Einstellungen vornehmen sowie konkrete Steuerungen auslösen kann.
Nun überlege ich schon einige Zeit wie ich mir dieses Menü
programmtechnisch am einfachsten strukturiere.
Der erste Gedanke ist in etwa so:
1 | int main (void){
|
2 | //- Initialisierungen
|
3 | //- Starbildschirm aufbauen
|
4 | //- usw.
|
5 |
|
6 | ------------
|
7 | // Ab hier die Schleife in der auf Benutzereingaben gewartet wird
|
8 | // Der Drehgeber liefert mir bei Bewegung ja 1 oder - 1
|
9 | // Nun würde ich eine Variable initiieren die bei Bewegung des Drehgeber
|
10 | // inkrementiert oder dekrementiert wird und per Switch-Case jeweilig
|
11 | // den Pfeil an die richtige Stelle setzen.
|
12 |
|
13 | int menuep = 0;
|
14 |
|
15 | if (Drehegebr erkannt){
|
16 | menuep = menuep + drehgeberwert;
|
17 | }
|
18 |
|
19 | // Natürlich wird die Variable noch so bearbeitet dass sie nur die
|
20 | // Zustände der Möglichen Menüpunkte annehmen kann bzw. nicht negativ
|
21 | // wird.
|
22 |
|
23 | switch(menuep)
|
24 | {
|
25 | case 1:
|
26 | {
|
27 | //Setze Pfeil vor Menüpunkt 1
|
28 |
|
29 | //Betrete Menüschleife für Untermenü...
|
30 |
|
31 | break;
|
32 | }
|
33 | case 2:
|
34 | {
|
35 | //Setze Pfeil vor Menüpunkt 2
|
36 |
|
37 | //Betrete Menüschleife für Untermenü...
|
38 |
|
39 | break;
|
40 | }
|
41 | case 3:
|
42 | {
|
43 | //Setze Pfeil vor Menüpunkt 3
|
44 |
|
45 | //Betrete Menüschleife für Untermenü...
|
46 |
|
47 | break;
|
48 | }
|
49 | ...
|
50 |
|
51 | }
|
52 |
|
53 |
|
54 | }
|
Bitte achtet bei diesem Brainstorming nicht auf die Prgrammtechnische
Korrektheit, klar fehlt da noch einiges. Ich versuche nur die Struktur
deutlich zu machen die ich momentan im Kopf habe.
Nun ergibt sich bei der Struktur allerdings ein Problem welches zur
Folge hat dass das Programm mit wachsender Anzahl der Menüpunkte immer
unübersichtlicher wird...
Und zwar haben meine Menüpunkte auch wieder untermenüs und
UNTERuntermenüs usw...
Was bedeuten würde, dass ich hinter jedem Menüpunkt wieder eine Variable
und eine Switch-Case-Anwendung verbergen muss. Und dies erscheint mir
doch eine sehr schlechte und chaotische Lösung zu sein. Allerdings hat
mich heute nicht grade die Muse geküsst ( Mal abgesehen von meiner Frau
die mir dabei nicht helfen kann :-D ) und ich habe keine gute Idee zu
einer einfacherern und übersichtlichen Strukturierung.
Und an der Stelle möchte ich mich nun an euch wenden.
Hat schonmal jemand so ein Menü aufgebaut und wie seid ihr dabei
vorgegangen bzw. wie habt ihr das ganze möglichst einfach strukturiert?
Lange Rede gar kein Sinn.
Ich bedanke mich schonmal im Vorraus und hoffe auf eine rege
Unterhaltung ;-)
Gruß
Christian