Tips zu Menüführung auf Display

Gast #1783855
Lesenswert?

Einen wunderschönen guten Morgen uch allen!


Ich bräuchte mal einen Rat von euch...

Ich bastle mir gerade ein Menü in der Form:
1
switch (menuepunkt)
2
{
3
  case 1:
4
  {
5
    ...
6
  }
7

8
  case 2:
9
  {
10
    ...
11
  }
12
}

Jetzt gibts es noch Unterpunkte wie z.b. 1.1 oder 2.1 - da würde ich 
dann folgendermaßen in der case-Anweisung weitermachen:
1
...
2
  case 11:
3
  {
4
    ...
5
  }
6

7
  case 21:
8
  {
9
    ...
10
  }

So...jetzt verzweigt sich das Menü aber noch tiefer, und zwar bis zu 
bspw. 9.1.1.3.1 !!!

Ist es unvorteilhaft, den "menuepunkt"-Index als uint32_t auszufuehren? 
Es würde ja ledeglich der übersichtlichkeit für mich selber dienen, da 
ich auch mit einem uint8_t auskommen würde, da es keine 255 Menüpunkte 
geben wird. Ich müsste dann halt nur die Menü-Nummern sequentiell 
vergeben, was etwas unübersichtlich im Quelltext werden könnte.

Deshalb nur die Frage: Ist es sinnlos, auf einem 16-bitter eine 
32-Bit-Variable nur für einen Menüindex zu verwenden? Oder ist das 
schlicht weg egal? Ich weiß nicht so ganz, wie er das intern behandelt? 
In einem Rutsch wird er ja nicht die 32 Bit vearbeiten können - falls 
ein Interrupt dazwischen haut, kann da was schiefgehen?
#1784001
Lesenswert?

Nimm doch ein Enum. Dann kannst du die Menüpunkte sogar im Klartext 
benennen.
Für Untermenüs kann man auch überlegen, ein switch im switch zu bauen. 
Dann bleibt auch der Zustand der höheren ebene erhalten und man landet 
nicht prinzipiell beim ersten eintrag, wenn man wieder eine ebene nach 
oben wechselt.

Sebastian
#1784390
Lesenswert?

ich habs bei mir so gemacht, dass ich für die menüpunkte 
aussprungadressen, sprich zum darunterliegenden menüpunkt und 
rücksprungadressen verwendete.

sprich:

menü_1: / einsprung
1. machwas; 10
2. was anderes; 11
3. nochmal; 12
aussprung; 0 / menü verlassen

menü_10: / machwas
1. sowas ; 20
2. irgendwas; 21
...
aussprung; 1 zurück in darüberliegendes
#1784717
Lesenswert?

Du nimmst für jede Menüebene einen extra Zähler:
1
uint8_t menu[3];

menu[0] zählt bis zu 256 Hauptmenüs, menu[1] die erste Untermenüebene, 
usw.

Damit das ganze auch bedienbar bleibt, würde ich nicht mehr als 3 Ebenen 
vorsehen.
256^3 = 16777216 Menüpunkte sollten ja reichen.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren