PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → composant PocketFalcon WDM9
composant PocketFalcon WDM9
Débuté par Olivier C, 21 nov. 2005 23:56 - 8 réponses
Posté le 21 novembre 2005 - 23:56
bonjour,

j'ai un falcon 4220 avec un scanneur intégré et j'ai un souci avec le composant PocketFalcon présent windev mobile 9. l'exemple marche tres bien mais lorsque j'utilise le composant dans mon projet,j'arrive pas à lire les codes à barres avec la fonction prévu a cet effet : bRecupereResultatScan()

voici mon code :

//Initialisation de la fenetre
SI bOuvrirAccesScanner(sPeripherique) ALORS
// Lit des données avec le scanner
SI bLectureAvecEvenement(Handle(MaFenêtre)) = Faux ALORS
Erreur(sErreurInfo())
SINON
// Gère les événements de lecture
Evénement("CallbackScanner", "*.*", 5103)
FIN
FIN

//Procedure locale
PROCEDURE CallbackScanner(Message, wParam, lParam) //wParam : 1:non lu ; 13:Lu
// Vérifie la lecture
SI wParam=1 ALORS
Forme1..CouleurFond = iRougeClair
Multitache(50)
SINON
Forme1..CouleurFond = iVertClair
Son("ok.wav")
Multitache(50)
FIN
Forme1..CouleurFond = iTransparent
// Récupère les informations du scanner
bRecupereResultatScan(lParam,SCode,sType)
TableAjouteLigne(Table1," - Code : "+SCode)


J'ai egalement essayé ca : bRecupereResultatScan(lParam,&SCode,&sType)
mais rien a faire ca marche pas non plus !
L'aide sur le composant explique qu'il faut récuperer les données de la facon suivante :
// Récupère les informations du scanner
Trace("Type du code barre : " + stResultatScan.nTypeCodeBarre)
Trace("Taille du code barre : " + stResultatScan.nTailleCodeBarre)
Trace("Code barre : " + stResultatScan.sCodeBarre)
Mais apparement cette description n'est pas a jour et ne correspond pas au composant.

Quelqu'un saurait il comment faire fonctionner ce composant ?!

Merci de votre aide!!
Posté le 21 novembre 2005 - 23:48
Bonjour,
Si le Composant Falcon est du même type que le Composant Symbol, nous avons eu aussi quelques questions lors de sa mise en oeuvre. Je vous conseille de tester directement l'exemple Composant Falcon sur votre terminal afin de mieux comprendre son fonctionnement. Si vous souhaitez plus de renseignements, n'hésitez pas ! Divers messages sur ce Forum ont été postés au sujet du Composant Symbol avec explications.

Cordialement.
Posté le 22 novembre 2005 - 14:26
J'ai deja essayé le composant directement sur mon PSC Falcon et il marche. Ce qui est genant c'est que dans l'exemple d'utilisation, la fonction 'bRecupereResultatScan' n'est pas utilisé, a aucun endroit. Hors lorsque l'on integre le composant dans un nouveau projet, seule cette fonction est accessible pour la lecture des données, de plus la description du composant ne correspond pas avec le composant lui meme..

Bug? si non, j'aimerai bien savoir comment cette fonction fontionne . Si oui, j'essai de corriger le composant?

Merci de vos reponses.
Posté le 22 novembre 2005 - 21:19
Bonjour,

Si cela peut vous aider, pour le Composant Symbol, voici le code:

Déclarations globales de maFenêtreDeSaisie
Evénement("CallBackScan","*.*",5103)

Initialisation de maFenêtreDeSaisie
pScannerSymbol.bOuvrirAccesScanner()
pScannerSymbol.bActiverScanner()

SI pScannerSymbol.bLectureAvecEvenement(Handle(MaFenêtre..Nom)) = Vrai ALORS
ViderChampsCodeBarre() // Vide les champs de saisie
SINON
Erreur("Une erreur est survenue pendant la mise en place du mécanisme de lecture par événement",pScannerSymbol.sErreurInfo())
FIN

PROCEDURE CallBackScan(sMessage, wParam, lParam)

// Si on arrive dans cette procédure, c'est qu'un code barre a été lu
// Lecture du scan reçu
//pScannerSymbol.pclScannerSymbol:LireScanRecu()
pScannerSymbol.ValeurCodeBarreEvenement(Txt_CodeBarre,Txt_Longueur)

// Affichage du code barre
RemplirChampsCodeBarre()


PROCEDURE RemplirChampsCodeBarre()

// Afficher le nouveau code barre lu
Txt_CodeBarre=pScannerSymbol.stResultatScan.sCodeBarre


---------------------------------------------------------------------------

Si le composant Falcon fonctionne il doit également fonctionner dans votre application. Si vous en avez les sources, faîtes les fonmctionner pour voir le fonctionnement.

Si rien ne fonctionne ou que vous perdez trop de temps, utilisez une application "Wedge" probablement fournie également par Falcon et qui devrait être présente sur le terminal. Cette application, propre à chaque fabricant, permet d'activer la lecture d'un code quelque soit l'application dans laquelle vous vous trouvez. Bien entendu vous pouvez la paramètrer. Cependant elle limite parfois les contrôles que vous souhaiteriez effectuer sur les codes lus...

Cordialement.
Posté le 30 novembre 2005 - 16:54
J'ai trouvé et il y avait bien un BUG dans le composant fourni avec Windev Mobile...ou plutot un oubli !

La fonction publique bRecupereResultatScan() n'était pas implémenté ! L'exemple avec le composant n'utilisant pas directement cette fonction mais directement la fonction de la classe, cela marchait mais des lors que l'on utilisait la fonction dans une autre appli, forcement cela ne fonctionnait plus !

C'est juste un petit oublie mais bon !

Pour ceux qui ont le même probleme que j'ai eu, je posterai la correction à apporter (que je n'ai pas sous les yeux pour le moment) ce soir ou demain !

Il faudrait penser à mettre à jour le desciptif aussi ou ne figure pas comment utiliser cette fonction (cela dit, c'est tres simple).

J'avais bien compris le fonctionnement donc...

A bientot,
Posté le 01 décembre 2005 - 17:46
Voici la correction à apporter :

Dans Procédures Globales>pScanFalcon>bRecupereResultatScan :

PROCEDURE bRecupereResultatScan(lParam,sCode,nType)

pclScannerFalcon:bRecupereResultatScan(lParam,sCode,nType)

Recompiler le composant.

J'espere que ca evitera à d'autre de chercher !

PS : Le fonctionnement du composant Falcon est différent de celui du Symbol

@+
Posté le 11 janvier 2007 - 19:15
Le bug déjà présent sur le composant Flacon de Windev Mobile 9 est toujours présent sur la version 11...
Posté le 03 mai 2007 - 11:57
Je comprends pas très bien ta correction, le composant à cet endroit contient déjà

bRecupereResultatScan (<lParam>, <sCode>, <nType>)
Posté le 20 décembre 2007 - 16:25
il y a deux fonctions nommé bRecupereResultatScan :
une accessible en public (que tu utilise ensuite dans ton application)
et une privé qui gere tout le bordel

par defaut (en tout cas chez moi), la fonction : bRecupereResultatScan public ne contient aucune ligne de code (chelou qd meme !) il faut donc ajouter la ligne :
bRecupereResultatScan de la classe pour faire fonctionner cette fonction public!

c pas clair mais ca marche !

corrigé en version 12 ? je v bientot voir ca!