PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrfachbelegung von Tasten (wie beim Handy)



Dr.Ice2000
19.06.2008, 07:46
Hallo,

ich stehe mal wieder auf dem Schlauch ...

Ich möchte eine Tastatur, oder einen Eingang abfragen. Dieser Eingang soll, wenn er zweimal innerhalb einer oder zwei Sekunden aktiv wird (Taste gedrückt) einen Ausgang für eine bestimmte Zeit schalten.

Das mit dem zweimal drücken ist ja nicht so das Problem, aber wie löse ich das mit der Zeit dazwischen ?

Also einmal drücken - irgendeine Reaktion
Zweimal in 2 Sekunde gedrückt - andere Reaktion

Ich habe mal irgendwo gesehen, dass jemand lange und kurze Tastendrücke abfragt, aber das finde ich leider nicht mehr, das müsste ja ähnlich funktionieren, oder ?

Vieleicht habt Ihr ja ne Idee ?

Gruß Markus

Jaecko
19.06.2008, 07:52
Sowas wollt ich auch schon mal machen, dass ich z.B. mit nem Nummernblock Texte schreiben kann à la SMS.
Gemacht hab ichs noch nicht, aber evtl ne Idee dazu:
Bei jedem Tastendruck wird eine Variable um 1 hochgezählt. Ein Timer schaut im 1-2 Sekundentakt nach, welchen Wert die Variable hat und setzt die wieder auf 0.
Ein Problem hierbei ergibt sich noch, wenn der Timer genau zwischen 2x drücken nen Reset macht.

EDIT: Mit dem lang/kurz abfragen geht genau so, nur andersrum; d.h. der Timer erhöht bei Tastendruck die Variable, der Wert wird dann im Hauptprogramm ausgewertet.

TobiasBlome
28.06.2008, 13:31
Also ich habe das mal mit 2x drücken gemacht um einen Sparmodus (ECO) zu aktivieren:



'ECO deaktivieren -> 2 mal drücken
If Pinc.5 = 1 And Taster1_gedrückt = 0 And Eco = 1 Then
Taster1_gedrückt = 1 'Merker das Taster1 gedrückt wurde (wegen entprellen!!!)
If Taster1_zähler > 0 Then 'wenn zähler größer 0 dann wurde der Taster innerhal einer sek schon mal gedrückt!!!
Eco = 0 'also ECO Modus ausschalten
End If
Taster1_zähler = 80 'Zähler auf 80 setzen (100 = ca. 1 sek)
End If
________

Timer1:
'Tastersteuerung
If Taster1_zähler > 0 Then 'für Wartezeit vom Taster (entprellen u.s.w.)
Decr Taster1_zähler
End If

Return

Tobias

Vitis
30.06.2008, 02:06
das timeout geht ganz einfach.
Bei jedem Tastendruck setzt man n Flag auf 0,
das dann von nem Timer wieder hochgezählt wird,
solange die "Obergrenze" nicht erreicht ist.
Die Obergrenze ist dann der Timeout.