IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

intercepter Lecteur CB USB mais pas le clavier [WD14]


Sujet :

WinDev

  1. #1
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    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.

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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.

  3. #3
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    Voici ce que j'obtient avec un trace
    j'ai ajouter un evenèment sur ma fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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.

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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.

  5. #5
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    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)

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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.

  7. #7
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    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.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 557
    Par défaut
    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....

  9. #9
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    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).

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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...

  11. #11
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    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?

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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.

  13. #13
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    Non dans ce cas je sort de ma procédure d'évènement mais le caractère s'affiche

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Evénement(test,"saisie1",258)
    Si je fais 1 du pavé num, le 1 ne s'écrit pas dans mon champ.

  15. #15
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 915
    Par défaut
    Merci Rednight,

    Ton mode marche nickel.. Je n'ai plus qu'à bosser sur la gestion de mon lecteur.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détecte une mais pas 2 clé usb
    Par flo456 dans le forum Windows XP
    Réponses: 5
    Dernier message: 06/02/2007, 14h13
  2. connection avec câble usb mais pas wifi
    Par Pau dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 22/01/2007, 16h40
  3. Réponses: 4
    Dernier message: 18/01/2006, 14h49
  4. Bloquer le clavier mais pas la souris
    Par Zenar dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/10/2005, 12h02
  5. Clé usb reconnue mais pas en scsi
    Par Tefonline dans le forum Matériel
    Réponses: 3
    Dernier message: 18/04/2004, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo