Bonjour à tous,
Je mets en place l'utilisation d'une douchette de scan de codes barre.
La douchette fonctionne, et je récupère correctement ce qu'elle lit via les fonctions sOuvre, sLit etc.
Pour précision, cette récupération sans soucis se fait dans le thread principal.
J'ai utilisé la doc et les exemples pour dépatouiller le code. L'exemple fourni ne m'inspirait pas : une boucle infinie de lecture du buffer du port com.
Je voulais intercepter l'utilisation de la douchette pour déclencher le traitement.
Pas de problèmes : sEvénement fait l'affaire.
Là où ça se corse, c'est au niveau des valeurs renvoyées...
Si je fais un simple sLit dans le thread principal, je récupère correctement les valeurs de la douchette, sur 13 positions (EAN13) : une seule ligne de 13 caractères dans le Trace, notamment.
Par contre, si je passe par sEvénement, ça foire : la fenêtre de trace de la procédure appelée par sEvénement me renvoie deux lignes. L'une de 8 caractère la deuxième de 5 caractères complétés par <\>
(Mis à par le <\>, les 8 et 5 cractères représentent bien la valeur du code barres)
Toujours dans cette procédure, si j'affecte une variable globale, celle-ci ne retient que la deuxième ligne de 5 caractère sans <\>
De même, la file que je remplis avec le sLit n'est affectée que par la 2e ligne de 5 caractères sans <\>
J'ai lu que sEvénement utilise un thread qui lui est propre. Est-ce là l'explication ?
Quelqu'un peut m'expliquer s'il existe une "subtilité" qui m'a échappé ?
Bref, je serais tenté de dire que c'est une bizarrerie de WD, ou une absence de doc exhaustive...
D'avance merci pour les réponses que vous m'apporterez.
Partager