|
Lecture Carte D'identité BELGE |
Débuté par Daniel DE HERDT, 14 juil. 2014 15:36 - 23 réponses |
| |
| | | |
|
| |
Posté le 14 juillet 2014 - 15:36 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 17 messages |
|
Posté le 11 août 2014 - 11:24 |
Bonjour,
As tu réussi à résoudre le problème ? Ces nouvelles cartes commencent à arriver chez mes clients et je dois faire une mise à jour de mes programmes. |
| |
| |
| | | |
|
| | |
| |
Posté le 18 août 2014 - 17:35 |
Non Toujours pas ! Désolé !
C'est étrange qu'il n'y a personne sur ce forum qui a trouvé la solution !!
Si jamais j'avance sur ce problème , je mettrai une info sur le forum
ciao
Il se trouve que Laurent a formulé :
Bonjour,
As tu réussi à résoudre le problème ? Ces nouvelles cartes commencent à arriver chez mes clients et je dois faire une mise à jour de mes programmes. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 84 messages Popularité : +4 (4 votes) |
|
Posté le 19 août 2014 - 17:19 |
Bonjour,
Nous n'utilisons pas le Middleware belge mais directement les dll smartcard de Windows (ce que fait le middleware). C'est un composant que nous utilisons chez nos clients depuis 3 ans sans aucun soucis. Avec les nouvelles cartes, nous n'avons rien dû faire.
Si ça intéresse, mon adresse email est bne@dagico.com
Bonne journée,
-- Benoit Neve |
| |
| |
| | | |
|
| | |
| |
Posté le 03 septembre 2014 - 16:14 |
Bonjour, y a-t-il des solutions pour ces nouvelles cartes d'identité ? Je ne vois pas comment faire ? Merci ! |
| |
| |
| | | |
|
| | |
| |
Posté le 08 septembre 2014 - 15:37 |
Dagico a créé un composant qu'il propose à un certain prix et pouvant être intégré dans n'importe quel projet Windev. (Voir email précédent)
Le fait de prendre les coordonnées de la carte n'est pas primordiale pour moi... j'attendrai une version gratuite !
A+
Rudi L avait prétendu :
Bonjour, y a-t-il des solutions pour ces nouvelles cartes d'identité ? Je ne vois pas comment faire ? Merci ! |
| |
| |
| | | |
|
| | |
| |
Posté le 16 septembre 2014 - 11:52 |
Bonjour Daniel,
Après 2 semaines de recherches intensives sur internet et plusieurs essais infructueux, j'ai abandonné l'attaque directe.
Je sais que ma solution n'est pas idéale mais elle fonctionne parfaitement.
En fait, les dernières versions de eidviewer permettent d'enregistrer les données de la carte en .csv.
Donc, je lance eidviewer, puis je fais des 'Envoietouche'.
Je joins un exemple (Désolé si c'est à moitié en Néerlandais ).
Phil
Info("1) Introduisez votre carte d'identité dans le lecteur","2) Attendez 5 secondes",... "3) Le clavier doit être en lettres minuscules !","4) Cliquez sur OK et NE TOUCHEZ à PLUS RIEN")
Pad="C:\Temp\Certificats\" FichierCSV=Pad+gpwRecupInfoUtilisateur(gpwInfoLogin)+".csv" SI PAS fRépertoireExiste(Pad) ALORS fRepCrée(Pad) FIN fSupprime(FichierCSV)
EidViewer="C:\Program Files (x86)\Belgium Identity Card\EidViewer\eID Viewer.exe" SI fFichierExiste(EidViewer)=Faux ALORS EidViewer="C:\Program Files\Belgium Identity Card\EidViewer\eID Viewer.exe" FIN
LanceAppli(EidViewer,exeActif,exeNonBloquant)
Multitâche(1500) EnvoieTouche("{BTNGAUCHE,15,30}") Multitâche(50) EnvoieTouche("{BAS}") Multitâche(50) EnvoieTouche("{BAS}") Multitâche(50) EnvoieTouche("{DROITE}") Multitâche(50) EnvoieTouche("{BAS}") Multitâche(50) EnvoieTouche("{ENTER}") Multitâche(50) EnvoieTouche(FichierCSV) Multitâche(50) EnvoieTouche("{ENTER}") Multitâche(100) EnvoieTouche("%{F4}")
Multitâche(200)
X=fChargeTexte(FichierCSV)
Prénom=ExtraitChaîne(X,5,";") Nom=ExtraitChaîne(X,6,";") NuméroNational=ExtraitChaîne(X,12,";") Photo=Remplace(ExtraitChaîne(X,31,";")," ","") Authentication=Remplace(ExtraitChaîne(X,59,";")," ","") |
| |
| |
| | | |
|
| | |
| |
Posté le 18 septembre 2014 - 12:02 |
Bonjour Phil,
Comment fais-tu pour afficher l'image fournie sous format TXT dans le fichier CSV dans un projet Windev? Perso, j'arrive à rien... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 message |
|
Posté le 24 décembre 2014 - 13:09 |
Il existe une solution qui n'utilise pas le Middelware officiel et qui fonctionne avec toutes les cartes EID, y compris les nouvelles.
On doit cette solution à Serhiy Perevoznyk (http://delphi32.blogspot.be/) qui a développé une librairie freeware nommée SWELIO disponible à l'adresse http://sdrv.ms/1jsF5PN.
Les fonctionalités: • No external dependencies • x32 and x64 versions • All functions have Unicode and Ansi version • Simple to use, easy to embed in any programming language • C++ and Delphi SDK with samples and documenation are included • Works in Windows XP - Windows 8 • Provides 256 different functions • QR codes generation • Export card data to XML • Multiple readers support • Exports photo in different graphical formats • No eID Middleware required • Hash functions and encryption supported • Check of the pin code • Can create and verify digital signatures • Many other useful things...
Ci-dessous un exemple de l'utilisation de SWELIO avec Windev
gnHinst est un entier gnHinst = ChargeDLL("Swelio32.dll.") SI gnHinst = 0 ALORS Erreur(ErreurInfo()) FIN
EIDIdentity est une structure sCardNumber est une chaîne fixe sur 13 sChipNumber est une chaîne fixe sur 33 sValidityDateBegin est une chaîne fixe sur 11 sValidityDateEnd est une chaîne fixe sur 11 sMunicipality est une chaîne fixe sur 81 sNationalNumber est une chaîne sur 11 sName est une chaîne fixe sur 111 sFirstName1 est une chaîne fixe sur 96 sFirstName2 est une chaîne fixe sur 4 sNationality est une chaîne fixe sur 86 sBirthLocation est une chaîne fixe sur 81 sBirthDate est une chaîne fixe sur 13 sSex est une chaîne fixe sur 2 sNobleCondition est une chaîne fixe sur 51 nDocumentType est un entier bWhiteCane est un booléen bYellowCane est un booléen bExtendedMinority est un booléen FIN
EIDAddress est une structure sStreet est une chaîne fixe sur 81 sZip est une chaîne fixe sur 5 sMunicipality est une chaîne fixe sur 68 FIN
EIDPicture est une structure sPicture est une chaîne fixe sur 4096 nPictureLength est un entier sur 8 FIN
DonnéesIdentité est une EIDIdentity DonnéesAdresse est une EIDAddress DonnéesImages est une EIDPicture
API("Swelio32.dll", "StartEngine")
SI API("Swelio32.dll", "IsCardPresentEx", 0) ALORS
API("Swelio32.dll", "ReadIdentityExA", 0, &DonnéesIdentité) Trace (DonnéesIdentité.sName, " ", DonnéesIdentité.sFirstName1)
API("Swelio32.dll", "ReadAddressExA", 0, &DonnéesAdresse) Trace (DonnéesAdresse.sStreet, " ", DonnéesAdresse.sZip, " ",DonnéesAdresse.sMunicipality)
API("Swelio32.dll", "ReadPhotoEx", 0, &DonnéesImages ) IMG_Photo = DonnéesImages.sPicture
SINON Trace ("Carte Absente") FIN
API("Swelio32.dll", "StopEngine") DéchargeDLL(gnHinst) |
| |
| |
| | | |
|
| | |
| |
Posté le 25 décembre 2014 - 15:15 |
Bonjour AT,
ET merci à toi, ça marche super.
Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 298 messages Popularité : +20 (72 votes) |
|
Posté le 16 avril 2015 - 15:43 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 10 messages Popularité : +1 (1 vote) |
|
Posté le 28 avril 2015 - 05:28 |
Thank you for your development, that works wonders |
| |
| |
| | | |
|
| | |
| |
Posté le 26 février 2016 - 13:35 |
Bonjour AT et merci pour cette solution.
Ce que je ne comprends pas est que l'instuction API("Swelio32.dll","IsCardPresentEx",0) me renvoie 0, comme si je n'avais pas de carte présente dans mon lecteur, alors que parallèlement, via le programme eID Viewer, je parviens à lire ma carte sans problème !?
As-tu une idée de ce que je devrais faire pour résoudre mon problème ?
Meci d'avance ! |
| |
| |
| | | |
|
| | |
| |
Posté le 20 janvier 2017 - 15:11 |
Super un grand merci ca dépanne bien. Par contre pour info, j'ai remarqué que lors de la lecture de la carte le web cam s'active une seconde ?? |
| |
| |
| | | |
|
| | |
| |
Posté le 23 janvier 2017 - 13:49 |
Désolé Rectification la webcam n'a rien a voir avec l'utilisation du lecteur de carte c'est une erreur de ma part. |
| |
| |
| | | |
|
| | |
| |
Posté le 24 octobre 2017 - 10:40 |
Bonjour, Un grand merci pour ce code vraiment génial. Peut-on récupérer d'autres information sur la carte, comme la pays de naissance, la pays lié à l'adresse ?
Merci d'avance, Francis |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 68 messages Popularité : +2 (2 votes) |
|
Posté le 24 octobre 2017 - 15:01 |
Bonjour,
J'ai aussi sur certains postes l' API("Swelio32.dll","IsCardPresentEx",0) qui me renvoie 0 alors qu'une carte est bien présente.
Est-ce que quelqu'un à pu résoudre ce problème ?
Merci d'avance
Eric |
| |
| |
| | | |
|
| | |
| |
Posté le 25 octobre 2017 - 15:54 |
Bonjour Je n'ai pas pu avoir l'API. Pas disponible. Comment l'avoir ? BAV |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 68 messages Popularité : +2 (2 votes) |
|
Posté le 25 octobre 2017 - 16:05 |
| |
| |
| | | |
|
| | |
| |
Posté le 20 novembre 2017 - 22:42 |
Bonjour,
Je ne comprends pas ...cela fonctionne parfaitement dans l'un de mes projet et dans le 2ième , le même code (copié/collé) ne me donne que l'adresse et pas le nom...
Et aussi, dans le projet ou cela ne fonctionne pas, windev me dit que "chaine fixe" est à remplacer. Je l'ai remplacé par "chaine ANSI" , mais je n'obtiens toujours que l'adresse...
Help ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 10 messages Popularité : +1 (1 vote) |
|
Posté le 21 novembre 2017 - 15:29 |
Bonjour Martin,
Voilà ce que j'utilise, et cela fonctionne en 32 ou en 64 bits
// Non de la DLL
sVar_DLL est une chaîne = ""
SI EnMode64bits() = Vrai ALORS sVar_DLL = "wd220Swelio64.dll." SINON sVar_DLL = "wd220Swelio32.dll." FIN
// On vérifie si la DLL se charge GnHinst est un entier système = ChargeDLL(sVar_DLL)
SI GnHinst = 0 ALORS Erreur(ErreurInfo()) FIN
EIDIdentity est une Structure sCardNumber est une chaîne fixe sur 13 sChipNumber est une chaîne fixe sur 33 sValidityDateBegin est une chaîne fixe sur 11 sValidityDateEnd est une chaîne fixe sur 11 sMunicipality est une chaîne fixe sur 81 sNationalNumber est une chaîne sur 11 sName est une chaîne fixe sur 111 sFirstName1 est une chaîne fixe sur 96 sFirstName2 est une chaîne fixe sur 4 sNationality est une chaîne fixe sur 86 sBirthLocation est une chaîne fixe sur 81 sBirthDate est une chaîne fixe sur 13 sSex est une chaîne fixe sur 2 sNobleCondition est une chaîne fixe sur 51 nDocumentType est un entier bWhiteCane est un booléen bYellowCane est un booléen bExtendedMinority est un booléen FIN
EIDAddress est une Structure sStreet est une chaîne fixe sur 81 sZip est une chaîne fixe sur 5 sMunicipality est une chaîne fixe sur 68 FIN
EIDPicture est une Structure sPicture est une chaîne fixe sur 4096 nPictureLength est un entier sur 8 FIN
stDonnéesIdentité est une EIDIdentity stDonnéesAdresse est une EIDAddress stDonnéesImages est une EIDPicture
//API("wd200Swelio32.dll","StartEngine") API(sVar_DLL,"StartEngine")
//SI API("wd200Swelio32.dll","IsCardPresentEx",0) ALORS SI API(sVar_DLL,"IsCardPresentEx",0) ALORS
// API("wd200Swelio32.dll","ReadIdentityExA",0, &stDonnéesIdentité) // On rempli une zone répétée... API(sVar_DLL,"ReadIdentityExA",0, &stDonnéesIdentité)
SAI_Date_Fin_Id = stDonnéesIdentité.sValidityDateEnd SAI_Num_Id1 = stDonnéesIdentité.sCardNumber ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sName,"Nom : " ) ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sFirstName1,"Prénom : " ) ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sCardNumber,"Num Carte : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,DateVersChaîne(stDonnéesIdentité.sValidityDateBegin),"Date début : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,DateVersChaîne(stDonnéesIdentité.sValidityDateEnd),"Date fin : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sMunicipality,"Ville : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sNationalNumber,"Num National : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sNationality,"Nationalité : ") // ZoneRépétéeAjouteLigne(ZR_Nom_EID,DateVersChaîne(stDonnéesIdentité.sBirthDate),"Date Naissance : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,DateVersChaîne(stDonnéesIdentité.sBirthDate),"Date Naissance : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.sBirthLocation,"Lieu de naissance : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesIdentité.nDocumentType,"Document Type : ")
// API("wd200Swelio32.dll","ReadAddressExA",0, &stDonnéesAdresse) API(sVar_DLL,"ReadAddressExA",0, &stDonnéesAdresse) ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesAdresse.sStreet,"Rue : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesAdresse.sZip,"ZIP : ") ZoneRépétéeAjouteLigne(ZR_Nom_EID,stDonnéesAdresse.sMunicipality,"Localité : ") // API("wd200Swelio32.dll","ReadPhotoEx",0, &stDonnéesImages) API(sVar_DLL,"ReadPhotoEx",0, &stDonnéesImages) Femmes.Photo_EID = stDonnéesImages.sPicture HModifie(Femmes) FichierVersEcran() SINON Trace("Carte Absente") FIN
//API("wd200Swelio32.dll","StopEngine") API(sVar_DLL,"StopEngine")
DéchargeDLL(GnHinst) |
| |
| |
| | | |
|
| | |
| |
Posté le 21 novembre 2017 - 18:26 |
Merci,
J'ai trouvé mon erreur donc je le poste ici pour info. Le projet dans lequel cela ne fonctionnait pas était en configuration UNICODE et pas ANSI.
Mais votre code est intéressant, merci. Ca me donne des idées pour améliorer le miens. Merci pour votre réponse. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 82 messages Popularité : +7 (7 votes) |
|
Posté le 31 janvier 2018 - 23:58 |
Bonjour
J'ai un problème avec le champs documenttype (type de la carte), dans ma carte d'identité (Belge) je trouve un grand chiffre ex : 16777216, Alors que normalement c'est un chiffre de 2 positions seulement, ce qui me permet de choisir l'un de ces types : 1:Belgian citizen 6:kids card (< 12 year) 7:bootstrap card 8:“habilitation/machtigings” card 11: card A 12: card B . . .
C'est étrange que je me retrouve avec un chiffre de 7 ou 8 positions Une idée ?
PS : J'utilise la même bibliothèque a savoir "Swelio".
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 82 messages Popularité : +7 (7 votes) |
|
Posté le 14 février 2018 - 16:34 |
Enfin
J'ai trouvé la réponse à ma question, Si ça peut aider certains, je partage la solution pour récupérer le type de la carte d'identité Belge : - Il faut convertir l'entier qui se trouve dans le champ nDocumentType en hexadécimal grâce à la fonction : EntierVersHexa(). - Puis récupérer la valeur numérique de valeur hexadécimal grâce à la fonction val().
Exemple : - Avec une carte eID d'un citoyen Belge on retrouve la valeur : 16777216 sHexa est une chaîne = EntierVersHexa(DonnéesIdentité.nDocumentType,2) // ex : 16777216 => 01000000 Trace(Val(sHexa)) // 01000000 => 1 // donc eID Citoyen Belge.
Il y a plusieurs possibilités entre autres : 1: Belgian citizen 6: Kids card (<12 year) 7: Bootstrap card 11: Card A 12: Card B 13: Card C . . . etc.
il s'agit d'un problème de présentation d'octets (Endianness) entre Swelio SDK et Windev, il faut donc bidouiller pour inverser les octets.
Bàv. |
| |
| |
| | | |
|
| | | | |
| | |
|