PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Utilisation de DLL ZkemKeeper.dll - Lecteur d'empreinte F4 Vista
Utilisation de DLL ZkemKeeper.dll - Lecteur d'empreinte F4 Vista
Débuté par ATCHINARD Ada, 07 juin 2012 18:24 - 4 réponses
Posté le 07 juin 2012 - 18:24
Bonjour,

Je suis sur un projet de contrôle de présence par empreinte digitale. Le SDK fourni par le fournisseur est très bien adapté pour VB et C#. Mais, je dois l'intégrer à un projet existant en Windev 10.

Le chargement et déchargement du DLL se font très bien. Je me suis également bien connecté au lecteur. Mais quand il s'agit d'ajouter un employé, j'obtiens des erreurs qui me laisse perplexe par rapport à la capacité de Windev 10.

Voici mon code :

hInst = ChargeDLL("ZKEMSDK.DLL")
SI hInst <> 0 ALORS
nDeviceNumber est une entier = AppelDLL32("ZKEMSDK.DLL","Z_Connect_NET","192.168.1.201",4370,"","","")
SI nDeviceNumber ALORS
Info("Connexion réussie")
nDeviceNumber = 1
FIN

sdkVersion est une chaîne = ""
fId, fPriv est un entier
fName, fPass est une chaîne
ok est un booléen

fId = 4 ; fPriv = 3; fName = "Fab"; fPass = 1234

ok = AppelDLL32("ZKEMSDK.DLL","Z_SetUserInfo", nDeviceNumber, fId, fName, fPass, fPriv, 1, 0, "", "", "")
SI ok ALORS
Info("Utilisateur enregistré avec succès.")
FIN

DéchargeDLL(hInst)
FIN



Voici l'erreur :
Vous avez appelé la fonction AppelDLL32.
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes

Détails techniques :

Module : ZKEMSDK.DLL
Adresse de base : 02250000
Erreur système : Access violation (GPF)
EIP = 0225C8E0
OS : Windows XP ou .NET Service Pack 1(6.1.7601)


Informations techniques

Dump de l'erreur du module <WD100VM.DLL> <10.00Mo>.

- Appel WL :
Fonction <AppelDLL32>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1020

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes

Détails techniques :

Module : ZKEMSDK.DLL
Adresse de base : 02250000
Erreur système : Access violation (GPF)
EIP = 0225C8E0
OS : Windows XP ou .NET Service Pack 1(6.1.7601)

- Infos de debug :
Registres :

EIP = 0225C8E0 EBP = 00000001
EAX = 00000085 EBX = 02181A40
ECX = 0227C06C EDX = 00000000
ESI = 00000004 EDI = 00000001

Pile des appels :

[ZKEMSDK.DLL (02250000)] 0225C840 : Z_SetUserInfo() + 160 bytes
Pile invalide

Fonction (0,18)

- Infos attachées :
EIT_DATEHEURE : 07/06/2012 13:01:54
EIT_PILEWL :

- Identifiant dans le .err : 1020

Puis-je avoir une aide ?
Posté le 08 juin 2012 - 19:07
J'ai résolu le problème.

D'après les recherches, soit on utilise le DLL comme un objet Automation, soit importer l'assemblage dans le projet (Atelier/.Net/Utiliser un assemblage et sélectionner le fichier DLL si Windev le permet). L'assemblage n'a pas marché pour mon DLL, car non valide pour Windev.

J'ai donc utiliser le DLL comme un objet Automation.

Voici le code de connexion au lecteur d'empreinte :

// déclarations globales
iAdresseIp est une chaîne
iPort est un numérique
iNumeroMachine est un entier
wellDone est un booléen = Faux
zKemKeeper est un objet Automation "zkemkeeper.ZKEM"

// procédures de connexion au lecteur
PROCEDURE connect_device()
// sai_f4_ip, sai_f4_port sont de champs de saisie pour récupérer l'adresse IP et le port du lecteur
iNumeroMachine = zKemKeeper>>Connect_Net(SansEspace(sai_f4_ip), SansEspace(sai_f4_port))
SI iNumeroMachine = 1 ALORS
RENVOYER Vrai
FIN
Info("Matériel non connecté.")
RENVOYER Faux

Après la première compilation, Windev permet d'avoir la liste des fonctions disponibles dans le DLL. Les paramètres et leur type peuvent être connus par l'outil OLE/Com Viewer.

Merci.
Posté le 23 juillet 2012 - 11:01
Bonjour
J'ai utilisé ta méthode, je n'ai plus d'erreur par contre le connection ne se fait pas

INumeroMachine = ZKemKeeper>>Connect_Net(SansEspace("192.168.2.105"), SansEspace("4370"))
SI INumeroMachine = 1 ALORS
RENVOYER Vrai
FIN
Info("Matériel non connecté.")
RENVOYER Faux

ça retroune toujours ("Matériel non connecté.")

As tu une idée ?
Posté le 28 juillet 2012 - 19:00
Bonjour cher Ahmed,

Veuillez procéder comme suit :
- Vérifier si la commande "ping -t 192.168.2.105" marche avec succès. Si ok, le matériel est connecté au réseau et a bien l'adresse IP 192.168.2.105
- Sinon, veuillez lui attribuer cette adresse sur l'interface de configuration. Après attribution, il est nécessaire de redémarrer le matériel pour que la nouvelle configuration soit prise en compte.
- Si vous n'arrivez toujours pas à modifier l'adresse IP, je pourrai vous envoyer le manuel d'utilisation de ce matériel, qui est disponible sur le site du fabricant.

Merci.
Posté le 14 juillet 2019 - 21:57
Bonjour à vous tous,

je veux juste savoir est ce que c'est possible d'utiliser ce sdk avec l'appareil AC300?