Forum: Mikrocontroller und Digitale Elektronik Organisation der LCD (Menu) Daten


von chris (Gast)


Lesenswert?

Hallo zusammen,

wie macht ihr das mit den Menus für LCDs (HD44780)?
Menü in einer Struktur speichern und irgendwie durch einen Index 
navigieren?

Bessere Ideen?

von c-hater (Gast)


Lesenswert?

chris schrieb:

> wie macht ihr das mit den Menus für LCDs (HD44780)?
> Menü in einer Struktur speichern und irgendwie durch einen Index
> navigieren?

Menüs sind (übrigens völlig unabhängig vom Anzeige- und Eingabemedium) 
prinzipiell Bäume, also verwaltet man sie sinnvollerweise auch in 
Baumstrukturen. Nur für den Sonderfall, daß das Menü nur eine Ebene hat, 
kann man den Baum zu einer linearen Liste vereinfachen. Wenn man sich 
aber schonmal die Arbeit macht, ein Menüsystem zu programmieren, ist es 
sinnvoll, gleich den allgemeinen Fall zu implementieren.

Wenn man das hinreichend abstrakt tut, kann man dann den Baum mit allen 
seinen Verwaltungsroutinen statt für ein Menüsystem genauso für z.B. die 
Anzeige des Inhalts eines Datenträgers verwenden.

Und klar: die einzelnen Knoten, aus denen so ein Baum besteht, 
realisiert man natürlich als Strukturen, wobei die im abstrakten Fall 
nur aus einem Satz von 6 Zeigern bestehen. Etwa sowas:

ParentNode
PreviousNode
NextNode
FirstSubnode
LastSubnode
Data

Von den Zeigern zeigen fünf auch wieder nur auf einen anderen Knoten 
(oder NULL). Über den sechsten hingegen wird auf die Nutzdaten des 
Knoten verwiesen. Das kann dann auch wieder eine Struktur sein, muß es 
aber nicht.

Im einfachsten Fall, z.B. bei einem einfachen Menü, was lediglich eine 
Beschriftung für jeden Knoten anbietet und nur einfach "angeklickt" 
werden kann, könnte man Data auch einfach nur auf die zur Beschriftung 
verwendete Zeichenkette zeigen lassen. Mehr wird dann ja nicht benötigt.

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.