-
        

Ergebnis 1 bis 10 von 10

Thema: Matrix-Taster zwischenspeichern (Problem gelöst)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    30
    Beiträge
    33

    Matrix-Taster zwischenspeichern (Problem gelöst)

    Anzeige

    Hallo zusammen,
    ich habe das RN-Control Board und möchte später so eine 3x4 Matrix Tastatur anklemmen. Jetzt gibt es ja für das Board den Code für die Tasterabfrage:
    Code:
    Function Tastenabfrage() As Byte
    Local Ws As Word
    Tastenabfrage = 0
    Ton = 600
    Start Adc
    Ws = Getadc(7)
    
    	If Ws < 1010 Then
    	Select Case Ws
    
    	Case 410 To 450
    	Tastenabfrage = 1
    
    	Case 340 To 380
    	Tastenabfrage = 2
    
    	Case 265 To 305
    	Tastenabfrage = 3
    
    	Case 180 To 220
    	Tastenabfrage = 4
    
    	Case 100 To 130
    	Tastenabfrage = 5
    
    	End Select
    	
    End If
    End Function
    Wie schaffe ich es nun, in einem Sub, mehrere male hintereinander die Tasten abzufragen. Also zum Beispiel wenn ich Taster 2 dann 1 und dann 3 drücke, dass ich in einer Variable 213 stehen habe? Am Ende möchte ich das mit der # bestätigen. Für das RN-Control könnte man erstmal die Taste 5 dafür nutzen!

    Google und die Boardsuche habe ich bemüht, aber ich glaub mir fehlt der richtige Suchbegriff!

    Freu mich auf antworten!

    Benjamin

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Hm evtl so:

    StoreString ist ein String.

    So "speichern":
    Code:
    StoreString = StoreString + Str(Tastenabfrage)
    Tastenabfrage = 0
    Und evtl so auslesen:
    Code:
    DIM laenge as byte
    DIM Taste as String * 2
    laenge = LEN(Storestring)
    IF laenge > 0 THEN
      Taste = LEFT(StoreString, 1)
    ENDIF
    Wär mal eine der Möglichkeiten.
    #ifndef MfG
    #define MfG

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    30
    Beiträge
    33
    wow das ging aber schnell

    hmm mit einem String kann man aber nicht rechnen oder?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Naja, kommt drauf an, was man unter "rechnen" versteht.
    Musst halt den Wert dann zuvor umwandeln:

    TasteAlsByte = val(TasteAlsString)


    Nachtrag: Noch was vergessen: nachdem du eine Taste ausgelesen hast, muss die natürlich auch vom Speicherstring abgezogen werden:

    StoreString = MID(StoreString, 2)
    #ifndef MfG
    #define MfG

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    30
    Beiträge
    33
    damit muss ich zuhause mal rumprobieren. mein ziel ist es eine zahl (z.B. 150000) aus dem EEPROM zu lesen, zu dieser 213 addieren (mit hilfe der Taster eingegeben) und anschließend das ganze wieder zurück ins eeprom. Das mit dem lesen und schreiben ist kein problem. es mangelt nur an dem "auslesen + zusammensetzen"

    Offtopic PS: Bei deiner Homepage geht der obere link nicht, also wenn man oben auf die überschrift (cihome) klickt.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Meinst du das grosse "CIHome" über "Aktualisieren"? Kann nicht gehen, das ist kein Link; das ist schon die oberste Seite. Wenn du auf "Home" drückst, kommst du also immer zu dieser Seite zurück.
    #ifndef MfG
    #define MfG

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    30
    Beiträge
    33
    @Jaecko: hast ne PN

    gibt es denn noch eine andere möglichkeit? werde trotzdem nachher mal die oben genannte versuchen!

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo Benjamin,

    ich würde das Ergebnis der Tastenabfrage zwischenspeichern und dann nach Betätigung der #-Taste weiterverarbeiten.

    Wenn zwischendrin eine weitere Taste gedrückt wird (außer #), multiplizierst du das bisherige Ergebnis mit 10 und addierst den neuen Wert dazu. Die Variable muss natürlich groß genug dimensioniert sein. Mit dem Wert kannst du dann auch weiterrechnen.
    Gruß, Stefan

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    30
    Beiträge
    33
    Hey StevieL,
    ich hab das gerade mal so eingegeben und scheint super zu funktionieren. Falls jemand nochmal das Problem hat hier mal der Code
    Code:
    Dim X As Byte
    Dim y as long
    Y = 0
    While x <> 5
    Y = y *10
    Input "Zahl eingeben: " , X
    Y = Y + X
    Wend
    Y = Y / 10
    Print "X ist: " ; x
    Print "Y ist: " ; y
    end
    speichert solange zahlen vom terminal (rs232) bis die 5 gedrückt wird!
    Edit: Habe noch Y = Y/10 ergänzt, damit die eingegebene 5 (was später die # sein soll) nicht mit reingeschrieben wird

    Wenn jemand Zeit hätte, könnte er mir vielleicht erklären, wieso das funktioniert? Warum *10? Ich möchte das ja nicht nur Stumpf abschreiben sondern was lernen

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo Benjamin,

    ist ja eigentlich ganz einfach. Wenn mehr als eine Taste gedrückt wird, wird die bisherige Einerstelle zur Zehnerstelle. Das macht man einfach damit, dass man die Einerstelle mit 10 multipliziert. Die bisherige Zahl rutscht somit eine Stelle nach links. Da wird dann das Ergebnis der neuen Taste dazugezählt. Bei erneutem Tastendruck wird die Zehnerstelle zur Hunderterstelle und die Einerstelle zur Zehnerstelle. Auch das passiert wieder, indem du mit 10 multiplizierst. Jetzt rutschen beide Zahlen wieder eins nach links. Und so kannst du das beliebig weitertreiben (so lange es der Speicherplatz der Variablen erlaubt).
    Gruß, Stefan

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •