PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Clé Dallas
Clé Dallas
Débuté par BleuVanille, 25 mai 2009 11:39 - 8 réponses
Posté le 25 mai 2009 - 11:39
Bonjour à tout le monde.
Je dois, dans une application, utiliser un système de contrôle avec clé Dallas.
Lorsque l'utilisateur pose sa clé sur le lecteur, l'application doit permettre les fonctionnalités prévues et lorsque l'utilisateur retire sa clé, l'application doit se mettre en attente de la pose d'une clé.
La même ou celle d'un autre utilisateur.
Je parviens à détecter la pose de la clé et je récupère bien l'ID de cette clé dans un champ de saisie.
Toutefois, je n'arrive pas à faire une validation automatique (entrée). Je dois taper sur la touche entrée du clavier.
Mais je ne parviens pas à détecter le retrait de la clé !!!
En effet, pendant l'utilisation du logiciel, je n'ai plus le champ de saisie en focus.
Pour info :
Sous le bloc-note la pose de la clé affiche l'ID (16 caractères) et au retrait, le bloc-note reçoit "remove".
Le lecteur de clé est livré sans aucun driver ni documentation.
Il se branche sur le clavier ou sur prise USB (par l'intermédaire d'un câble RS232 vers USB)
Quelqu'un aurait-il une info ?
D'avance merci.
Posté le 25 mai 2009 - 12:30
"BleuVanille" <RougeCitron@netcourrier.com> a écrit dans le message de news:
31ce86cea80d54b13a2c4d6cba545905@news.pcsoft...

Bonjour à tout le monde.
Je dois, dans une application, utiliser un système de contrôle avec clé
Dallas.
Lorsque l'utilisateur pose sa clé sur le lecteur, l'application doit
permettre les fonctionnalités prévues et lorsque l'utilisateur retire sa
clé, l'application doit se mettre en attente de la pose d'une clé.
La même ou celle d'un autre utilisateur.
Je parviens à détecter la pose de la clé et je récupère bien l'ID de cette
clé dans un champ de saisie.
Toutefois, je n'arrive pas à faire une validation automatique (entrée). Je
dois taper sur la touche entrée du clavier.
Mais je ne parviens pas à détecter le retrait de la clé !!!
En effet, pendant l'utilisation du logiciel, je n'ai plus le champ de
saisie en focus.
Pour info :
Sous le bloc-note la pose de la clé affiche l'ID (16 caractères) et au
retrait, le bloc-note reçoit "remove".
Le lecteur de clé est livré sans aucun driver ni documentation.
Il se branche sur le clavier ou sur prise USB (par l'intermédaire d'un
câble RS232 vers USB)
Quelqu'un aurait-il une info ?
D'avance merci.




Bonjour,

Sur les lecteurs Dallas mode "WEDGE" c'est à dire émulation clavier, il doit
y avoir la possibilité de le paramétrer pour lui demander d'envoyer une ID
dite de déconnexion ( 999999999 par exemple) De mémoire, il faut se
connecter au lecteur en utilisant Telnet.

De fait, lorsque le lecteur envoie une ID, on teste si elle est égale à
notre ID de déconnexion et on fait le traitement en question.

Pour ce qui est du scan, je pense qu'il n'y a pas d'autre choix que
d'intercepter les évènement du clavier, lire la totalité du buffer et si
cela correspond à un badge ou au débadgage faire les traitement ad'hoc, dans
le cas contraire ne rien faire.

Pour information, il n'y a pas pire comme système de connection, les
meilleurs (en terme de gestion :-) sont les purs RS232 (car on detecte
l'arrivée d'un badgage ou d'un débadgage par la fonction sévènement) ou les
Lecteurs USB, à ce moment la on lit les données du lecteur de badge dans un
process isolé qui n'est pas perturbé par les saisies au clavier de
l'utilisateur.

Bon dev ... et bon courage si vous êtes obligé de travailler en émulation
clavier.

Albert P.
Posté le 25 mai 2009 - 13:25
et si, sur le champ ID, tu controles la taille dans le code "A chaque modification". dés que tu as 16 caracteres, tu effectues ton controles et du fait un reprisesaisie ou autre...
Posté le 25 mai 2009 - 18:17
Bonjour,

De quel marque est le lecteur que vous utilisez. Si c'est un lecteur Dallas, la méthode la plus simple pour lire une clé Dallas est de passer par les API fournies sur le site de chez Dallas : http://www.maxim-ic.com/products/ibutton/software/windowsdk/index.cfm et télécharger le SDK
L'appel de la DLL IBSF32.DLL permet la lecture sur tout type de port (série, usb ou lpt).
Le principe est l'ouverture d'une session à l'aide de Tmsession = AppelDLL32(GDallasDll,"TMExtendedStartSession",gnPort,gnTypePort,Null)
ou GDallasDll est ne nom de la DLL, gnport le N° du port de connexion, gnTypePort le type de port de connexion du lecteur
ensuite récupérer le N° de session : Res = AppelDLL32(GDallasDll,"TMSetup",Tmsession)
puis lancer la lecture de la clé proprement dite

PROCEDURE LireTouche()
CodeHexa est une chaîne = ""
i est un entier
nResul est un entier
tabROM est un tableau de 9 entier sur 2 octets
nNumFic est un entier
Ch est une chaîne
sStateBuffer est une chaîne sur 5120
bufRom est un Buffer


tabROM[1] = 0
TANTQUE bContinue = Vrai
Res = AppelDLL32(GDallasDll,"TMGetTypeVersion",gnTypePort,&sStateBuffer)
Res = AppelDLL32(GDallasDll,"TMTouchReset",Tmsession)
Res = AppelDLL32(GDallasDll,"TMFirst",Tmsession,&sStateBuffer)
Res = AppelDLL32(GDallasDll,"TMFamilySearchSetup",Tmsession,&sStateBuffer,0x01)
Res = AppelDLL32(GDallasDll,"TMNext",Tmsession,&sStateBuffer)
tabROM[1] = 0
Res = AppelDLL32(GDallasDll,"TMRom",Tmsession,&sStateBuffer,&tabROM)
// La clé lue n'est pas une DS1990
SI NumériqueVersChaîne(tabROM[1],"02x") <> "01" ALORS
// On tente une recherche sur les DS1995
Res = AppelDLL32(GDallasDll,"TMFamilySearchSetup",Tmsession,&sStateBuffer,0x0A)
Res = AppelDLL32(GDallasDll,"TMNext",Tmsession,&sStateBuffer)
tabROM[1] = 0
Res = AppelDLL32(GDallasDll,"TMRom",Tmsession,&sStateBuffer,&tabROM)
FIN
SELON Majuscule(NumériqueVersChaîne(tabROM[1],"02X"))
CAS "01"
// Une clé 1990 est détectée, on arrête la lecture et on reconstitue le passe
bContinue = Faux
PasseRetour = Majuscule(NumériqueVersChaîne(tabROM[1],"02x") + NumériqueVersChaîne(tabROM[2],"02x") + NumériqueVersChaîne(tabROM[3],"02x") + NumériqueVersChaîne(tabROM[4],"02x") + ...
NumériqueVersChaîne(tabROM[5],"02x") + NumériqueVersChaîne(tabROM[6],"02x") + NumériqueVersChaîne(tabROM[7],"02x") + NumériqueVersChaîne(tabROM[8],"02x"))
Message("Clé lue : " + PasseRetour)
AppelDLL32(GDallasDll,"TMClose",Tmsession)
gnTypeCleLue = 1
EditOk = Vrai
Ferme
CAS "0A"
// Une clé 1995 est détectée, on arrête la lecture et on reconstitue le passe
bContinue = Faux
PasseRetour = Majuscule(NumériqueVersChaîne(tabROM[1],"02x") + NumériqueVersChaîne(tabROM[2],"02x") + NumériqueVersChaîne(tabROM[3],"02x") + NumériqueVersChaîne(tabROM[4],"02x") + ...
NumériqueVersChaîne(tabROM[5],"02x") + NumériqueVersChaîne(tabROM[6],"02x") + NumériqueVersChaîne(tabROM[7],"02x") + NumériqueVersChaîne(tabROM[8],"02x"))
Message("Clé lue : " + PasseRetour)
AppelDLL32(GDallasDll,"TMClose",Tmsession)
gnTypeCleLue = 1
EditOk = Vrai
Ferme
FIN
Multitâche(50)
FIN


Pour plus d'info voir l'aide en ligne en plus sur l'utilisation des API.

Cordialement
L.DUMOULIN
www.ned-sarl.tk
Posté le 25 mai 2009 - 18:54
Merci, oui, je venais justement de m'orienter dans cette direction.

laurent a écrit dans le message de news <8f335902b7e811b5f7efbdcdcf3bf63b@news.pcsoft> :
> et si, sur le champ ID, tu controles la taille dans le code "A chaque modification". dés que tu as 16 caracteres, tu effectues ton controles et du fait un reprisesaisie ou autre...
Posté le 25 mai 2009 - 18:55
Merci pour ces pistes !

Je vais demander à mon client de s'orienter vers la solution USB.
Par contre, TELNET, je ne connais pas.

Albert P. a écrit dans le message de news <4a1a53e7$1@news.pcsoft.fr> :

"BleuVanille" <RougeCitron@netcourrier.com> a écrit dans le message de news:
31ce86cea80d54b13a2c4d6cba545905@news.pcsoft...

Bonjour à tout le monde.
Je dois, dans une application, utiliser un système de contrôle avec clé
Dallas.
Lorsque l'utilisateur pose sa clé sur le lecteur, l'application doit
permettre les fonctionnalités prévues et lorsque l'utilisateur retire sa
clé, l'application doit se mettre en attente de la pose d'une clé.
La même ou celle d'un autre utilisateur.
Je parviens à détecter la pose de la clé et je récupère bien l'ID de cette
clé dans un champ de saisie.
Toutefois, je n'arrive pas à faire une validation automatique (entrée). Je
dois taper sur la touche entrée du clavier.
Mais je ne parviens pas à détecter le retrait de la clé !!!
En effet, pendant l'utilisation du logiciel, je n'ai plus le champ de
saisie en focus.
Pour info :
Sous le bloc-note la pose de la clé affiche l'ID (16 caractères) et au
retrait, le bloc-note reçoit "remove".
Le lecteur de clé est livré sans aucun driver ni documentation.
Il se branche sur le clavier ou sur prise USB (par l'intermédaire d'un
câble RS232 vers USB)
Quelqu'un aurait-il une info ?
D'avance merci.



Bonjour,

Sur les lecteurs Dallas mode "WEDGE" c'est à dire émulation clavier, il doit
y avoir la possibilité de le paramétrer pour lui demander d'envoyer une ID
dite de déconnexion ( 999999999 par exemple) De mémoire, il faut se
connecter au lecteur en utilisant Telnet.

De fait, lorsque le lecteur envoie une ID, on teste si elle est égale à
notre ID de déconnexion et on fait le traitement en question.

Pour ce qui est du scan, je pense qu'il n'y a pas d'autre choix que
d'intercepter les évènement du clavier, lire la totalité du buffer et si
cela correspond à un badge ou au débadgage faire les traitement ad'hoc, dans
le cas contraire ne rien faire.

Pour information, il n'y a pas pire comme système de connection, les
meilleurs (en terme de gestion :-) sont les purs RS232 (car on detecte
l'arrivée d'un badgage ou d'un débadgage par la fonction sévènement) ou les
Lecteurs USB, à ce moment la on lit les données du lecteur de badge dans un
process isolé qui n'est pas perturbé par les saisies au clavier de
l'utilisateur.

Bon dev ... et bon courage si vous êtes obligé de travailler en émulation
clavier.

Albert P.

Posté le 25 mai 2009 - 20:12
Bonjour et merci pour votre réponse détaillée !!!
Le lecteur fourni par mon client est un GIGATEK TMR900.
Je n'ai rien trouvé sur le net pour la doc ou drivers ou autres.
Je vais demander à mon client de trouver autre chose.
Peut-être à votre société ?
Posté le 26 mai 2009 - 18:36
"BleuVanille" <RougeCitron@netcourrier.com> a écrit dans le message de news:
24326ea002ad1dd2cd615f1de4e4e90f@news.pcsoft...

Bonjour et merci pour votre réponse détaillée !!!
Le lecteur fourni par mon client est un GIGATEK TMR900.
Je n'ai rien trouvé sur le net pour la doc ou drivers ou autres.
Je vais demander à mon client de trouver autre chose.
Peut-être à votre société ?



Pour faire suite à mon précédent message, il faut utiliser l'hyperterminal
et non pas telnet ... et voici un lien pour consulter la doc du TMR900.

http://quadpos.com/ftp/data/gigatek/kelloxx.pdf

Bon dev.

Albert P.
Posté le 27 mai 2009 - 11:05
MERCI !!!!!!!!
Situation débloquée grâce à toi !!
Que les Dieux de l'informatique te bénissent.

Albert P. a écrit dans le message de news <4a1bfd2f$1@news.pcsoft.fr> :

"BleuVanille" <RougeCitron@netcourrier.com> a écrit dans le message de news:
24326ea002ad1dd2cd615f1de4e4e90f@news.pcsoft...

Bonjour et merci pour votre réponse détaillée !!!
Le lecteur fourni par mon client est un GIGATEK TMR900.
Je n'ai rien trouvé sur le net pour la doc ou drivers ou autres.
Je vais demander à mon client de trouver autre chose.
Peut-être à votre société ?



Pour faire suite à mon précédent message, il faut utiliser l'hyperterminal
et non pas telnet ... et voici un lien pour consulter la doc du TMR900.

http://quadpos.com/ftp/data/gigatek/kelloxx.pdf

Bon dev.

Albert P.