
Zitat von
Millenniumpilot
Hallo Andree,
hat funktioniert
Leider bin schon etwas älter, sprich langsamer, und musste daher die Verzögerung auf 120ms einstellen.
Nochmals vielen Dank.
Gruß Dirk
Aaach so... Ich hatte befürchtet, daß Du einen meiner fast in jedem Programm vorhandenen Lösungsansatz von vorn herein ausschließt. Wenn Du Dich auf zwei oder drei Tasten einlassen kannst, dann könnte diese Funktion doch interessant sein:
Code:
Function Adjust_value(byval Up_down As Byte, byvalue schritt as byte)
Cls
Adj1:
Locate 2 , 1
Lcd Up_down ; " "
Taste = Analog_key()
If Taste = 32 Then Up_down = Up_down + schritt
If Taste = 33 Then Up_down = Up_down - schritt
If Taste = 10 Then
Adjust_value = Up_down
Exit Sub
End If
Goto Adj1
End Function
Die dazugehörige Tastaturabfrage (hier die klassische Tastatur an einem Analogport) die lustigen Zuordnungen von 10 - 32 - 33 haben ihren Grund einfach darin, daß die von mir häfig eingesetzen IR-Fernbedienungen diesen Code -prgup - prgdwn - ok - liefern und ich nur die Funktion austauschen muss, um umzusteigen) könnte dann so aussehen:
Code:
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Analog_key() As Byte
Local Ws As Word
Analog_key = 255
Start Adc
Ws = Getadc(1)
If Ws < 900 Then
Select Case Ws
Case 0 To 100
Analog_key = 32
Case 400 To 600
Analog_key = 33
Case 650 To 750
Analog_key = 10
End Select
Call Beep_confirm()
End If
Waitms 100
End Function
Die Adjust_value Routine ist flexibel ausgelegt und erlaubt die Angabe einer Schrittweit pro Tastendruck. Das kann ganz nützlich sein, z. B. bei der Einstellung von Variablen von D/A Wandlern, wo man oft in 10ner Schritten voranschreiten möchte.
Eine Veränderung einer Variable via Tasten sähe als Aufruf dann so aus
(am Beispiel der Systemvariablen _min):
_min = adjust_value (_min, 1)
Das Spielchen kann man noch durch Minimum- und Maximumwerte erweitern etc. (entsprechende If Abfrage zum Rücksetzten).
Grüße
Henrik
Lesezeichen