www.mikrocontroller.net

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


Autor: Wer_bin_ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
switch (menuepunkt)
{
  case 1:
  {
    ...
  }

  case 2:
  {
    ...
  }
}

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:
...
  case 11:
  {
    ...
  }

  case 21:
  {
    ...
  }

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?

Autor: Sebastian ... (zahlenfreak)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Weingut Pfalz (weinbauer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: möööp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder ein ganz anderes prinzip verwenden ..
das ist pflegeleichter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du nimmst für jede Menüebene einen extra Zähler:
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

Autor: mammal (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.