Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

empreinte digital avec windev

50 réponses
Avatar
yedaye
Salut
Je d=E9veloppe une application de reconnaissance par empreinte digital
avec windev 10.
J'ai achet=E9 le Microsoft fingerprint reader et j'ai le fingerprint
SDK de Griaule.

Mon probl=E8me est le suivant .

la fonction CapRawImageToHandle est d=E9finie dans le SDK avec les
param=E8tres suivants:

Returns a picture display handle (IPictureDisp) to the supplied raw
grayscale fingerprint image.

Return On success, GR_OK is returned.
On failure, the appropriate error code is returned.

Parameters
[in] rawImage A raw grayscale fingerprint image.

[in] width Fingerprint image width in pixels.

[in] height Fingerprint image height in pixels.

[in] hdc The device context handle (HDC) in which the picture will be
created.

[out] handle The fingerprint picture display handle (IPictureDisp).

Mon code windev est le suivant :

idsensor est une cha=EEne
moncontext, monhdc, monhandle sont des entiers
monimage est un Variant
ActiveX1>>CapInitialize()
ActiveX1>>Initialize()
ActiveX1>>CreateContext(moncontext)
ActiveXEv=E9nement("montest",ActiveX1,"SensorPlug")
ActiveX1>>CapStartCapture(idsensor)
monhdc=3DdD=E9butDessin(Image1)
monhandle=3DHandle(Image1)
ActiveX1>>CapRawImageToHandle(monimage,355,390,monhdc,monhandle)
ActiveX1>>StopCapture(idsensor)

quand je teste, il me met l'erreur suivante :

" En tentant d'invoquer la m=E9thode <CapRawImageToHandle>, l'objet
Automation/ActiveX a renvoy=E9 l'erreur suivante : 'Erreur 80020005,
Type incorrect pour le param=E8tre 5' "

Quelqu'un a une id=E9e?

Merci d'avance

10 réponses

1 2 3 4 5
Avatar
yedaye
Je viens de le faire c'est cool, ça marche correctement. L'image est
bien enregistrée et je la récupère facilement dans mon champ image.
Merci beaucoup
J'avais laissé cette étape et continué à travailler sur l'extraction
des minuties avec la fonction
le type de la variable template.tpt me joue un peu des tours.
template est une classe avec tpt un tableau d'entier sans signe et
size la taille de la mémoire allouée.

moi je n'ai pas utilisé une classe, ne maitrisant pas trop la POO.

J'ai déclaré montemplate comme un tableau de 10000 entiers sans signe
sur 1 octet, comme une chaîne, comme un buffer. il me met une erreur :
type incompatible pour le paramètre 7.

mavar=AppelDLL32("GrFinger","",monim:sources,monim:largeur,mo nim:hauteur,monim:resolution,montemplate2,GR_MAX_SIZE_TEMPLATE,GR_DEFAULT_CO NTEXT)

le paramètre 7 est "montemplate2"

j'ai essayé de passer par le transfert, ça marche mais la fonction au
lieu de me retourner la qualité du template, j'ai plutôt un code
d'erreur (-113 = erreur de type général), peu être que je l'ai mal
utilisé, voila ma syntaxe

montemplate2 est une chaîne
mavar=AppelDLL32("GrFinger","",monim:sources,monim:largeur,mo nim:hauteur,monim:resolution,montemplate2,GR_MAX_SIZE_TEMPLATE,GR_DEFAULT_CO NTEXT)
Transfert(&montemplate, &montemplate2, GR_MAX_SIZE_TEMPLATE)

Merci
Avatar
yedaye
Je viens de vérifier, le tableau du template ne change pas d'une
empreinte à l'autre donc il y a vraiment quelques choses qui ne se
passe pas bien.
Avatar
Romain PETIT
avait soumis l'idée :

le type de la variable template.tpt me joue un peu des tours.
template est une classe avec tpt un tableau d'entier sans signe et
size la taille de la mémoire allouée.

moi je n'ai pas utilisé une classe, ne maitrisant pas trop la POO.



non non non, rien à voir avec la POO...
Il s'agit d'un pointeur.

Il faut bien passer un tableau de 10000 (GR_MAX_SIZE_TEMPLATE) entiers
sans signe sur 1 octet mais le paramètre à passer n'est pas le tableau
mais l'*adresse* du tableau.

eRetDLL est un entier
montemplate est un tableau de GR_MAX_SIZE_TEMPLATE entier sans signe
sur 1 octet // 10000

eRetDLL = AppelDLL32("GrFinger","", monim:sources,
monim:largeur, monim:hauteur, monim:resolution, &montemplate,
dimension(montemplate),GR_DEFAULT_CONTEXT)

SI eRetDLL<0 ALORS
Erreur("Erreur N°" + eRetDLL)
SINON
Info("Ok")
FIN

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
yedaye
je l'ai fait, la variable retournée (montemplate) est vide (o o o o o
o ......).
et eRetDLL= -113 (erreur de type général).
Avatar
yedaye
Me voici de retour avec le point de la situation.
J'ai voulu être plus malin en allant chercher dans la base de données,
les templates enregistrés par le software de griaule.
Ils sont enregistrés dans un champ binaire dans une base access .
voici le code de récupération des templates et de leur ID
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////
templateref est une structure
template est un tableau dynamique
templ_id est un tableau de 150 entiers
FIN
mesreftempl est templateref
mesreftempl:template = allouer un tableau dynamique de 1 chaînes
ASCIIZ sur 10000
montab est un tableau de 1 chaînes ASCIIZ sur 10000
HLitPremier(enroll,ID)
//info(TypeVar(enroll.template)) (ici j'avais eu comme type 29)
TableauAjoute(mesreftempl:template , enroll.template)
TableauAjoute(montab , enroll.template)
TableauAjoute(mesreftempl:templ_id , enroll.ID)
TANTQUE PAS HEnDehors
HLitSuivant(enroll , ID)
TableauAjoute(mesreftempl:template , enroll.template)
TableauAjoute(montab , enroll.template)
TableauAjoute(mesreftempl:templ_id , enroll.ID)
FIN
/////////////////////////////////////////////////////////////////////////// ////////////////////////////////////
Le type de variable tableau de 1 chaînes ASCIIZ sur 10000 a bien
récupéré les templates mais quand j'utilise le même type pour
l'extraction du template, j'ai toujours l'erreur -113.

Bon, je me suis dis, je prend les templates venus de la base de
données et je m'en sert pour implémenter les autres fonctions
(vérification, identification......)

Je me suis attaqué à la vérification et j'ai créé une procédure que
j'appelle verifie().
voici son code
/////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////
PROCEDURE verifie()
montempl, montemplref sont des tableaux de 1 chaînes ASCIIZ sur 10000
TableauAjoute(montempl , montab[3])
i est un entier
score est un entier=0
mavar est un entier
letempl est une chaîne ASCIIZ sur 10000
letempl=montab[3]
mavar=AppelDLL32("GrFinger","",&letempl,GR_DEFAULT_CO NTEXT)
Info("la préparation a donné : "+mavar)

POUR i=2 A 5
TableauAjoute(montemplref,mesreftempl:template[i])

mavar=AppelDLL32("Grfinger","",montemplref[2],score,GR_DEFA ULT_CONTEXT)
SI mavar=GR_MATCH ALORS
Info("vous avez été identifié avec le numéro : "+i)
RETOUR
SINON
Info("erreur de vérification")
FIN
FIN
Info("c'est la fin")
/////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////

Déjà au niveau de , il me retourne comme valeur -5
== ( A null parameter was supplied ), ce qui m'étonne quand je fais l e
débogage, letempl contient bien le template N°3 de la base et
GR_DEFAULT_CONTEXT=0 comme d'habitude. j'ai changé le context,
toujours la même chose.

Je suis passé par un transfert en récupérant le template dans une
chaîne et en le passant dans un tableau dynamique, toujours rien.

Avez-vous une idée?
Avatar
Daniel
Bonsoir

je lisais avec attention ce thread.

Simplement pour info, il faut savoir que l'utilisation d'une empreinte
digital est très réglementée en France.

Il apparaît également que l'empreinte digitale est peu fiable, et qu'il
est préférable d'utiliser l'empreinte palmaire.

De plus le stockage de l'empreinte est interdit sauf dérogation.



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Romain PETIT
Il se trouve que Daniel a formulé :
Bonsoir



Salut,

je lisais avec attention ce thread.
Simplement pour info, il faut savoir que l'utilisation d'une empreinte
digital est très réglementée en France.
Il apparaît également que l'empreinte digitale est peu fiable, et qu'il est
préférable d'utiliser l'empreinte palmaire.
De plus le stockage de l'empreinte est interdit sauf dérogation.



Faut voir ce que dit la loi de la République du Bénin...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
yedaye
Je vais vérifier.

Mais comme c'est un projet universitaire, je crois que les
dispositions doivent être prise.

Je termine une formation d'ingénieur en traitement de signal et c'est
mon projet de fin d'étude. Si vous avez une idée sur l'erreur que mon
programme retourne, cela m'aiderait à avancer et à mieux comprendre le
fonctionnement de windev.
J'ai quand même entré tous les paramètres mais il me dit: A NULL
parameter was supplied.

A NULL selon moi signifie que le paramètre est là mais avec une valeur
nulle alors que quand je fais le débogage, les deux paramètres envoyé s
contiennent tous leur valeur.

HELP
Avatar
marcel.lhomme
On 11 juin, 17:29, wrote:
Merci d'avoir répondu si promptement.
J'ai fais ce que tu as dit mais j'ai toujours la même erreur.

idsensor est une chaîne
moncontext, monhdc,monhandle sont des entiers
monimage est un Variant
ActiveX1>>CapInitialize()
ActiveX1>>Initialize()
ActiveX1>>CreateContext(moncontext)
ActiveXEvénement("montest",ActiveX1,"SensorPlug")
ActiveX1>>CapStartCapture(idsensor)
monhdcÝébutDessin(Image1)
//monhandle=Handle(Image1)
ActiveX1>>CapRawImageToHandle(monimage,355,390,monhdc,&monhandle)
// Affichage de la valeur du handle
Info(monhandle)

j'utilise une version trial du fingerprint SDK de griaule de 90 jours
Je ne sais pas si elle a des limites, ils n'en n'ont pas parlé dans
les docs. les fonctions d'initialisations me renvoient bien le code de
succès mais le lecteur ne s'allume pas. Quand j'essaie avec les
applications exemples venues avec l'SDK, pas de problème. Est-ce moi
qui initialise mal, ou d'où peut venir le problème?

Merci



Bonjour j'ai le même problème, lorsque j'installe le sdk, le lecteur
d'empreinte ne s'allume plus. Est ce que quelqu'un pourrait
m'expliquer que faire pour que celui ci fonctionne de nouveau.
Merci par avance
Avatar
yedaye
Bonjour
Explique moi un peu. Quel SDk tu utilise, avec quel lecteur et est-ce
que les applications exemples qui sont sur l'SDK font fonctionner
correctement l'appareil?

A+
1 2 3 4 5