Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Comment désactiver certaines touches du clavier ?

Résolu !
Accéder à la solution

1abvi3w ...

 

Quel est le but de ton code par rapport au fait de placer directement le code cible dans la structure case de la boucle productrice ?

 

Est-ce le fait de pouvoir générer "une nouvelle demande" alors que le code cible n'a pas encore fini son exécution ?

 

Si "oui" ... tu peux arriver au même résultat avec une seule boucle.

 

Mais peut-être n'ai-je pas compris le but recherché (par ton code) ... peux-tu m'expliquer ses avantages, merci.

0 Compliments
Message 11 sur 26
2 105 Visites

Je ne connais pas son code original donc c'est difficile à dire.

 

J'essayais seulement de lui permettre d'avoir des sous-VI qui ne font q'attendre des événements de clavier "filtrés" et ne réagir qu'aux touches qui les intéressent.

 

Seulement avoir une boucle (VI principal) qui réagit à toutes les touches et qui fait un filtre, mon exemple est simpliste mais si le nombre de sous-VIs devient important, et que chacun d'eux s'intéresse à des touches particulières, la boucle principale pourra répartir à des UserEvents différentes pour chaque sous-VI...

 

Bref c'est une suggestion, le but n'est pas de créer des boucles, comme il mentionnait avoir des sous-VI, ce sont déjà des boucles.

0 Compliments
Message 12 sur 26
2 099 Visites

Voici un peu ce que j'avais en tête.

 

keydown filter.png

Message 13 sur 26
2 094 Visites

@ 1abvi3w :

 

Sans discuter sur "le fond" de ton code ... pourquoi utilises-tu une Queue ?

 

(de plus c'est une Queue de 1 seul élément ... une Queue de 1 élément c'est "anti-queue" ça  Smiley heureux )

 

ci-dessous, ton code à l'identique, mais sans Queue ... et qui fonctionne aussi bien que le tien.

 

xxxxx.png

 

bon ... et tout simplement ceci ... cela ne pourrait-il pas aider ?

C'est tout simple ... ça filtre, et ça évite d'avoir une redondance du code cible si on appuie sur d'autres touches clavier pendant que la cible s'exécute.

(c'est juste "un principe" ... à compléter et/ou adapter. Ci-joint en LV2014)

 

yyyyyy.png

 

PS: il ne faut pas travailler avec le "scan-code", mais avec la valeur "char".

Le "scan-code" c'est la position de la touche sur le clavier (!)

Il n'y a aucune certitude de portabilité en utilisant le "scan-code".

0 Compliments
Message 14 sur 26
2 084 Visites

L'intérêt de la named queue c'est qu'on n'a pas à passer des fils entre les VIs. C'est une pratique courante en LabVIEW. Un seul élément est utile dans ce cas-ci puisqu'on a un array et ça garantie qu'il n'y aura pas d'éléments bidons dans la queue.

 

Encore une fois je me rabat sur l'objectif de Bastien de ne pas itérer ses boucles inutilement, il souhaite itérer seulement sur certaines touches... Ne connaissant pas son architecture je tente d'ouvrir les horizons pour qu'il puisse faire sa propre conception.

 

Je suis d'accord pour le char, je l'avais mentionné dans ma première réponse mais comme c'est un détail, je ne suis pas revenu là-dessus.

0 Compliments
Message 15 sur 26
2 078 Visites

C'est une pratique courante en LabVIEW

 

oui, je connais   Smiley clignant de l'œil   si on désire passer des infos entre des VIs distincts, ok.

(je n'ai pas toujours en tête que l'on parle de VIs totalement distincts)

 

ne pas itérer ses boucles inutilement

 

oui (bof) je ne vois pas très bien le but de ne faire "tourner" sa boucle que (et uniquement) pour 1, 2 ou 3.

Si on filtre sur une structure case .. et que les autres cas arrivent sur un code vide ... je ne vois pas où est le soucis.

Mais bon ... je ne "discute pas" ... il a probablement ses raisons / contraintes.

De plus tous les codes jusqu'à présent n'évitent pas la redondance par appuis répétitifs (peut-être que ce cas de figure ne le gêne pas, je n'en sais rien)

Pour ce dernier point, perso j'aime bien le "flush event queue". (j'ai placé un exemple, il en fera ce qu'il veut)

 

au passage ... cela peut éventuellement intéresser certains,

pour bloquer et débloquer complètement le clavier ET la souris .. il y a une fonction de l'API Windows BlockInput

ça donne ceci :

 

 

yyyyyy.png

 

attention, avec "255" en entrée, le clavier et la souris sont complètement OFF.

 

Le seul soucis de cette fonction, c'est qu'elle ne fonctionne qu'avec un "exe" ... en mode Administrateur.

Windows refuse l'accès avec un code d'erreur "Access Denied" si on est pas en mode Admin.

 

 

 

 

0 Compliments
Message 16 sur 26
2 075 Visites

une chose que je n'aime pas trop dans ton code est le fait que tu créent 32.767 User-Event ... pour en fait n'en utiliser que 3.

J'ai testé une version utilisant uniquement 3 User-Event ..  et le résultat était concluant.

Ensuite, je me suis dit ... pourquoi utiliser des User-Event multiples ? (Quel serait l'avantage de cette méthode ?)

 

J'ai donc câblé une version avec un User-Event unique ... et au prix d'une structure case supplémentaire, il me semble que cela fonctionne tout aussi bien.

 

yyyyyy.png

 

Une raison au choix de ces User-Event multiples par rapport à un seul ?

 

C'est possible ... tu as peut-être une raison / arguments à ce type d'approche.

Comprendre les raisons qui t'ont porté à cette façon de faire m'intéresse.

0 Compliments
Message 17 sur 26
2 050 Visites

donc ta boucle du haut fonctionne pour un seul VI esclave. Mon point était d'avoir une boucle principale qui ne dépend pas du nombre de VIs qui s'abonneront à certains caractères.

 

La boucle principale n'a pas besoin d'être codée spécialement pour certains groupes de caractères, les sous-VI décident eux mêmes quels caractères les intéressent.

 

Encore une fois, tout dépend du monsieur qui a posé la question initiale, il voulait désactiver certaines touches du clavier et avait plusieurs sous-VIs, je ne comprend pas trop sa question donc ça devient embêtant d'élaborer.

Message 18 sur 26
2 041 Visites

Mon point était d'avoir une boucle principale qui ne dépend pas du nombre de VIs qui s'abonneront à certains caractères.

La boucle principale n'a pas besoin d'être codée spécialement pour certains groupes de caractères, les sous-VI décident eux mêmes quels caractères les intéressent.

 

ça, c'est typique de quelqu'un qui développe en équipe, qui voit "global", qui voit "réutilisable".

C'est une approche que je n'ai pas (développant seul) ... je vois un besoin, j'y apporte une solution, sans pour autant penser "outil polyvalent".

Les 32.767 User-event me gênent ... je veux dire par là que c'est une vision "globale" qui "coûte cher".

Venant de l'assembleur, je n'ai pas (du tout) l'habitude d'utiliser des ressources si je n'en ai pas absolument besoin.

 

Cependant, au delà de toutes ces considérations, j'aime beaucoup l'idée ... kudo.

 

0 Compliments
Message 19 sur 26
2 031 Visites
Encore une fois, ma suggestion est large et polyvalente puisque la question initiale suggère qu'il y a plusieurs sous-VIs, la conception finale devra être complétée par monsieur Bastien qui ajustera selon son besoin réel.
0 Compliments
Message 20 sur 26
2 025 Visites