Programmation d'un lecteur de carte d'identité belge en Delphi, l'ACR38U
Publié le 14/03/2006 Dans Programmation
1. Introduction
2. On code!
3. » On code (suite)
4. Et l'application?
On code (suite)
Passons maintenant à la lecture des informations. Le GetID nous renvoie une interface que l'on peut ensuite interroger pour récupérer une chaîne de caractère. Pas question de faire le tour de tout ce qui existe, on doit connaître le nom de chaque variable. Pas très pratique, heureusement que la documentation vient à notre secours:

images/articles/article490/004.png

Voici le code correspondant en Delphi avec une toute petite gestion d'erreur en cas de non présence de la carte. Malheureusement, il semble impossible avec cet ActiveX de détecter l'arrivée du carte dans le lecteur, peut être dans le futur?

  1. procedure TForm1.Button1Click(Sender: TObject); 
  2. var 
  3.  lMap: IMapCollection; 
  4.  lCert: ICertifCheck; 
  5.  lPicture: Pointer; 
  6.  lStream: TMemoryStream; 
  7.  lPictureVar: OleVariant; 
  8.  lJPEG: TJPEGImage; 
  9. begin 
  10.   FEID.GetID(lMap, lCert); 
  11.   if lMap = nil then 
  12.     ShowMessage('Impossible de lire la carte'
  13.   else 
  14.   begin 
  15.     self.Memo1.Lines.Add('Nom: '+lMap.GetValue('Name')); 
  16.     self.Memo1.Lines.Add('Nationalité: '+lMap.GetValue('Nationality')); 
  17.     self.Memo1.Lines.Add('Date de naissance: '+lMap.GetValue('BirthDate')); 
  18.   end
  19. end;


Vous ne rêvez pas, c'est aussi simple que cela. Pris dans le feu de l'action, voyons voir si on peut également récupérer la photo sans difficulté.

  1.   FEID.GetPicture(lMap, lCert); 
  2.   lPictureVar := lMap.GetValue('Picture'); 
  3.   lPicture := VarArrayLock(lPictureVar); 
  4.   lStream := TMemoryStream.Create; 
  5.   try 
  6.     lStream.Write(lPicture^, VarArrayHighBound(lPictureVar, 1) - VarArrayLowBound(lPictureVar, 1) + 1); 
  7.     VarArrayUnlock(lPictureVar); 
  8.     lStream.Position := 0
  9.     lJPEG := TJPEGImage.Create; 
  10.     try 
  11.       lJPEG.LoadFromStream(lStream); 
  12.       Image1.Picture.Assign(lJPEG); 
  13.     finally 
  14.       FreeAndNil(lJPEG); 
  15.     end
  16.   finally 
  17.     FreeAndNil(lStream); 
  18.   end;


Un rien plus long pour la récupération de l'image mais cela fonctionne, c'est le principal. Il faudra un petit peu bidouiller pour pouvoir récupérer les informations à partir de l'OleVariant, mais tout est dans le code.
Commentaires
Editer  Citer
BeID - Pin Validation
Très chouette article,

il serait intéressant d'avoir un exemple un peu plus complexe, par exemple incluant une vérification de PinCode. C'est documenté, mais assez mal... Surtout via ActiveX. D'ailleurs l'exemple VB ne le reprend pas...

Cedric
Par CedricS, Publié le 17/08/2006 @ 15:23:27
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
Bonjour,

Est-il possible d'exécuter ce programme SANS installer le ressource Kit ?
Car en VB je n'y arrive pas.

Merci
Par SuperPat, Publié le 25/09/2006 @ 10:13:25
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
Non, il faut le Ressource Kit.

Pour la vérification du PinCode, si ma mémoire est bonne c'est fait au niveau logiciel quand on essaie d'accéder aux données (je pense que c'était même du java), mais c'est juste un lecteur de toute façon, pas question de modifier quoi que ce soit sur la carte.

Mais c'est pas faux sinon, la documentation est limitée, d'ou la vente d'un SDK avec une grosse documentation, il faut bien le justifier :grin: *tousse*
Par zion, Publié le 04/10/2006 @ 15:55:40
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
Après avoir installé le runtime, le problème c'est que j'ai pas la librairie activeX :siffle
Par cauet, Publié le 17/10/2006 @ 01:30:49
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
Bonjour, j'ai installé Delphi Pro mais je ne trouve pas la librairie EIDLibCtrl. dans component/Activex.
Auriez le DLL ou OCX pour que je l'installe ? merci
Par larnaud, Publié le 11/02/2012 @ 11:54:32
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
j'utilise Delphi 7 SE
Par larnaud, Publié le 11/02/2012 @ 11:55:00
Editer  Citer
Programmation d'un lecteur de carte d'identité belge en Del...
Il faut télécharger l'eID Middleware sur eid.belgium.be comme précisé dans l'article :smile:
Par zion, Publié le 13/02/2012 @ 18:05:48

Poster un commentaire
Vous devez être identifié pour accéder à cette fonctionnalité

Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?