Hallo,
ich versuche mich z. Z. mit dem Thema LCD Menue.
Hier im RN Wissen habe ich ein Besipiel gefunden http://www.rn-wissen.de/index.php/Ba...e_Machine_Menu .
Das Beispiel (Version2) habe ich auf dem Arduino Uno mit DFRobot LCD Sheld (http://robosavvy.com/store/product_i...oducts_id/1862)
zum laufen gebracht. LCD funktioniert und die Tasten am Analogeingang funktionieren auch.
Genau so wie das blättern im Menue.
Nur mit dem Verständnis der Datentabelle und deren abfrage hapert es noch.
Wobei der Inhalt der Tabelle an sich verstanden ist.
hier mal ein Auszug wo ich nicht weiter komme.
Zu einem ist es die Tabelle an sich.Code:'********* State routines *************************************************** '--------------------------------------------------------------- 'Subroutine: Change_state 'Call from: main loop 'Purpose: Status der State Machine feststellen und ggf. Wechseln 'Result: Pointer auf State / Variable State_renew '--------------------------------------------------------------- Change_state: lds R8, {State} lds R9, {State + 1} For I = 1 To Key_buttons Read W If Key = Keycode(i) Then If W <> Loadlabel(null) Then State_renew = 1 Key = Key_null 'reset key status after get a new state of state machine (prevent influence on GOSUBs) State = W End If End If Next I Read State_gosub 'Adresse des akt. Unterprogramms einlesen Read Lcd_textbuffer 'read LCD text Return '--------------------------------------------------------------- 'Subroutine: Change_state_by_sub 'Call from: subroutine 'Purpose: change state of state machine by a subbroutine '--------------------------------------------------------------- Change_state_by_sub: State_renew = 1 Gosub Change_state Return '--------------------------------------------------------------- 'DATA: State Machine 'Result: Pointers auf States , Unterprogramme ' Menütexte 'Format: 1. Zeile: für jede Taste genau eine Verzeigung ADR2 (see Key_buttons=xx) ' 2. Zeile: Sprunglabel als ADR2 für ein ggf. anzuspringendes Unterprogramm ' 3. Zeile: Displaytext des akt. Status als DATA Feld 'Hinweis: wenn nichts passieren soll wird das Label NULL eingetragen '--------------------------------------------------------------- Null: 'Null is a dummy flag for State and Gosub -> do nothing Return S10: Adr2 Null : Adr2 S20 : Adr2 Null : Adr2 S11 'Key_plus|Key_minus|Key_prev|Key_next Adr2 Null 'Subroutine for current State Data "1 Butterfly Bascom" 'Menue Display Text S11: Adr2 Null : Adr2 Null : Adr2 S10 : Adr2 Null 'Key_plus|Key_minus|Key_prev|Key_next Adr2 Null Data "11 Rev 2"
Die sieht mir aus wie normale Labes (S10: S20: ....) die ich auch bei Gosub z.b. benutze.
Woher weiß Bascom das dies eine Datentabelle ist?
Die Zeile
Adr2 Null : Adr2 S20 : Adr2 Null : Adr2 S11
sind die Sprungmarken für die Einzelnen Tasten zum anzeigen des nächsten Menuepunktes.
Muss ich der Tabelle irgendwo sagen wie viel Einträge pro Datensatz gemacht werden?
Und das auslesen will sich mir auch noch nicht so recht erschließen.
Mit Read W wird die Tabelle gelesen und mit der For Next Schleife,
werden die Daten pro Datensatz z. B. Adr2 Null : Adr2 Null : Adr2 S10 : Adr2 Null
ausgelesen aber wie wird dann die zweite und dritte Zeile ausgelesen ?
Also die Zeilen
Adr2 Null
Data "11 Rev 2
Die Bascom Hilfe zu Read und Loadlabe war auch nicht so aufschlussreich.
Vielleicht kann mir einer hier im Forum die Funktion bzw. das Arbeiten mit
Tabellen erläutern.
Gruß Ingo







Zitieren

Lesezeichen