|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Iniciado por LE MOAL, 10,mar. 2009 12:42 - 4 respuestas |
| |
| | | |
|
| |
Publicado el 10,marzo 2009 - 12:42 |
Bonjour,
Je développe pour un client une application windevMobile pour un datalogic memor. J'ai une fenêtre avec un champ en saisie. A l'affichage de cette fenêtre je positionne le focus sur mon champ en saisie et lorsque j'utilise la touche SCAN du Datalogic je récupère automatiquement le code barre scanné par ce dernier.
Afin de pouvoir gérer un certain nombre de touche de fonction du datalogic, j'ai posté un évènement avec WM_KEYDOWN. Je récupère bien l'ensemble des touches manipulés par l'utilisateur mais mon code barre lors du Scan ne s'affiche plus dans mon champ de saisie.
Quelqu'un pourrait-il m'indiquer dans quelle structure ou par quel biais je peux retrouver ce code barre, sachant que la structure _EVE ne le contient pas.
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Publicado el 10,marzo 2009 - 19:05 |
Bonjour,
Pouvez-vous indiquer le code que vous utilisez dans la procédure WM_KEYDOWN ?
Cordialement, Gautier Cuquemelle
------------------------------------- www.v-ingenierie.com
Intégrateur en solutions de collectes de données par code barre et RFID ------------------------------------- |
| |
| |
| | | |
|
| | |
| |
Publicado el 10,marzo 2009 - 23:50 |
Dans la partie initialisation de mon champ en saisie, nRetSai=Evénement("Proc_EvenementSaisie","SAI_cb",WM_KEYDOWN)
Dans la procedure Proc_evenementSaisie PROCEDURE Proc_evenementSaisie()
sCodBar est une chaîne = ""
DélaiAvantFermeture(100) Erreur("Le Code Barre saisie n'est pas valide"+sCodBar, ErreurInfo()) // Message d'avertissement car le fichier est vide
// Test de la touche de fonction utilisée SELON _EVE.wParam CAS 48 // Scan du code barre sCodBar=SAI_cb // Appel de la fonction de vérification du code barre SI Proc_VerifieCB(sCodBar) = Faux ALORS DélaiAvantFermeture(100) Erreur("Le Code Barre saisie n'est pas valide"+sCodBar, ErreurInfo()) // Message d'avertissement car le fichier est vide gsCodeBarre="" SINON gsCodeBarre=sCodBar // Enregistrement dans le fichier Proc_SauveSaisie() FIN Après je teste les touches VK_RETURN, VK_ESCAPE, et d'autres. Le 48 correspond à l'activation sur la datalogic memor de la touche SCAN.
J'espère avoir été clair. Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 11,marzo 2009 - 11:42 |
Bonjour,
Vous n'avez pas besoin de déclarer manuellement l'évènement WM_KEYDOWN : Windev fait ça très bien de manière automatique: - Afficher le code associé au champ (Clic droit sur le champ puis "Code") - Repérez sous la fenêtre de code la série de petites icônes : il y en a une représentant une touche de clavier rouge, et une verte. Cliquez sur la touche rouge pour créer automatiquement la procédure associée à l'évènement WM_KEYDOWN (touche enfoncée), ou sur la touche verte pour créer la procédure WM_KEYUP (touche relachée).
Je pense que vous êtes parti dans la mauvaise direction... En général, on peut fonctionner de deux manières différentes pour gérer la lecture d'un code-barres:
1) L'émulation clavier, ou mode wedge : le scanner est un permanence activé, et renvoie les données saisies comme si elles avaient été lues au clavier. Ce mode est activé par défaut sur les dernières versions de firmware des terminaux Memor. Pour vérifier si le mode wedge est activé, cliquez sur l'icône représentant un code-barres en bas de l'écran : un menu s'ouvre permettant de configurer le scanner et d'activer/désactiver le mode wedge. Dans ce mode de fonctionnement, il est difficile de savoir si les données viennent du clavier ou du scanner.
Le scanner étant par défaut paramétré pour ajouter automatiquement le code CR a la fin du code lu, il suffit de gérer l'évènement WM_KEYUP:
SI _EVE.wParam=13 ALORS
FIN
2) Le pilotage "manuel" du scanner. Il faut dans ce cas avoir désactivé le mode wedge !! Ce mode permet d'activer et de désactiver le scanner à la demande, et de pouvoir être sur que le code a été lu par le scanner et non saisi au clavier. Il faut ajouter le composant Datalogic (inclus dans Windev) au projet.
Code d'initialisation de la fenêtre:
Initialisation(Handle(FEN_Fenêtre1),Vrai) ActiveScanner() SpécifieCallBack("LectureCode")
Code de fermeture de la fenêtre:
DésactiveScanner()
Procédure locale LectureCode:
Procedure LectureCode(nTypeEvenement) SI nTypeEvenement=WM_SCAN_COMPLETE ALORS
SAI_Code=DernierCodeBarreLu()
SI VerificationCode()=Faux ALORS Erreur("Ce code est incorrect !") SAI_Code="" FIN FIN
Je ne garanti pas que ce code fonctionne car je n'ai pas de Memor à portée de main pour tester, mais ça doit être ça à peu de choses près.
Sinon il y a des boites spécialisées dans ce genre de matériel (V-Ingénierie par exemple...) qui peuvent s'occuper du développement
Cordialement, Gautier Cuquemelle
------------------------------------- www.v-ingenierie.com
Intégrateur en solutions de collectes de données par code barre et RFID ------------------------------------- |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,marzo 2009 - 01:12 |
Merci pour l'ensemble de vos informations et conseils. J'apprécie d'autant plus que la qualité de vos réponses prouve vraiment que V-ingénierie serait à même de réaliser ce type de prestation.
Merci encore et je ne manquerai pas de faire appel à vous dans ce cas là.
Cordialement |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|