mikrocontroller.net

Forum: Compiler & IDEs LCD Menüs


Autor: Günter Denz (Gast)
Datum:

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

Autor: BAB (Gast)
Datum:

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Andre Adrian (Gast)
Datum:

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

Autor: Günter Denz (Gast)
Datum:

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

Autor: Jörn (Gast)
Datum:

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

Autor: Christian Ege (Gast)
Datum:

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

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.