INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Debouncing einer Tastatur



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

04.11.2015, 09:21
Beitrag #21

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Zitat:Du hast nur ein Eingabegerät - wie willst du also jemals herausbekommen, mit welcher Hand getippt wurde!?
Zwischen die Hände kommt ein Brett. Big Grin
Da sollen die Versuchspersonen mal versuchen innerhalb einer Sekunde zwei Zeichen zu tippen die durch ein Brett getrennt sind. Big Grin Aber eigentlich bitte ich sie einfach drum, das funktioniert meistens...Brett gibts trotzdem! Big Grin


Erstmal danke für das Aufräumen. ^^ Sieht wirklich viel besser aus! Smile Kommt jetzt auch so in's Programm.

Den Zeichensatz zu "filtern" hab ich grade versucht...Mit mäßigem Erfolg und nicht wirklich elegant. Ich hab select Glieder versucht. Die TRUE Auswahl klappt, aber bei FALSE muss ich mindestens eine 0 schreiben was ich nicht will. Kann ich noch schöner filtern/so das es tatsächlich so funktioniert wie es soll?


Angehängte Datei(en)
14.0 .vi  EventstrukturVergleichDoppelteTastatur.vi (Größe: 9,87 KB / Downloads: 37)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2015, 09:30
Beitrag #22

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Debouncing einer Tastatur
Hallo dehmelp,

Zitat:Die TRUE Auswahl klappt, aber bei FALSE muss ich mindestens eine 0 schreiben was ich nicht will.
In deinem vorigen VI hattest du alle Zeichen in dein Array geschrieben, deshalb habe ich das BuildArray außerhalb der Event-Struktur platziert. Da du das jetzt anscheinend nicht mehr willst, musst du dein Array natürlich innerhalb des Events zusammenbauen…

Siehe VI: ich habe das Filtern etwas anders implementiert…


Angehängte Datei(en)
14.0 .vi  EventstrukturVergleichDoppelteTastatur.vi (Größe: 13,96 KB / Downloads: 40)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2015, 09:45
Beitrag #23

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Voll gut!!!
Hab es grade schonmal in mein Programm eingebaut und es macht genau das was ich will! Smile
Ich schreib gleich noch ein wenig Text in das Script (für Anfänger wie mich) damit jeder alles verstehen kann und dann lade ich es als Lösung hoch.

Nochmal Danke an alle für die Hilfe!!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2015, 10:20
Beitrag #24

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Hier einmal das Script.


-Es erlaubt den Vergleich von eingegeben Zeichen mit (vorher) definierten Zeichen.

-Es ist sensitiv für die Reihenfolge.

-Es kann durch einen Filter dafür sorgen das zeitgleich zwei Sequenzen(z.B.: links "ASD", rechts "LKJ") auf einer Tastatur aufgezeichnet und überprüft werden.(Dafür das Script 2mal in's Programm einfügen und anpassen)


Angehängte Datei(en)
14.0 .vi  TastatureingabeVonSequenzenMitVergleich.vi (Größe: 14,98 KB / Downloads: 42)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2015, 10:44 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2015 10:48 von GerdW.)
Beitrag #25

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Debouncing einer Tastatur
Hallo dehmelp,

ich habe deine "Lösung"-Markierung mal wieder aufgehoben…

Zitat:Hier einmal das Script.
Was für ein Script?
Das man in LabVIEW von VIs redet, solltest du eigentlich schon gelernt haben…

Zitat:Es erlaubt den Vergleich von eingegeben Zeichen mit (vorher) definierten Zeichen.
Ok.

Zitat:Es ist sensitiv für die Reihenfolge.
Ok.

Zitat:Es kann durch einen Filter dafür sorgen das zeitgleich zwei Sequenzen(z.B.: links "ASD", rechts "LKJ") auf einer Tastatur aufgezeichnet und überprüft werden.
Falsch: Leider hast du den Filter verkehrt programmiert - nicht so wie in meinem Beispiel… (Ich habe extra mein Beispiel nochmal runtergeladen und kontrolliert!)
Tipp: Indizes zählen in LabVIEW (wie in jeder vernünftigen Programmiersprache) von Null an!

Zitat:(Dafür das Script 2mal in's Programm einfügen und anpassen)
Ganz falsch.
Grundregel 1: nur eine Eventstruktur pro VI!
Grundregel 2: Wenn mehrere Eventstrukturen pro VI, dann NIE auf das gleiche Event schauen lassen!

Du siehst, dass ich meine Gründe habe, die Markierung aufzuheben…

Warum willst du mit zwei Eventstrukturen arbeiten?
Warum nicht mit einer Eventstruktur und zwei Schieberegistern (für "links" und "rechts")?
Warum nicht dein Programm skalierbar machen und mit Arrays arbeiten: ein String mit den erlaubten Zeichen für "links" und einer für "rechts"?
Manchmal ist es wirklich hilfreich, sich eine sinnvolle Programmstruktur zu überlegen und einen PAP zu erstellen - BEVOR man zu programmieren anfängt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2015, 12:44 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2015 12:54 von dehmelp.)
Beitrag #26

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Hi Gerd.
Das mit dem aufheben der Markierung ist gut! Lösungen die nicht gut sind sollten ja nicht markiert sein.

Das mit dem Filter ist doch in diesem Fall so das die Offset-Nummer an die case-Struktur weitergegeben wird...Und die Nummer kann doch grade nur die Werte 1,2 oder 3 annehmen. Sonst nimmt er den default case und der übernimmt (in diesem Fall) doch alle anderen Indizes.

Das mit den 2 gleichen Eventstrukturen im VI versteh ich noch nicht ganz...Bei mir funktioniert das problemlos. Ist der Grund einfach das es fehleranfälliger ist?
Ich kann natürlich auch einfach eine Eventstruktur benutzen, hab das nur aus "Zeitgründen" nicht gemacht...Es war halt einfach schneller mit kopieren.


Das Planen einer Programmstruktur wäre wirklich besser. Das Problem ist ich stückel mir das neue Vi meist aus meinen alten Vi's zusammen um Zeit zu sparen...Ist natürlich nicht elegant, aber ich bin der einzige der die Vi's benutzt. Dazu kommt das ich den Eindruck habe das "pfusch" einfach schneller geht und für mich muss das Ding einfach nur funktionieren. Nicht schön, nicht effizient, nicht bedienerfreundlich, einfach nur funktionieren.
Trotzdem freu ich mich natürlich wenn ich hier neue Möglichkeiten lerne und somit auch meine Vi's langsam schöner werden...Dauert aber noch ein bisschen bis ich so schnell wie ihr werde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.11.2015, 11:16
Beitrag #27

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Uuuuund ich hab wieder eine Frage...

Also jetzt hab ich beide Abfragen in eine Eventstruktur gesteckt, zwei Schieberegister gebaut. Und das ganze in einer While-Schleife verpackt...Je nachdem wie die Probanden reagieren werden sie ja immer (wenn auch manchmal ohne großen Unterschied) mit einer Tastendrucksequenz schneller fertig sein. Jetzt würde ich aber gerne für beide Sequenzen die Reaktionszeiten haben...Für die langsamere Reaktion kein Problem, die führt ja eh zum verlassen der Schleife, aber für die schnelle fällt mir grade nichts gutes ein.
(Außer totaler Unfug mit Zeitstempel bei jeder Iteration zusammen mit richtige Sequenz TRUE/FALSE in ein Array schreiben und beim TRUE/FALSE wechsel dann die eine Reaktionszeit auslesen...Das sieht aber scheiße aus.)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.11.2015, 11:20
Beitrag #28

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Debouncing einer Tastatur
Hallo dehmelp,

Zitat:Außer totaler Unfug mit Zeitstempel bei jeder Iteration zusammen mit richtige Sequenz TRUE/FALSE in ein Array schreiben
Wieso soll es Unfug sein, wenn du zu jedem Tastendruck auch den Zeitstempel mitspeicherst?
Und wenn man dann noch speichert, wann der Test beginnt, kann man prima ausrechnen, wielange der Probant zum Drücker das Tasten benötigt hat…

Zitat:Das sieht aber scheiße aus.
Das könnte an deiner Programmierung liegen. Können wir aber mangels VI nicht beurteilen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2015, 13:13
Beitrag #29

dehmelp Offline
LVF-Grünschnabel
*


Beiträge: 34
Registriert seit: Jul 2015

Ni Academic Site License 2015
2013
DE



RE: Debouncing einer Tastatur
Moin.
Hab das VI (Ha, wollte grade wieder Skript schreiben. Big Grin ) jetzt auf zwei Tastensequenzen und zwei Reaktionszeiten angepasst.

Eure Meinungen? Das sieht irgendwie chaotisch aus...Und geht doch bestimmt eleganter.

Grüße.


Angehängte Datei(en)
14.0 .vi  EventstrukturVergleichDoppelteTastatur3.vi (Größe: 21,23 KB / Downloads: 30)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2015, 17:17
Beitrag #30

GerdW Offline
______________
LVF-Team

Beiträge: 16.073
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: Debouncing einer Tastatur
Hallo dehmelp,

was mir so auffällt:
- Im Timeout-Event wird ein Array leider gelöscht, ist sicher nicht so gewollt…
- im Event "Taste gedrückt" bekommst du nicht nur die gedrückte Taste gemeldet, sondern auch den Zeitpunkt. Warum verwendest du diese Angabe nicht?
- ist es wirklich nötig, im Timeout einen Wert "999" in das/die Array einzutragen? Ohne diese zusätzliche Schikane könnte dein VI deutlich einfacher werden…
- da sind mehrere Coerciondots zu sehen…
- die zwei oberen Schieberegister würde ich mit U8-Werten versehen: im Event bestimmst du doch schon einen U8-Wert - warum packst du den nicht ins Array?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Maustaste in Ereignisstruktur abfragen / Bedienelement verliert Tastatur-Focus Horst 1 1.014 25.07.2019 12:31
Letzter Beitrag: Horst
  Navigation spaltenweise mit Tastatur in einer Baumstruktur GT123 5 1.542 25.01.2018 08:56
Letzter Beitrag: IchSelbst
  virtuelle Tastatur ichmaglachs 7 4.064 28.12.2015 18:35
Letzter Beitrag: Trinitatis
  Booleschem Element eine Taste der Tastatur zuweisen aw 6 4.991 15.01.2014 15:55
Letzter Beitrag: Trinitatis
  Eigene virtuelle Tastatur Matze 6 4.884 02.07.2013 19:00
Letzter Beitrag: dimitri84
  Eingabe nicht über Tastatur sondern über RS232 Schnittstelle? niete0815 12 7.569 29.11.2011 12:32
Letzter Beitrag: niete0815

Gehe zu: