Forum: Compiler & IDEs LCD Menüs


von Günter Denz (Gast)


Lesenswert?

Hallo zusammen,

bin grade am Nachdenken, wie man am einfachsten eine relativ groß 
angelegte Menüstruktur in C programmiert.
Groß angelegt heisst, dass mehrfache Verzweigungen (Untermenüs) möglich 
sein sollen. Desweiteren sollen die Menüpunkte hoch und runter gescrollt 
werden können.
Also zum Beispiel ein Menü mit 8 Punkten auf einem Display mit 4 Zeilen.

Und das ganze soll natürlich so gut wie möglich programmiert sein. Hab 
mir auchs chon meine Gedanken dazu gemacht. Aber vielleicht hat ja 
jemand die perfekte Idee wie so was am besten ghet.

Gruss Günter

von BAB (Gast)


Lesenswert?

ich hab mal ein kleines projekt gemacht mit ein paar menüpunkten. habe 
einfach das ganze über ein mehrdimensionales array gereglt. über den 
index des arrays konnte ich dann alles steuern.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Am praktischten wäre es wohl jeden Menüpunkt als struct anzulegen, mit 
einem Zeiger auf einen String im Flash, einem Zeiger auf das 
übergeordnete Menü und z.B. einem Zeiger auf die bei Aktivierung 
aufzurufende Funktion.

von Andre Adrian (Gast)


Lesenswert?

Ich hab mir dafür ein Struct angelegt, dann ein Array von diesen Struct 
Elementen. Jedes Element (jeder Menüeintrag) beinhaltet die Nummer des 
nächsten Menüeintrages, die Nummer des vorherigen Menüeintrages. So kann 
man schonmal schön das Menü darstellen. Deweiteren gibt es einen Eintrag 
mit der Nummer des zugehörigen Untermenüs (wenn kein Menüeintrag 
vorhanden, dann 0), und schliesslich die Nummer des übergeordneten 
Menüs. Das ganze sieht ungefähr so aus:

typedef struct{
  unsigned char number;
  const char *name;
  unsigned char next;
  unsigned char previous;
  unsigned char sub;
  unsigned char up;
}menustruktur;

Und initalisiert wie folgt:

menustruktur menu[] = {
    {0x01, "Variablen  ", 0x02, 0x04, 0x05, 0x00},
    {0x02, "Programme  ", 0x03, 0x01, 0x07, 0x00},
    {0x03, "Menue 3    ", 0x04, 0x02, 0x00, 0x00},
    {0x04, "Menue 4    ", 0x01, 0x03, 0x00, 0x00},
    {0x05, "Lesen      ", 0x06, 0x06, 0x00, 0x01},
    {0x06, "Schreiben  ", 0x05, 0x05, 0x00, 0x01},
    {0x07, "Aktivieren ", 0x08, 0x08, 0x00, 0x02},
    {0x08, "Aktivieren ", 0x07, 0x07, 0x00, 0x02},
};

Hoffe das hilft,

Gruss

Andre

von Günter Denz (Gast)


Lesenswert?

Erst mal vielen Dank für die Hilfe...

Die Struct Lösung hatte ich auch angedacht. Wird wohl darauf hinaus 
laufen.


Danke für eure Gedankne dazu.

Gruss Günter

von Jörn (Gast)


Lesenswert?

Hi,
Hat schon jemand so ein Menü prog fertig? Ich versuche mich auch gerade
an der programmierung eines Menü's komm aber irgendwie nicht weiter?
Hat jemand ein fertiges prog?

MFG Jörn

von Christian Ege (Gast)


Lesenswert?

Wie wäre es mit einem Baum ( Trie das teil heißt so ;-) ) Dann machst du
das ganze doppelt verketett damit du auch wieder zurück kommst ;-)

Sprich jedes Menü ist eine Ebene nach rechts sind die Menüpunkte und
nach unten die Folgemenüs.

Ist zwar viel mit Pointern dafür sehr flexiebel ;-)


cu
chege

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.