Forum: Mikrocontroller und Digitale Elektronik Tips zu Menüführung auf Display


von Wer_bin_ich (Gast)


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?

von Sebastian .. (zahlenfreak)


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

von Weingut P. (weinbauer)


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

von möööp (Gast)


Lesenswert?

oder ein ganz anderes prinzip verwenden ..
das ist pflegeleichter

von Peter D. (peda)


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

von mammal (Gast)


Lesenswert?

Nimm dir etwas Zeit und schau in Lösungen rein. Z.B. den Port der 
Butterfly Firmware.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.