Gibt es ein Muster für ein einfaches Menüsystem in C für ein Text-LCD? Ich schreibe häufig Code neu, um einfache Text-LCD-Menüs zu handhaben.
Ich finde, die meisten Systeme haben ein Hauptmenü und einige Untermenüs, mit denen Sie bei Auswahl einen Parameter mit einem minimalen und maximalen Wert einstellen können.
Idealerweise kann dieses Menüsystem mit 4 einfachen Tasten wie Eingabe, Abbrechen, Auf und Ab navigiert werden.
In meiner Anwendung verwende ich ein 2-Zeilen x 16-Zeichen-Text-LCD, obwohl eine ideale Lösung auf jedes NxM-Display angewendet werden kann.
Antworten:
Das Muster, das ich für Menüsysteme in C verwende, ist ungefähr so:
Ich deklariere dann ein Array von
menu
s, das jeweilsmenuitem
s und Zeiger aufchild
Untermenüs enthält. Auf und Ab bewegt sich durch das aktuell ausgewählte Array vonmenuitem
s. Zurück wechselt zumparent
Menü und Vorwärts / Auswählen wechselt entweder zu einemchild
Untermenü oder ruft ahandlerFunc
für einen Blattknoten auf.Das Rendern eines Menüs umfasst lediglich das Durchlaufen seiner Elemente.
Der Vorteil dieses Schemas besteht darin, dass es vollständig datengesteuert ist und die Menüstrukturen unabhängig von den Renderer- und Handlerfunktionen statisch im ROM deklariert werden können.
quelle
Tobys Antwort ist ein sehr guter Ausgangspunkt. Die genannten Strukturen setzen voraus, dass die Menüs statisch sind und Sie nur durch sie navigieren.
Wenn Sie dymanische Menüs möchten (z. B. Anzeigen bestimmter Werte wie Temperatur, Zeit usw.), müssen Sie in der Lage sein, diese zu generieren.
Eine Möglichkeit könnte darin bestehen, eine Funktion zum Erstellen Ihrer Zeichenfolge zu registrieren.
quelle