LCD Menu Hauptseite: Unterschied zwischen den Versionen
Mat (Diskussion | Beiträge) K (→Programmierinterface) |
Mat (Diskussion | Beiträge) K (→Spenden) |
||
Zeile 137: | Zeile 137: | ||
=== Beispiel 2: Alle Funktionen === | === Beispiel 2: Alle Funktionen === | ||
[[LCD Menu Sample 2]] | [[LCD Menu Sample 2]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== Download == | == Download == | ||
* [http://www.braunecker.at/downloads/lcd_menu_1_1.zip LCD Menu Version 1.1] | * [http://www.braunecker.at/downloads/lcd_menu_1_1.zip LCD Menu Version 1.1] | ||
Um den Designer zu installieren muss die Setup.exe mit Administratorrechten ausgeführt werden. | Um den Designer zu installieren muss die Setup.exe mit Administratorrechten ausgeführt werden. |
Aktuelle Version vom 31. August 2017, 03:21 Uhr
Inhaltsverzeichnis
Übersicht
Das ist ein Menü-System für alphanumerische Standard-LCDs mit mindestens 2 Zeilen.
Um durch das Menü zu navigieren benötigt man nur 3 Tasten (+, -, Enter) oder einen Drehencoder mit eingebautem Taster.
Die Menü-Struktur kann beliebig tief verschachtelt sein, versteckte Sub-Menüs sind möglich (aber noch nicht vom Designer unterstützt). Weiters kann man durch einen Menüeintrag eine beliebige Funktion ausführen oder Variableninhalte anzeigen und editieren (Alle Bascom-Typen werden unterstützt).
Die Menü-Struktur und damit verknüpfte Daten werden aus dem Flash geladen zur Laufzeit in Arrays verwaltet, die Menüpunkte werden mithilfe ihrer Indexes verknüpft.
Numerische Variableninhalte werden gleichzeitig als Zahl und grafisch mit einem Bargraph, welcher die momentane Position innerhalb des spezifizierten Intervalls darstellt, angezeigt.
Bit Variablen können auf On/Off (oder einen anderen beliebigen Text) gesetzt werden, numerische Werte werden mit der eingestellten Schrittgröße in- oder dekrementiert und Strings können mithilfe einer wählbaren Zeichentabelle (und 2 Spezialzeichen zum Löschen/Bestätigen) editiert werden.
Um Flash-Speicher zu sparen werden nur benötigte Code-Teile kompiliert. Am wenigsten Speicherplatz wird benötigt, wenn nur Links und Funktionen verwendet werden. Der Speicherverbrauch steigt jeweils mit der Verwendung von Read-Only Werten, editierbaren Werten oder beiden und zusätzlich für jeden im Menü verwendeten Datentyp.
Video Demo
In diesem Video ist das Menü in Aktion zu sehen.
Einbinden ins Programm
Setup
Die vom Designer erstellten Daten und die Funktionen fürs Menü inkludieren:
Macro Menu_include_data $include "inc\menu_data.bas" End Macro $include "inc\menu.bas"
Dimensionierung der Variablen
Zwischen dem Include und dem Aufruf der Init-Funktion müssen die Variablen (die im Menü angezeigt oder editiert werden) dimensioniert werden.
Dim Test_bit As Byte Dim Test_byte As Byte Dim Test_word As Word Dim Test_integer As Integer Dim Test_dword As Dword Dim Test_long As Long Dim Test_single As Single Dim Test_double As Double Dim Test_string As String * Menu_value_string_width
Bit Datentypen müssen als Byte deklariert werden. Außerdem wird eine Konstante erstellt, die die maximale Länge für Strings angibt.
Initialisierung
mit dem Aufruf des Makros:
Menu_init
Hauptschleife
Do If Switch_minus = 1 Then Menu_backward() ' -/Zurück gedrückt If Switch_plus = 1 Then Menu_forward() ' +/Vorwärts gedrückt If Switch_enter = 1 Then ' Enter gedrückt Select Case Menu_enter() Case Menu_exit: ' Menü wurde über Exit verlassen ... Case 2-255: ' Funktionsaufruf ... End Select End If Menu ' Menü Hauptfunktion ... Loop
Programmierinterface
Const Menu_default_entry
Index des Default-Eintrags
Const Menu_value_string_width
Maximale Größe für Strings in Verwendung mit dem Menü
Macro Menu_init
Lädt die Menüdaten aus dem Flash-Speicher
Macro Menu_check_update
Werden Read-Only Variablen verwendet, muss diese Funktion im gewünschten Intervall aufgerufen zu werden um eine Aktualisierung der Anzeige zu erzwingen.
Declare Sub Menu()
Hauptfunktion, wird regelmäßig aus der Hauptschleife aufgerufen
Declare Sub Menu_forward()
Geht einen Schritt in der Menüstruktur weiter, oder ändert Variablenwerte. Bits werden auf True (1) gesetzt, numerische Variablen werden mit der gewählten Schrittgröße inkrementiert und bei Strings wird das nächste Zeichen aus der Zeichentabelle ausgewählt.
Declare Sub Menu_backward()
Geht einen Schritt in der Menüstruktur zurück, oder ändert Variablenwerte. Bits werden auf False (0) gesetzt, numerische Variablen werden mit der gewählten Schrittgröße dekrementiert und bei Strings wird das vorige Zeichen aus der Zeichentabelle ausgewählt.
Declare Function Menu_enter() As Byte
Zeigt das Menü an falls es nicht aktiv ist, folgt einem Link (gewünschter Eintrag wird angezeigt), startet/beendet den Editiermodus oder ruft eine Funktion auf.
Declare Sub Menu_show(byval Entry_id As Byte)
Zeigt das Menü mit dem übergegebenen Eintrag an, falls 0 übergeben wird, wird der Standardeintrag ausgewählt.
Declare Sub Menu_hide()
Schließt das Menü.
LCD Menu Designer
Allgemeine Einstellungen
Die allgemeinen Einstellungen werden angezeigt, wenn der oberste Eintrag ausgewählt wird. Hier kann die Zeichenbreite des Displays und der Anzeigestil für den Bargraph eingestellt werden, die Zeichentabelle für den String-Editiermodus bearbeitet und der Anzeigetext (Standard ist On/Off, aber An/Aus, High/Low etc. ist genauso möglich) für Bitvariablen gewählt werden.
Link
Mit Links kann zu einem anderen Menüeintrag gesprungen werden, das Ziel muss in der rechten Baumansicht ausgewählt werden. Intern werden Submenüs und "Back"-Einträge als Links verwaltet, das Ziel wird hierbei automatisch gesetzt.
Value
Zuerst muss der Typ der Variable (Alle Bascom-Datentypen werden unterstützt) ausgewählt und bestimmt werden, ob der Inhalt nur angezeigt wird (Read-Only) oder auch editierbar ist. Im Feld "Associated variable" wird der Name der Variable, wie in Bascom deklariert, eingetragen.
Für alle Typen muss im Editiermodus ein Startwert bestimmt werden.
Bei numerischen Variablen muss das Intervall (größter bzw. kleinster mögliche Wert) gesetzt sowie zusätzlich für den Editiermodus die Schrittweite (>0)angegeben werden.
Function
Die Funktion, die der Menüpunkt ausführen soll, wird durch eine beliebige ID zwischen 2 und 255 gekennzeichnet. Wird dieser Menüpunkt ausgewählt, wird das Menü beendet und die Menu()-Funktion gibt die ID der betreffenden Funktion zurück, die dann ausgewertet werden kann.
Tool: Zeichentabelle
Mit diesem kleinen Tool kann man einfach den Code für ein bestimmtes Zeichen, welches von alphanumerischen Standard-Displays angezeigt werden kann, herausfinden. Dazu einfach auf das gewünschte Zeichen klicken, der betreffende Code wird zur Verwendung in Bascom Strings formatiert "{xxx}" und im Textfeld angezeigt.
Beispiele
Beispiel 1: Einfaches Menü
Beispiel 2: Alle Funktionen
Download
Um den Designer zu installieren muss die Setup.exe mit Administratorrechten ausgeführt werden.