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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.