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

VB.NET Discussion :

Distinguer entrée douchette et clavier


Sujet :

VB.NET

  1. #1
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut Distinguer entrée douchette et clavier
    Bonjour,

    J'ai un petit problème à soumettre.
    Pour le moment nous utilisons 2 types de saisie inventaire.
    Une par clavier quand on doit saisir des références non étiquetées code barre.
    Une par douchette quand les produits ont un code barre. Ceci oblige à des manipulations et c'est fastidieux.

    Nous voudrions donc modifier notre programme pour qu'il n'y ait qu'une option de saisie, un seul champ, et qu'en fonction de l'entrée, clavier ou douchette, le programme oriente la recherche du produit par la référence (clavier), ou le code EAN (douchette).
    Le hic, c'est que la douchette simulant un clavier, je n'arrive pas à trouver comment savoir si l'entrée provient du clavier ou de la douchette.
    Quelqu'un aurait-il une idée sur comment identifier le périphérique clavier qui a effectué l'entrée ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 504
    Par défaut
    Bonjour,
    Je m'étais posé la même question, dans le même contexte (inventaire sur un terminal mobile), mais en Windev.
    J'ai opté pour "mesurer" le temps mis pour faire la saisie dans le champ, donc le délai entre la saisie du premier caractère et la sortie du champ.
    Il faut juste trouver le bon timing.
    Par contre je ne l'utilisais pas pour faire la différence entre une référence et un code barre, car ce dernier peut être illisible par le scan (mal imprimé, abimé...).

    Autre solution, avec certains terminaux il est possible d'ajouter un préfixe et/ou suffixe à la chaîne renvoyée.
    Tu peux donc ajouter un caractère spécial (@, #, $ ...) pour identifier un scan, et supprimer ce caractère pour faire l'identification de l'article.

    Tatayo.

  3. #3
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Pour les caractères spéciaux, j'avais pensé à çà, jusqu'à ce qu'un fabricant chinois nous sorte des références commençant par 3 #
    Donc je ne voudrais pas prendre de risques.
    Sinon, tant pis, je créerai des configs de douchette avec 5 # en entête, en espérant qu'aucun fabricant ne fera une référence pareille !

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 504
    Par défaut
    La mesure de la "vitesse" de frappe fonctionne assez bien (en Windev Mobile tout du moins), je doute que quelqu'un soit capable de saisir 10 caractères en moins d'un quart de seconde .

    C'est la solution que j'avais adoptée.

    Tatayo.

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 564
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    .
    Quelqu'un aurait-il une idée sur comment identifier le périphérique clavier qui a effectué l'entrée ?
    pourquoi ne pas laisser l'opérateur activer un booléen en pressant par exemple entrée sur le clavier ?
    Si l'opérateur appuie sur la touche entrée du clavier alors les données proviennent du clavier.
    Dans le cas contraire alors les données viennent de la douchette.
    Sinon une solution sophistiquée consisterait à interroger le port série si la douchette l'utilise.
    Il faut éventuellement utiliser une API win32 comme CreateFile mais chercher s'il n'existe pas un équivalent dot NET

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 504
    Par défaut
    Mat.M => les douchettes que nous utilisons sont en USB, et sont vues par Windows comme de simples clavier.
    L'application ne peut donc pas faire la différence.
    Et par expérience, demander à l'utilisateur de le faire, pendant un inventaire, ça ne fonctionne pas.

    Tatayo.

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 564
    Par défaut
    bonjour oui j'y avais pensé à ça.
    C'est évident que si la douchette se connecte sur un port USB ça ne sera pas possible

  8. #8
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 96
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 739
    Par défaut
    Bonjour tout le monde,

    Citation Envoyé par m4k-Hurrican Voir le message
    Nous voudrions donc modifier notre programme pour qu'il n'y ait qu'une option de saisie, un seul champ, et qu'en fonction de l'entrée, clavier ou douchette, le programme oriente la recherche du produit par la référence (clavier), ou le code EAN (douchette).
    Sauf erreur d'interprétation, il me semble que la réponse est déjà dans la question.
    Si c'est un code EAN, c'est la douchette; si ce n'est pas un code EAN, ce n'est pas la douchette.
    Et même si le code EAN est tapé sur clavier, cela change quelque chose ?

    Après, je n'ai aucune expérience des douchettes, mais en magasin, au passage en caisse, lorsqu'un article n'a pas été enregistré, il n'y a pas de bip (ou un gros beuuup!). Donc comme beaucoup de protocoles de communication, il y a surement un système d'accusés de réception (conf. acknowledgement (ACK)).
    Tu n'as rien qui va en ce sens pour ton application et ta douchette ?

  9. #9
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Bonjour,

    @ Mat.M, comme une majorité de douchettes, les nôtres se font passer pour un clavier USB. La question est donc, entrée sur le clavier physique ou virtuelle de la douchette ?

    @ Kaitlyn, malheureusement, certaines références produits peuvent correspondre à un code EAN (on en a quelques unes).
    Et qui plus est, je sais j'avais simplifié, certains codes barres ne sont pas des EAN, mais du CODE39 ou du CODE128, qui identifient les références elles-même (et j'ajoute une saisie complémentaire de n° de série pour certains produits).

    La seule vraie solution, dans notre cas, est donc de savoir si on lit depuis le clavier ou depuis la douchette.
    Ajouter une chaîne de caractères improbables en début de séquence est la meilleure solution que j'ai trouvée, même si dans notre cas, cela ajoute une contrainte, car les utilisateurs devront flasher la séquence de programmation à chaque début d''enregistrement (les douchettes stockent un lot de codes avant de devoir être "vidées").
    Alors que si j'avais pu dire, cette entrée vient du clavier physique, celle là de la douchette, ils n'auraient pas eu besoin de flasher la séquence de programmation, et çà éviterait donc les risques d'oubli.
    Je suis certain qu'il y a une solution, mais je n'ai pas encore trouvé laquelle. En attendant, on va faire des tests avec une séquence ##### en entête, histoire d'avoir une solution fonctionnelle au moins.

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 504
    Par défaut
    Tu ne peux pas configurer les douchettes pour ajouter cette "chaîne improbable" en préfixe ?
    Toutes celles que j'ai eu en main permettaient de le faire (pour certaines on pouvait même mettre une chaîne différente pour chaque type de code barre).

    Tatayo.

  11. #11
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Tu ne peux pas configurer les douchettes pour ajouter cette "chaîne improbable" en préfixe ?
    Toutes celles que j'ai eu en main permettaient de le faire (pour certaines on pouvait même mettre une chaîne différente pour chaque type de code barre).

    Tatayo.
    Si, mais dès qu'elles passent au repos, leur programmation "s'efface".
    Il faut re-scanner une suite de codes barre pour refaire leur programmation (mode stockage, sans-fil, français, type de codes barres acceptés, et préfixe).

  12. #12
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 96
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 739
    Par défaut
    Salut,

    Citation Envoyé par m4k-Hurrican Voir le message
    certaines références produits peuvent correspondre à un code EAN (on en a quelques unes).
    Du code EAN en référencement interne, je doute du bien-fondé de la chose. Si ça ne concerne que quelques références, peut-être qu'il est possible de rectifier le tir. Je rappelle toutefois qu'il ne faut pas confondre un code EAN avec un code de longueur EAN, la clé fait la différence. Il en va de même pour tes autres types de codes que je suppose, ou plutôt qui sont surement normalisés.

    Sinon, as-tu pensé à ajouter des caractères non imprimables, en suffixes ou en préfixes, un peu à l'image des caractères de contrôles ASCII, genre start of text, end of text, end of transmission (conf. table ASCII). Ces caractères ne seront pas visibles dans la zone de saisie, mais le code saura les reconnaitre au moment du traitement.

    [EDIT]

    Ce besoin me semble quand même assez légitime, donc il y a de forte chance que la solution se trouve dans la doc de tes douchettes ou sur le site du fabricant.
    Dans le cas contraire, un peu d'ingénierie inverse devrait le faire aussi.

  13. #13
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    quel est le modèle de la douchette ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 504
    Par défaut
    Citation Envoyé par kaitlyn Voir le message
    Salut,
    Du code EAN en référencement interne, je doute du bien-fondé de la chose.
    Si les références sont codées sur 8 chiffres, on peut très bien "tomber par hasard" sur un code EAN8/Code39, utilisé sur une autre référence.
    Nous avons des fournisseurs qui (malheureusement) utilisent le code produit comme code barre.
    Donc s'il est sur 6 caractères, il peut très bien correspondre à une de nos référence interne, un numérique sur 6 caractères.

    Bref ce n'est pas si simple.

    Dans notre application d'inventaire, en cas d'ambiguïté nous affichons tous les articles trouvés, que le code soit saisi ou scanné.
    L'information "saisie ou scanné" nous servait plus pour des statistiques, pour connaître le taux d'étiquetage des articles en magasin.

    Tatayo.

  15. #15
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Citation Envoyé par kaitlyn Voir le message
    Salut,
    Du code EAN en référencement interne, je doute du bien-fondé de la chose. Si ça ne concerne que quelques références, peut-être qu'il est possible de rectifier le tir. Je rappelle toutefois qu'il ne faut pas confondre un code EAN avec un code de longueur EAN, la clé fait la différence. Il en va de même pour tes autres types de codes que je suppose, ou plutôt qui sont surement normalisés.
    En l'occurrence ce n'est pas du référencement interne mais des références fabricants numériques, qui malheureusement, dans certains cas, passent pour des EAN8 (clé comprise).
    L'étiquetage dans ce cas, n'est pas le nôtre.

    @Pol63 : Les douchettes sont des NETUM NT-1228BL

    Je précise une chose, car je nuis pas certain que j'ai été clair.
    Les opérateurs passent dans le stock avec la douchette à la main, scannent un lot de produits (un casier), et ensuite vident la mémoire dans le programme d'inventaire.
    Tant qu'ils bossent çà va, mais quand ils partent manger par exemple, la douchette est mise en charge, s'éteint au bout d'un moment, et sa programmation n'est pas conservée, on doit re-scanner la séquence de programmation pour que tout fonctionne.

    Si nos étiquettes étaient uniformes, on aurait pas ce souci, mais en fonction des fabricants, y compris nous même (on fabrique une partie de nos produits), les étiquetages diffèrent.
    Code EAN13 pour certains, références fabricant pour d'autres (et certains chinois comme HIK ont des références monstrueuses, c'est plus la description qu'une référence), voir code interne SAP pour un.
    Sans compter qu'on peut avoir d'autres codes barre indiquant le n° de série, l'identifiant de modèle, etc... et qu'il faut donc compter sur l'opérateur pour viser le bon.
    C'est effectivement pas si simple.

  16. #16
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    j'ai rarement vu une douchette qu'on ne puisse pas utiliser sans émulation clavier (c'est toujours plus simple sans émulation clavier)

    chatgpt a l'air de confirmer (pourquoi y a encore des gens sur les forums alors que chatgpt existe ... ?)
    on peut en lisant un code barre de configuration la passer en mode port COM, du coup ca ferait un port série sur le pc, du coup avec la classe serialport il n'y a plus qu'à lire ce qui rentre et ce n'est plus un clavier
    à tester ...

    [edit]
    sur le pdf du manuel dans la table des matières on voit USB COM Port Emulation dans Wired Connection, ca doit etre ca que chatgpt a trouvé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 618
    Par défaut
    ça me semble aussi étrange que la douchette perde sa programmation à l'extinction (après une décharge complète, à la limite, et encore)
    à moins qu'on lui fasse lire les code barres de "restore factory default"

  18. #18
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Citation Envoyé par umfred Voir le message
    ça me semble aussi étrange que la douchette perde sa programmation à l'extinction (après une décharge complète, à la limite, et encore)
    à moins qu'on lui fasse lire les code barres de "restore factory default"
    C'est pourtant ce qui se passe.

    Bon, de toute manière, on va finalement changer d'ERP, donc ce ne sera bientôt plus mon problème.
    On va se débrouiller avec les préfixes pour le prochain inventaire, en fin d'année, et ensuite, ils verront avec l'éditeur, moi je ne serai plus que l'interlocuteur temporaire.

  19. #19
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 96
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 739
    Par défaut
    Salut,

    La semaine passée, j'ai feuilleté la doc, mais je n'ai pas eu l'occasion de revenir sur le forum pour en échanger.

    Pour vos douchettes, si je récapitule, le tout consiste à mettre le focus sur un composant (ou widget), et les références scannées sont tapées dessus. J'avais aussi remarqué que, pour ajouter la chaine #####, il fallait scanner au moins une 12-aine de codes-barres de configuration. À l'inverse, pour ajouter un code de terminaison (Carriage Return) un seul suffit. De même pour les identifiants de type de codes-barres, un ou deux scans suffisent.

    Ne sachant pas s'il était question de post- ou (pré-)traitement, j'avais fait une simulation avec comme préfixe un contrôle ctrl+\ (ça nécessite 4 scans). Cette combinaison n'est pas possible manuellement sur le clavier physique utilisé, et ça a été très simple de détecter ce code de contrôle dans un événement keydown. Est-ce que ceci répond à la question initiale?


    Maintenant, j'imagine que, si la fenêtre cible venait à perdre le focus, ça s'accompagnerait d'une perte de données.
    Pour plus de fiabilité, il faudra s'orienter vers les api système et utiliser l'entrée brute (raw input). Au passage, il me semble qu'il y a une discussion sur ce sujet dans mon historique de messages.
    En gros, ça consiste à sélectionner un type ou une instance d'entrée HID (les scanneurs à main ont leurs propres sous-classes HID) et recevoir les données sur la fonction de rappel choisie.
    Je ne sais pas si c'est accessible en .net, et l'usage d'une dll n'est pas possible d'après Microsoft. De souvenir, rien n'est précisé pour les Dll statiques. Donc au pire ça reviendrait à faire une application mandataire, ou un pont (proxy, bridge) et faire usage de communication interprocessus (RPC, stream, pipe, etc). Ce faisant, vous aurez quelque chose de plus robuste et sophistiqué.


    https://learn.microsoft.com/en-us/wi...win32/inputdev

  20. #20
    Membre émérite
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 741
    Par défaut
    Bonjour,

    Merci pour les infos, mais comme indiqué dans mon message précédent, j'abandonne tout développement sur notre système actuel.
    Vu que nous n'avons plus qu'un inventaire à faire avec, on va juste utiliser le système des préfixes, même si c'est un peu contraignant.
    Plus tard, le nouvel ERP gèrera çà à sa manière.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2018, 20h48
  2. Distinguer entre les feuilles d'un classeur selon le choix de l'utilisateur
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2015, 19h13
  3. Pouvoir distinguer entre deux sorties audio.
    Par asoka13 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 16/10/2010, 00h41
  4. distinguer entre l'image d'un visage humain et l'image d'autre objet
    Par naim2009 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 21/02/2009, 02h00
  5. Réponses: 15
    Dernier message: 12/07/2006, 12h11

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