Bascom Frage zu Tabellen (State Machine Menu )

scotch

Neues Mitglied
30. Mai 2010
1
0
1
Sprachen
Hallo,
ich versuche mich z. Z. mit dem Thema LCD Menue.
Hier im Forum habe ich einen älteren Beitrag gefunden
http://www.avr-praxis.de/forum/showthread.php?669-Men%FCproblem&highlight=state%20machine
Hier wird auf das Beispiel "State Machine Menu" von der rn-wissen Seite http://www.rn-wissen.de/index.php/Bascom_State_Machine_Menu eingegangen.
Das Beispiel (Version2) habe ich auf dem Arduino Uno mit DFRobot LCD Sheld (http://robosavvy.com/store/product_info.php/products_id/1862)
zum laufen gebracht. LCD funnktioniert 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.

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"

Zu einem ist es die Tabelle an sich.
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 Hilfe zu Read und Loadlabe war auch nicht so aufschlussreich.

Gruß Ingo
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)