LCD Menu Hauptseite

Aus ProjectWiki
Version vom 31. August 2017, 03:21 Uhr von Mat (Diskussion | Beiträge) (Spenden)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Ü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

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

Dieser Eintrag ist ein Link, das Ziel auswählen

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

Value Einstellungen


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

Function ID select

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

Tool: interactive LCD character table

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ü

LCD Menu Sample 1

Beispiel 2: Alle Funktionen

LCD Menu Sample 2

Download

Um den Designer zu installieren muss die Setup.exe mit Administratorrechten ausgeführt werden.