PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Scan d'un code barre (EAN13) le buffer reviens vide.
Scan d'un code barre (EAN13) le buffer reviens vide.
Started by Matt, Mar., 29 2006 5:57 PM - 6 replies
Posted on March, 29 2006 - 5:57 PM
Lorsque je scan une code barre Ean13, dans le champ de saisie en cours, j'ai bien la valeur de celui-ci qui s'affiche. Ce que j'aimerais faire par contre c'est que peut importe le focus pris dans ma fenetre, un traitement s'execute au scan d'un code barre.

Ainsi, dans le code d'initialisation de ma fenetre j'ai :

sOuvre(1,5000,5000,50)
sFixeParamètre(1,19200,0,8,0)

gnTimer = Timer("Réception",20)


La Procédure Réception correspond à:

IF sDansFileEntrée(1)>0 THEN
Trace(sLit(1,sDansFileEntrée(1)))
END


La valeur retournée est nulle. A quel niveau se trouve mon erreur?
Merci de votre aide.

Cordialement.
Matt.
Posted on March, 29 2006 - 7:47 PM
Ca ne fonctionne pas en mettant ta procedure dans "A chaque modification
de " ?

Pour une application similaire, procedure a chaque scan, j'ai simplement
fait suivre un bouton avec la procedure au champ de saisie et parametre
le lecteur pour qu'il envoie a chaque scan un Tab suivie d'un retour
chariot, a la fin de la procedure je remet le focus sur le champ de saisie.
Posted on March, 29 2006 - 8:55 PM
Justement, j'aimerais eviter d'avoir a redonner le focus a mon champ. J'aimerais pouvoir intercepter le code barre et ce peut importe ou soit le focus. c'est pour cela que j'ai mis un timer a l'initialisation de la fenetre qui appelle ma procedure reception.
Posted on March, 30 2006 - 2:10 AM
Bonjour,

Je pense surtout que les parametres de com ne sont pas corrects et que rien n'arrive.

Concernant la lecture du port, je préfère:

sOuvre(NumPort,512,512) //suffit amplement

*** Reception***
Buffer=""
TANTQUE sDansFileEntrée(sPort)
Buffer+=sLit(sPort,1)
FIN

si Taille(Buffer)= la taille attendue alors
//Traitement
...
fin

Ca fonctionne très bien depuis des années sur des matériels très différents.

*******
Une autre voie (préconisée): sEvenement ... voir la doc.

Bon dev,
PEGOS
Posted on March, 30 2006 - 11:55 AM
Le lecteur est connecté en rs232



Le code :
//Initialisation de la fenetre

sOuvre(NumPort,512,512) //suffit amplement
gnTimer = Timer("Reception",20)

//Procédure Reception***
Buffer=""
TANTQUE sDansFileEntrée(sPort)
Buffer+=sLit(sPort,1)
FIN
Trace(Buffer)
//Fin Procédure Reception***


Ne renvoie que des chaine vide

De même, avec sEvenement :

//Déclaration globale du projet

sOuvre(1,512,512,sTimeoutDéfaut,Vrai)
sEvénement (1, sEveCaractèreReçu , "Lecture")

//Procédure Lecture ***
Info ( sLit (1, sDansFileEntrée (1)))
//Fin Procédure Lecture ***



La procédure ne renvoie rien du tout.
Posted on March, 30 2006 - 1:21 PM
Bonjour,

Pour t'assurer que les infos sont bien envoyées, essaie en premier avec Hyperterminal.
Si ça ne fonctionne pas, change de PC; peut-être le port HS ?
Quel est le matériel et est-il bien configuré ?

PEGOS
Posted on March, 30 2006 - 7:16 PM
Bonjour,

Apriori le lecteur est connecté en RS232 ou USB ?

Si oui, dans le même cas de figure j'ai fait mon ouverture de port COM à l'ouverture de l'application en précisant un sEvenement.
Donc a chaque fois qu'il y a une écriture sur le port COM, je lis ce qui y a d'ecrit et je traite.

Ai-je répondu ?

Ne pas oublier de fermer le port COM en sortant !

A bientot