LabVIEWForum.de
Event wenn Taste gedrückt gehalten wird - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Event wenn Taste gedrückt gehalten wird (/Thread-Event-wenn-Taste-gedrueckt-gehalten-wird)

Seiten: 1 2


Event wenn Taste gedrückt gehalten wird - phylin - 19.07.2012 09:03

Hi,

ich steuere einen Motor an. Dafür gibt es einen Befehl, der ihn los fahren lässt und einen Befehl, der ihn wieder stoppt.

Das klappt soweit:
Ich wollte das ganze mit nur einem Bedienelement Button steuern:
Wird der Button mit der Maus gedrückt gehalten (True), fährt der Motor. Wird die Taste losgelassen stoppt er (False).
Das klappt auch soweit. Ich hab dafür das Wertänderungs event des Buttons benutzt. Das Schaltverhalten steht auf "bis zum loslassen schalten". Er löst dadurch das Event aus, wenn er gedrückt wird und nochmal wenn er losgelassen wird (siehe Bild).

Jetzt das Problem:
Ich möchte, dass das ganze auch per Hotkey funktioniert. Das Problem dabei ist, wenn ich einen Hotkey für den Button einstelle, z.B. die F1-Taste, und ich F1 dann drückte, wird der Button ganz schnell hintereinander ausgelöst. Also ganz viele Events abgefeuert. Es soll aber nur ein Event beim drücken und eins beim loslassen ausgelöst werden.

Gibt es dafür einen Lösungsansatz?


RE: Event wenn Taste gedrückt gehalten wird - Y-P - 19.07.2012 11:42

Bahn Wenn Du auf "Value change" abfragst, dann wird doch der Tastendruck bei Deiner Event-Struktur nur einmal ausgewertet.

Gruß Markus


RE: Event wenn Taste gedrückt gehalten wird - GerdW - 19.07.2012 11:49

Hallo Markus,

es gibt doch sowas wie eine Tastenwiederhol-Funktion (schon im OS), welche bei Taste-gedrückt-halten mehrere Tasten-Druck-Events auslöst. Dies wird den OP stören...

@phylin:
Probier doch mal andere Events wie "Taste gedrückt" und "Taste losgelassen" (stattdessen/mit zusätzlicher Logik) aus...


RE: Event wenn Taste gedrückt gehalten wird - phylin - 19.07.2012 12:27

(19.07.2012 11:42 )Y-P schrieb:  Bahn Wenn Du auf "Value change" abfragst, dann wird doch der Tastendruck bei Deiner Event-Struktur nur einmal ausgewertet.

Gruß Markus

Hab ich auch gedacht. Aber wenn man den schalter auf "bis zum loslassen schalten" stellt, dann kriegt man 2 events. Einmal fürs draufdrücken und einmal fürs loslassen. fand ich gradios.

@gerd:
Tastenwiederhol funktion hatte ich auch ausprobiert. da passiert bei mir garnichts. egal wie ich den button einstelle, das event wird nie ausgelöst.

Ich hab auch probiert einen dummy button mit hotkey zu belegen, der dann den go/stop button nur 1x aktiviert. Er aktiviert diesen dann nur 1x obwohl er gedrückt gehalten wird (siehe anhang). Aber das läuft irgendwie auch nicht so sauber. Und ich hab keine möglichkeit zu prüfen, wann der Button los gelassen wird.

Meine neuste Überlegung ist, dass man den hotkey antippt für GO und nochmal antippt für Stop, statt ihn gedrückt zu halten.
Aber ich werd mir auch mal gedanken über "Taste gedrückt" machen...


RE: Event wenn Taste gedrückt gehalten wird - GerdW - 19.07.2012 12:31

Hallo phylin,

"Taste gedrückt" und "Taste losgelassen" entsprechen genau deinen beiden "Value change"-Events bei dem Button. Du solltest nur den "Hotkey" nicht mit dem Button verknüpfen, um doppelte Event-Generierung zu vermeiden. Man kann Tasten nämlich auch (unabhängig von Eingabeelementen) über das VI abfragen...


RE: Event wenn Taste gedrückt gehalten wird - phylin - 19.07.2012 12:40

Wenn ich ein Event "taste gedrückt" mit einem Button verknüpfe klappt das bei mir nicht. Mach ich etwas falsch?
z.B.
Taste gedrückt event: LED auf True
Taste losgelassen event: LED auf False

Jetzt kann ich den Button drücken wie ich will. Nichts passiert.


RE: Event wenn Taste gedrückt gehalten wird - eb - 19.07.2012 13:06

Hallo phylin,

evtll. ist hier Polling der Tastatur gemeint und nicht explizit die Eventstrutkur. Mit der "Input Device Control" unter der 7.1 Palette->Advanced.
Gruß


RE: Event wenn Taste gedrückt gehalten wird - phylin - 19.07.2012 13:11

(19.07.2012 13:06 )erik.brenncke schrieb:  Hallo phylin,

evtll. ist hier Polling der Tastatur gemeint und nicht explizit die Eventstrutkur. Mit der "Input Device Control" unter der 7.1 Palette->Advanced.
Gruß

Stimmt, danke. steht sogar in der context hilfe drin. Habs 2x gelesen und immer falsch verstanden... jetzt funktionierts. mal sehen wie ich das sinnvoll einbauen kann. edit: wobei es bei taste gedrückt nicht wirklich klar wird. die kontexthilfe zu taste losgelassen ist da um einiges deutlicher.


RE: Event wenn Taste gedrückt gehalten wird - GerdW - 19.07.2012 15:11

Hallo phylin,

nee, ganz einfach mit 2 Events arbeiten! Den Tastenstatus musst du dir schon selber merken...

Edit:
- Du kannst natürlich noch auf eine bestimmte Taste filtern, die Event-Struktur stellt entsprechende Werte bereit.
- Du kannst natürlich noch deinen Button damit verknüpfen...


RE: Event wenn Taste gedrückt gehalten wird - phylin - 19.07.2012 15:53

Ja, so hatte ich es jetzt auch gelöst, danke. Hatte dazu ein bespiel im NI forum gefunden mit "VTaste" auslesen.
Sehr praktisch, weil ich sonst für 12 buttons je 2 events gebraucht hätte. Nur etwas blöd das bei "Taste losgelassen" nicht auch der "Vtaste" abgefragt werden kann. Das macht das ganze nochmal umständlicher mitm Schieberegister, für den Fall das jemand Hotkey gedrückt hält und nebenbei zusätzlich eine taste antippt.
(wobei der Schieberegister glaube ich momentan garnichts bringt, so wie ich ihn eingebaut hab, muss ich nochmal drüber nach grübeln...)

PS: was ist mit scancode gemeint bei diesen events?