PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2025 → Code C# vers code windev pour lecteur RFID
Code C# vers code windev pour lecteur RFID
Iniciado por Telix13, out., 29 2015 5:39 PM - 7 respostas
Membro registado
90 mensagems
Publicado em outubro, 29 2015 - 5:39 PM
Bonjour tout le monde

je cherche à communiquer avec un lecteur RFID en SDK standard statique,
j'arrive à connecter le lecteur , mais comment brancher un événement pour récupérer juste le ID de la carte ( 13 caractères ), à chaque passage du badge.
voici du code qui a permet seulement la connexion.
nb: j'ai utilisé WDapi outils, convertit pas le C#
Code :
ZKEM1 est un objet Automation "zkemkeeper.ZKEM"
sIpAd est une chaîne = "192.168.0.10"
nIMachineNumber est un entier=2
bIsConnected , bGetenvt sont des booléens
bIsConnected=ZKEM1>>Connect_Net(sIpAd,4370)

SI bIsConnected ALORS
ZKEM1>>EnableDevice(2, True)
//ZKEM1>>RegEvent(2, 65535)
info("Connexion établie")
SINON
Info("erreur de connexion au lecteur",HErreurInfo(hErrComplet))
FIN

Voici les fonctions en C# où se trouverait la clé peut-être, mais j'ai un souci de typage de paramètres.

//ZKEM1>>RefreshData(2)
//ZKEM1>>ReadAllGLogData(2)
//ZKEM1>>ReadRTLog(2)
//ZKEM1>>GetProductCode(2,& sChaine)
//bGetenvt=ZKEM1>>GetRTvent(2,65535)
//bGetenvt=ZKEM1>>GetHIDEventCardNumAsStr(sChaine)
//GetStrCardnumber
//bGetenvt=ZKEM1>>Regevent(2,65535)

merci pour le coup de main .
Membro registado
90 mensagems
Publicado em novembro, 08 2015 - 6:35 PM
Bonjour tout le monde.

pour rappel, je développe une application de gestion de contrôle d'accès, ( pour obtenir juste l'id d'une carte RFID)

les méthodes ci-après fonctionnent toutes.
bIsConnected=ZKEM1>>Connect_Net(sIpAd+Caract(0),(4370))
SI bIsConnected ALORS
ZKEM1>>EnableDevice(2, True) // ok
ZKEM1>>RegEvent(2,2048) // ok ce code correspond à l'événement OnHIDNum
bGetenvt=ZKEM1>>ReadRTLog(2) // ok
bGetenvt=ZKEM1>>GetRTLog(2) // ok
fin //

mais je n'arrive pas à traduire correctement ce code C# qui récupère "je crois " l'id de la carte.

//When you swipe a card to the device, this event will be triggered to show you the card number.( SDK du fabricant)

private void axCZKEM1_OnHIDNum(int iCardNumber)
{
lbRTShow.Items.Add("RTEvent OnHIDNum Has been Triggered...");
lbRTShow.Items.Add("...Cardnumber=" + iCardNumber.ToString());
}

merci à chacun pour vos coups de pouce.
Membro registado
240 mensagems
Publicado em novembro, 09 2015 - 1:37 PM
J'avais fait un exemple pour le traitement des événements, avec le même SDK.
http://vincent-lecomte.blogspot.be/2015/03/wd19-safescan-ta-855-et-les-evenements.html

En gros, il faut créer une procédure Windev avec le bon type de paramètre (voir "conversions de types"), puis créer l'événement associé qui la déclenchera lorsqu'il sera intercepté. Tu pourras alors afficher le paramètre puisqu'il sera dans un type compris par WD.

--
Vincent
Membro registado
90 mensagems
Publicado em novembro, 10 2015 - 4:01 PM
Bonjour à tous

Je te remercie Vincent pour ton précieux article, qui a débloqué la situation.

juste quelque soucis si tu permets
l’événement OnHidNum qui donne 8852624 au lieu de : 0008852624 125.05264 .
aussi je n'arrive à envoyer un bip et lumière verte au lecteur. j'ai essayé avec: Objet>>Beep(100) sans réaction.
et en fin pour gérer 06 lecteurs est-ce que il faut déclarer 06 objets automation.

Merci !
Membro registado
90 mensagems
Publicado em novembro, 12 2015 - 3:50 PM
bonjour à tous!

Nous sommes toujours bloqués par ce gros problème avec l’événement OnHIDNumber .

0008852624 125.05264 on a 8852624
6691150400590 on a 11799476
0339305932171 on a 3515787

voici le code :
AutomationEvénement("proc_OnConnected",ZKEM1,"OnConnected")
AutomationEvénement("proc_OnDisConnected",ZKEM1,"OnDisConnected")
AutomationEvénement("proc_OnAttTransaction",ZKEM1,"OnAttTransaction")
AutomationEvénement("proc_OnHIDNum",ZKEM1,"OnHIDNum")


PROCEDURE proc_OnHIDNum(sChaine)
Trace(sChaine)


Merci d'avance .
Publicado em novembro, 15 2015 - 8:01 AM
bonjour

je suis toujours bloqué , et je n'arrive pas à récupérer le n° de la carte.

PROCEDURE proc_OnHIDNum(sChaine est une chaine ) //meme chose pour chaine unicode
Trace(sChaine)
************************************************************** message d'erreur**************************
Le passage du paramètre 1 a provoqué une erreur.
Un élément de type 'vide' ne peut pas être converti vers le type 'chaîne ANSI'.

----- Informations techniques -----
Que s'est-il passé ?
Le passage du paramètre 1 a provoqué une erreur.
Un élément de type 'vide' ne peut pas être converti vers le type 'chaîne ANSI'.
Code erreur : 1021
Niveau : erreur fatale (EL_FATAL)
Dump de l'erreur du module 'wd200vm.dll' (20.0.504.0).
Identifiant des informations détaillées (.err) : 1021
Informations de débogage :
UEL = 68
Erreur hors execution
Assistance
Membro registado
90 mensagems
Publicado em novembro, 16 2015 - 12:03 AM
bonjour!
Après avoir manipuler plusieurs badge sur 02 applications de la marque ,
je constate que l'ID est bel et bien enregistré avec le format court,donc mon code(windev) fonctionne correctement.
mais comment est réalisée la conversion.

réel: 1- 0008852624125 affiche: 8852624 hexs // 00 00 00 02 0F A8 53 07 - 00 87 14 90
2- 6691150400590 affiche: 11799476 00 00 06 15 E7 A4 8C 4E - 00 b4 0b b4
3- 0339305932171 affiche: 3515787 00 00 00 4F 00 35 A5 8B - 00 35 A5 8B
4- 0339305908418 affiche: 3492034 00 00 00 4F 00 35 48 C2 - 00 35 48 C2
si tous les badges étaient codés comme le cas n°1 , le problème ne se poserait plus.

appel à l’expérience de de tous et merci.
Publicado em janeiro, 26 2024 - 2:29 PM
Bonjour.
Dans l'événement onhid, si le numéro de carte est enregistré sur l'appareil, il n'est pas renvoyé. S'il n'est pas enregistré, il est renvoyé sous la forme 0. Sur les anciens appareils, il renvoie le numéro de carte. Comment puis-je résoudre ce problème ? Merci .