Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2012, 15h35   #1
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Par défaut intercepter Lecteur CB USB mais pas le clavier

Bonjour,

Voilà je développe un programme qui utilise un lecteur code barre.
Dans un premier temps j'ai utilisé un lecteur code barre sur port COM afin de gérer les infos que je reçoit avec le lecteur.

N'ayant qu'un port com sur mon PC (et l'utilisant déjà pour une communication avec un automate) j'utilise un adaptateur USB/COM.
Je suis sous Windows 7 et j'ai une déconnexion intempestive de mon adaptateur.
Quand j'utilise mon automate mon port USB/COM plante, il faut que je débranche et je rebranche mon adaptateur pour pouvoir réutiliser mon lecteur (après réouverture du port sous Windev.

Si j'utilise la même chose sous XP (métriel et logiciel), pas de problème.

Afin de résoudre mon problème je voulais utiliser un lecteur code barre USB.
Ainsi je paramètre mon lecteur avec un caractère spécifique en début et fo=in de lecture puis j'intercepte les évènements claviers.

c'est là que je ne sais pas trop comment faire.
il faut que j'intercepte le lecteur code barre mais que le clavier fonctionne.
Je ne dois pas inscrire les infos du lecteur à l'écran si je suis dans une zone de saisie.

Je ne vois pas trop comment m'y prendre.

Si vous avez quelques pistes je suis preneur.
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h44   #2
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
J'ai pas de douchette pour tester mais est-ce que les évènements générés par la douchette sont les même que le clavier ?
Voir avec l'entier retourné par _eve.wparam peut être.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 16h20   #3
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Voici ce que j'obtient avec un trace
j'ai ajouter un evenèment sur ma fenêtre
Code :
Evénement(GetTouche, FEN_Fenêtre1..Nom + ".*", WM_KEYDOWN)
et ma procédure GetTouche qui fait Trace(_EVE.wParam,_EVE.lParam,_EVE.nom, Caract(_EVE.wParam)) me donne
Citation:
16 2752513 SAI_Saisie1 
48 720897 SAI_Saisie1 0
16 2752513 SAI_Saisie1 
52 327681 SAI_Saisie1 4
16 2752513 SAI_Saisie1 
56 589825 SAI_Saisie1 8
16 2752513 SAI_Saisie1 
53 393217 SAI_Saisie1 5
16 2752513 SAI_Saisie1 
48 720897 SAI_Saisie1 0
16 2752513 SAI_Saisie1 
49 131073 SAI_Saisie1 1
16 2752513 SAI_Saisie1 
57 655361 SAI_Saisie1 9
13 1835009 SAI_Saisie1 <\r>
mon lecteur est configurer pour lire les code EAN128 avec l'envoie d'un RC en fin de lecture.

Donc à priori que ce soit du lecture ou du clavier c'est la même chosse pour l'évènement.
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 16h23   #4
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
J'ai ressorti une douchette usb qui trainait, la réponse est oui, quand je scanne les valeurs de retour sur l'évènement sont les même que celles envoyées par le clavier ,sauf pour les chiffres.
exemple : pour le chiffre 1 la douchette fait la touche "Maj" et la touche "&".

C'est du bricolage mais dans ton champs tu pourrais bloquer les chiffres au dessus des lettres sur clavier, et laisser le pavé numérique.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 16h33   #5
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Mon besoin est de faire un traitement quand j'ai une infos qui viens du lecteur code barre mais je ne veux pas bloquer le clavier.

Quand mon info viens de mon lecteur je ne dois pas interférer avec le clavier donc je ne dois pas inscrire ce qui viens du lecteur (comme ci rien n'avais été tapé au clavier.

Dans mon exemple mon code barre ne contiens que des chiffres mais en générale j'ai de l'alpha numérique sur mes codes barres.

La solution du port COM pour moi étais la meilleur et la plus simple. malheureusement mon adaptateur plante. (et je ne veux pas faire le tour des adaptateurs pour en trouver un qui marche)
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 16h40   #6
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
Essaye de regarder dans le gestionnaire de périphériques, clic droit sur tout les "concentrateur usb racine" onglet gestion alimentation et tu décoche "autoriser win7 à éteindre le port" ou un truc du genre.

J'avais une douchette qui se déconnectait sans raison quand j'utilisais un autre périphérique USB en entrée, et ça ma résolut mon souci.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h54   #7
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Le paramètre d'alimentation n'est pas en cause.
(je viens de le modifier et j'ai toujours mon problème)

Concrètement quand j'utilise une fonction de mon automate (j'action un presseur) dans ce cas mon adaptateur USB/Serie plante. (aucune info dans les journaux d'évènement)
Je dois le débrancher puis reouvrir mon port Com dans Windev.
Avec Xp je n'ai pas ce souci avec le même matériel.
C'est pour cela que je voulais passer par un lecteur USB.
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 13h17   #8
Membre habitué
 
Inscription : mars 2003
Messages : 124
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 124
Points : 140
Points : 140
Bonjour,

une solution est de modifier le le caractère de fin ou de début de la douchette.

En effet, on peut configurer les douchettes pour que la valeur lue soit préfixée ou suffixée par un caractère spécifique. Pour cela, il faut voir avec le manuel de la douchette pour choisir le caractère.

Ensuite lorsque vous intercepter l'évênement, vous faites un traitement pour identifier si c'est le clavier ou la douchette.

Voilà la seule idée qui me vient....
Ry_Yo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h01   #9
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Oui j'étais aussi partie sur la configuration d'un caractère de début et de fin.
Mais comment je peux faire pour que les caractères lu avec le lecteur code barre ne soit pas "envoyé" sur mon programme.

Je m'explique j'utilise un champ de saisie pour inscrire manuellement une information, dans ce cas je ne dois pas utiliser le lecteur code barre (et il ne faut pas que si je scan un code barre les infos apparaissent dans mon champ de saisie).
Ensuite je passe en utilisation par code barre et là je dois le gérer (dans ce cas je n'ai pas de souci car je n'ai pas de champ de saisie).
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h10   #10
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
Pour capter "avant" que l'info sois saisie dans le champ, essaye en passant par le traitement "touche appuyé" si tu peux à ce moment capter que tu reçoit le caractère de début du scan. A tester...
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h33   #11
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Ok mais comment je vais pour ne pas envoyer le caractère.

Mon raisonnement est le suivant.

Mise en place d'un évènement sur touche appuyé.
Je lis le caractère
si c'est mon caractère de début du lecteur code barre je met un booléen à vrai puis je met tous les caractères qui arrivent dans une variable jusqu'à mon caractère de fin de scan.
Mais ces caractère je ne dois pas continuer le traitement d'appui.

Si je ne suis pas dans la lecture du scna je dois continuer le processus d'appuie de touche et donc faire comme si il n'y avais pas d'évènement.

Je sais pas si j'explique bien ce que je n'arrive pas à faire.

comment bloqué le caractère pour qu'il ne s'affiche pas dans le champ de saisie il y a peut être un renvoyer faux à mettre dans la procédure de l'évènement afin d'arrêter l'appuie sur la touche?
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h39   #12
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
J'ai bien compris la problématique.
si booléen=vrai (le cas du scan)
Un RETOUR/STOP ne fonctionne pas ?
Ou saisie=""
fin
J'ai pas le temps de tester dsl.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h42   #13
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Non dans ce cas je sort de ma procédure d'évènement mais le caractère s'affiche
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h44   #14
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
Dans l'aide :
Remarque : Si le traitement retourne une valeur (forcément de type entier), l'événement Windows est arrêté : c'est cette valeur qui est renvoyée. Si le traitement ne renvoie PAS de valeur, l'exécution se poursuit normalement.

si j'ai bien compris :
Essaye en renvoyant le booléen depuis ta procédure d’événement.

Edit: j'ai un doute en relisant l'aide, je comprends pas bien comment on récupère la valeur de retour de ta procédure. Mais l'idée est la...

Edit 2 : bon j'ai tester et ça marche :

Procédure appelée par l'évènement
Code :
1
2
3
4
test(MessageWindows, wParam, lParam)
SI wParam=49 ALORS // si j'appuie sur la 1 du pavé num
	RENVOYER Vrai
FIN
Dans le code bouton appuyé du champs de saisie:
Code :
Evénement(test,"saisie1",258)
Si je fais 1 du pavé num, le 1 ne s'écrit pas dans mon champ.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/02/2012, 08h54   #15
Membre Expert
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 226
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 33
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 226
Points : 2 084
Points : 2 084
Merci Rednight,

Ton mode marche nickel.. Je n'ai plus qu'à bosser sur la gestion de mon lecteur.
Merci
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider.
Un exemple vaut mieux que de longs discours...


Pensez à utiliser les votes, merci
mail.spam est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h00.


 
 
 
 
Partenaires

Hébergement Web