EIDNative Library 2.0 released
Ik heb een nieuwe versie van EIDNative bibliotheek gemaakt die ondersteunt meer dan 1 smartcard-lezer.
U kunt download EIDNative van mijn site: http://users.telenet.be/serhiy.perevoznyk/download/EIDLibrarySetup.zip
Er zijn nieuw methoden, zoals
public void InitReader(int readerNumber) public void SelectReader(int readerNumber) public void SelectReader(string readerName) ...Update from 09.03.2012
Hey Serhiy,
ReplyDeleteZou het kunnen dat je per ongeluk de oude versie hebt gepost?
Via je telenet link kreeg ik een file die EIDLibrarySetup.zip - Via SourceForge vond ik de volgende file EIDLibrarySetup20.zip
Na installatie van beide vind ik nog exact dezelfde export procedures terug van de Reader Library.
Versie informatie van de ingesloten libraries:
Child Type: StringFileInfo
Language/Code Page: 1033/1252
CompanyName: Serhiy Perevoznyk
FileDescription: Native interface to BEID
FileVersion: 1.0.0.37
InternalName: EIDReader
LegalCopyright: Copyright (c) 2007-2008, Serhiy Perevoznyk
LegalTrademarks:
OriginalFilename: EIDReader.dll
ProductName: Belgian Electronic ID card access component
ProductVersion: 1.0.0.0
Comments:
mvg
Thomas
Hallo Thomas,
ReplyDeleteJa, dat is fout :(
Probeer nog een keer te download de nieuwe versie van
https://sourceforge.net/project/platformdownload.php?group_id=239504
Serhiy
Serhiy,
ReplyDeleteBedankt voor de update! De laatste link bevatte inderdaad een nieuwe versie van de library.
Alleen is er nu een probleem met de events binding vermoed ik. Wanneer ik de testapplicatie start zonder een kaart in de lezer wordt er niet gereageerd op de events(activate,insert,remove,etc.)
Wanneer ik de testapplicatie start met een kaart in de lezer dan verloopt alles normaal voor de rest van de run.
EIDNative Library Demo.exe met mister potato head :p vertoont net dezelfde problemen als met de testapplicaties..
Doe ik nu lastig? :o)
mvg
Hallo,
ReplyDeleteBedankt voor jouw commentaar, dat is echt vriendelijk om me te helpen. Ik zal dat in het documentatie vermelden. Ik zoek nu een oplossing en na lange weekend zal een nieuwe versie op sourceforge upload.
Nogmaals bedankt voor jouw hulp en excuseer me als mijn Nederlands niet goed is, maar ik ben eigenlijk Engelstalig ;)
Serhiy
Hi Serhiy,
ReplyDeleteNo worries! I'm currently working at a UK Company, so it doesn't really matter if we speak Dutch or English.
I don't know exactly for how long you've been living in Belgium, but I must say that your Dutch is actually quite amazing!
I've tried to get in contact with you by using MSN Messenger. But either you're never online or your email address hasn't been subscribed as a MSN Messenger account? Although it is a hotmail account.
Let me know something when you were able to post the new update. And if you wouldn't mind please send me your Messenger account information thomas{DOT}geens{AT}telenet{DOT}be
Thanks in advance, cheers
Thomas
Did you build the EIDReader.dll with Microsoft Visual Studio or with Borland Delphi.
ReplyDeleteIs the EIDReader.dll compatible with Borland C++ builder 3?
Because Borland C++ Builder and Microsoft Visual Studio have different calling conventions for functions in a DLL.
See also: http://web.archive.org/web/20041204213923/www.bcbdev.com/articles/vcdll.htm
Kind regards,
Johan DOT De DOT Schutter AT gmail DOT com
EIDReader.dll was built using Delphi and uses stdcall convention, like Microsoft is doing for Windows API, so it must be compatible with any C++ compiler.
ReplyDeleteDag Thomas,
ReplyDeleteMag ik je vragen om nieuwe versie te dowload van http://users.telenet.be/serhiy.perevoznyk/download/EIDLibrarySetup.zip
Ik denk dat probleem met events is opgelost, maar jammer genoeg heb ik alleen maar 1 kaartlezer, dus heb ik jouw hulp nodig voor de test ;)
Hey Serhiy,
ReplyDeleteCould it be that you altered something that effects the nationality field result.
In the 1.0 version I got as result 'belg', but now I get 'be'.
This would normally not be a problem,
but when I read the Belgian Id Card from someone with another nationality, I don't get anything back.
Yours Sincerely,
Nicky Vercauteren
Hi Nicky,
ReplyDeleteI can fix this problem, but I need some addition information from you.
Do you have EID Middleware installed or not? EIDNative works in different way when Middleware is installed
Serhiy
Hey Serhiy,
ReplyDeleteThe official EID Middleware isn't installed.
It's to slow :p
Just a suggestion:
Can you make both types of nationality presentation availble.
Something like :
Nationality = be
NationalityLong = Belg
Then I can get the data I need and other people who might need the short version won't have any problems.
I noticed you also fixed the birthdate issue with people who only have a Year on it.
=> Nice because I needed that to.
Thanks for the fast reply and the great job you did on the EID Native Library !
Yours Sincerely,
Nicky
Hi Nicky,
ReplyDeleteThank you for the information and a very good idea concerning nationality presentation. I will try to implement it as soon as possible.
For you and Thomas my e-mail is
serge_perevoznyk at hotmail.com
For other readers: you can leave your comment here :)
Serhiy,
ReplyDeleteWerkt net iets beter... Alleen denk ik dat je Events niet goed worden ontbonden door DoneReader(). Heb nog niet echt veel tijd gehad om het na te kijken. Wanneer je wisselt van lezer en daarna terug de eerste aanspreekt lijkt het alsof de events telkens dubbel worden teruggesmeten. De eerste keer krijg je de event 1 maal, dan 2 maal, dan 4 maal etc...
Hier is tracker informatie:
-------------------------------------
// Initial startup
-------------------------------------
eidCard.InitReader(false, 1);
ACTIVATE 12/06/2009 10:01:08
INSERT 12/06/2009 10:01:08
READING 12/06/2009 10:01:08
READ 12/06/2009 10:01:10
-------------------------------------
-------------------------------------
// Switch and switchback reader
// Seems as if Events are double binded?
-------------------------------------
eidCard.DoneReader();
eidCard.InitReader(false, 0);
eidCard.DoneReader();
eidCard.InitReader(false, 1);
ACTIVATE 12/06/2009 10:02:33
INSERT 12/06/2009 10:02:33
READING 12/06/2009 10:02:33
READ 12/06/2009 10:02:35
REMOVE 12/06/2009 10:02:35
ACTIVATE 12/06/2009 10:02:36
INSERT 12/06/2009 10:02:36
READING 12/06/2009 10:02:36
READ 12/06/2009 10:02:38
REMOVE 12/06/2009 10:02:38
-------------------------------------
-------------------------------------
// Switch and switchback reader
// Seems as if Event are double-double binded?
// Are events being released?
-------------------------------------
eidCard.DoneReader();
eidCard.InitReader(false, 0);
eidCard.DoneReader();
eidCard.InitReader(false, 1);
ACTIVATE 12/06/2009 10:03:41
INSERT 12/06/2009 10:03:41
READING 12/06/2009 10:03:41
READ 12/06/2009 10:03:43
REMOVE 12/06/2009 10:03:43
ACTIVATE 12/06/2009 10:03:44
INSERT 12/06/2009 10:03:44
READING 12/06/2009 10:03:44
READ 12/06/2009 10:03:47
REMOVE 12/06/2009 10:03:47
ACTIVATE 12/06/2009 10:03:47
INSERT 12/06/2009 10:03:47
READING 12/06/2009 10:03:47
INSERT 12/06/2009 10:03:47
READING 12/06/2009 10:03:47
READ 12/06/2009 10:03:49
REMOVE 12/06/2009 10:03:49
ACTIVATE 12/06/2009 10:03:50
INSERT 12/06/2009 10:03:50
READING 12/06/2009 10:03:50
INSERT 12/06/2009 10:03:50
READING 12/06/2009 10:03:50
READ 12/06/2009 10:03:52
REMOVE 12/06/2009 10:03:52
ACTIVATE 12/06/2009 10:03:53
INSERT 12/06/2009 10:03:53
READING 12/06/2009 10:03:53
READ 12/06/2009 10:03:55
REMOVE 12/06/2009 10:03:55
READ 12/06/2009 10:03:56
REMOVE 12/06/2009 10:03:56
READ 12/06/2009 10:03:56
REMOVE 12/06/2009 10:03:56
----------------------------------------
Verder zou het nog leuk zijn indien je een listing functie kunt schrijven voor de aanwezige lezers, met ID en Description. Voor zover ik weet zijn deze functies beschikbaar in de winscard library.
MVG
Hello,
ReplyDeleteI added some new methods, like ListReaders() that returns the list of installed card readers and modified the reading and encoding of the nationality field.
In case if EID middleware is installed (do not mix it with EID DSK) you have 2 options during EIDNative initialization. In case if you call InitReader passing false as a value for supportMiddleware parameter, EIDNative reads card directly as if middleware is not present at all. It can speed up access speed, but also gives different result for the nationality field.
If middleware is installed and supported, it returns "be" as a value in case if original value stored on the card is "Belg".
EIDNative now checks this situation and returns English name for nationality and country ISO code as well.
I also modified events reporting and hope the problem reported by Thomas is solved.
New setup is available on my website http://users.telenet.be/serhiy.perevoznyk/download/EIDLibrarySetup.zip
Waiting for feedback from Thomas and Nicky...
Hey Serhiy,
ReplyDeleteThanks for the new version and the
quick response.
Is there a way to get to the ISO nationality values without having
the middleware installed.
Cause now I don't have it installed and I'm not able to get the ISO nor the english names.
Kind Regards,
Nicky Vercauteren
Hey Serhiy,
ReplyDeleteIk heb je EIDTestApp getest en ik ondervind problemen met de events als ik mijn eID kaart herhaaldelijk in mijn ACR38U reader steek en vervolgens er weer uit haal. Na het uithalen werkt de app niet meer als je je eID kaart er terug insteekt.
Mvg,
Kurt Santelé
Hey Serhiy,
ReplyDeleteI've encountered the same problem as Kurt.
As a solution, I reinitialize.
Kind regards,
Nicky
Hi Kurt and Nicky. Thanks for the feedback, I will check it tomorrow
ReplyDeleteHi,
ReplyDeleteToday I uploaded the new release where I fixed the problem mentioned by Kurt and added new class for translating nationality name from Dutch and French to ISO code as it was asked by Nicky.
The new release is available on my website: http://users.telenet.be/serhiy.perevoznyk/download/EIDLibrarySetup.zip
For Thomas and Nicky: I added your names to the contributors list. Thank you guys for your help.
Hi Serhiy,
ReplyDeleteCongratulations for the great work with EIDnative.
In the birthdate issue with people who only have a Year return Null value.
it's correct?
Thanks for your help,
Rene
Hi Rene,
ReplyDeleteYou are almost right: in case of problems with birth date the returned value is string.Empty (not null), but you can always use the standard check string.IsNullOrEmpty
Hi Serhiy,
ReplyDeleteI'm currently testing your library to read data from Identity cards within an Access2007 application (VBB). For this I use the example code you deliver. I put the EIDNative in a Module and the code in a Form a response to a click.
The problem is that the answer to the ReadIDData(Data) is false and then no return from the card.
The only think working is the savephototofile sub.
Can you help me?
Thanks
Jean-Luc
Hi Jean-Luc,
ReplyDeleteMaybe you forgot to call InitReader function? In my sample it's called from Form_Load sub
Serhiy
Hi Serhiy
ReplyDeleteYou are right, there was a quote in front of these lines. Now it works.
But...
1) when Access read the data I receive a msg box to confirm the access to the EIDcard, one for the identity, one for the address and one for the picture (I don't receive before for the picture). Is it possible to avoid these msgbox?
2) In the FirstName1 I get the two firstname of the person normal?.
3) Accent are not managed when accent in address: Ã: .
Do you have solution or explanation for this.
Otherwise your DLL work fine, great job! I will also do test on machine without EID middelware and with Access Runtime.
Regards
Jean-Luc
Hello Jean-Luc,
ReplyDeleteI published a new release to solve the problems you mentioned. You can download it as always from my site: http://users.telenet.be/serhiy.perevoznyk/download/EIDLibrarySetup.zip
1.The message boxes come from Middleware. When it's not installed will be no messages. If you want to avoid the messages always, I added new function InitReaderEx. Just call it in place of InitReader.
2. I hope that problem with French characters is solved, but I don't have a right card to check this. Maybe you can test and tell me the result.
Hi Serhiy,
ReplyDeleteI downloaded the new version and test it.
If I use the "InitReaderEx Manager" instead of "InitReader Manager", the response of the ReadIDData(data) is false and then I cannot read the data on the card.
With the "Initreader Manager" it works but with the msgbox and the accent are still not supported.
Is it possible to include some conversion afterward?
Thanks
for your support
Jean-Luc
I forgot to ask you what version of Middleware do you have installed? The solution for message boxes depends from it
ReplyDeleteThe version is 3.5.1.5075 but the middelware is installed on my pc and the goal is also to use the dB on other machine without middelware.
ReplyDeleteIf I use the following code from the middelware I have the same result.
Private Sub Commande0_Click()
Dim lHandle As Long
Dim EIDlib1 As New EIDLIBCTRLLib.EIDlib
Dim RetStatus As EIDLIBCTRLLib.RetStatus
Dim MapColID As New EIDLIBCTRLLib.MapCollection
Dim MapColAddress As New EIDLIBCTRLLib.MapCollection
Dim CertifCheck As New EIDLIBCTRLLib.CertifCheck
Dim Data As EIDIdentity
Set RetStatus = EIDlib1.Init("", 0, 0, lHandle)
If (RetStatus.GetGeneral = 0) Then
Set RetStatus = EIDlib1.GetID(MapColID, CertifCheck)
Me.Texte2 = MapColID.GetValue("Name")
Me.Texte4 = MapColID.GetValue("FirstName1")
Me.Texte6 = MapColID.GetValue("Gender")
Me.Texte8 = MapColID.GetValue("Nationality")
Me.Texte10 = MapColID.GetValue("BirthPlace")
Me.Texte12 = MapColID.GetValue("BirthDate")
Me.Texte14 = MapColID.GetValue("NationalNumber")
Set reststatus = EIDlib1.GetAddress(MapColAddress, CertifCheck)
Me.Texte19 = MapColAddress.GetValue("Street")
Me.Texte21 = MapColAddress.GetValue("Municipality")
Me.Texte23 = MapColAddress.GetValue("ZIPCode")
SavePhotoToFile ("person.jpg")
Me!Image16.picture = "person.jpg"
Else
MsgBox "no card inserted"
End If
Set RetStatus = EIDlib1.Exit
End Sub
Rgds
Jean-Luc
Hello,
ReplyDeleteIt looks like you have a problem with text encoding.
The information is stored on eID using UTF8 encoding (by design).
VBA uses Unicode internally. Hence, we have to convert the UTF-8 to Unicode
when loading it into the VB app. When EIDNative reads information
(with or without middleware installed) it performs internally the
conversion from UTF8 to ANSI based on codepage 1252.
VBA Controls generally use the current ANSI code page rather than Unicode but
the translation from Unicode will happen transparently - you don't have to do it yourself.
If the characters are not appearing then it may be that those characters are not part of your current
ANSI code page.
InitReaderEx call failed when you do it directly on button click, you have to initialize reader before,
for example on form load.
For example:
Private Sub Form_Load()
Report.Clear
Picture1.picture = picture
InitReaderEx Manager
End Sub
Private Sub Form_Unload(Cancel As Integer)
DoneReader
End Sub
Hi Serhiy,
ReplyDeleteNow it's OK:
-no more msgbox
-Accent are supported
Now I can go further with the developpment of my DB, anyway I will keep you informed about deployment on machine with Access runtime.
Many thanks for you help and support
Jean-Luc
Serhiy,
ReplyDeleteWil foto kunnen uitlezen via VBA. Kan jij me helpen ?
Gebruik volgend, echter foto opslaan lukt me niet.
Dim EIDlib1 As New EIDLIBCTRLLib.EIDlib
Dim lhandle As Long
Dim RetStatus As New EIDLIBCTRLLib.RetStatus
Dim MapColPicture As New EIDLIBCTRLLib.MapCollection
Dim MapColID As New EIDLIBCTRLLib.MapCollection
Dim MapColAddress As New EIDLIBCTRLLib.MapCollection
Dim CertifCheck As New EIDLIBCTRLLib.CertifCheck
Dim strName As String
Dim strFirstName1 As String
Dim strBirthPlace As String
Dim strBirthDate As String
Dim strGender As String
Dim strNationality As String
Dim strNationalNumber As String
Dim strStreet As String
Dim strZipcode As String
Dim strMunicipality As String
Dim Pasfoto_Temp As Variant
Set RetStatus = EIDlib1.Init("", 0, 0, lhandle)
Set RetStatus = EIDlib1.GetID(MapColID, CertifCheck)
strName = MapColID.GetValue("Name")
strFirstName1 = MapColID.GetValue("FirstName1")
strBirthDate = MapColID.GetValue("BirthDate")
strBirthPlace = MapColID.GetValue("BirthPlace")
strGender = MapColID.GetValue("Gender")
strNationality = MapColID.GetValue("Nationality")
strNationalNumber = MapColID.GetValue("NationalNumber")
Set RetStatus = EIDlib1.GetAddress(MapColAddress, CertifCheck)
strStreet = MapColAddress.GetValue("Street")
strZipcode = MapColAddress.GetValue("ZIPCode")
strMunicipality = MapColAddress.GetValue("Municipality")
Set RetStatus = EIDlib1.GetPicture(MapColPicture, CertifCheck)
Pasfoto_Temp = Card.GetPicture()
Set RetStatus = EIDlib1.Exit
Alvast bedankt,
Stijn
See http://delphi32.blogspot.com/2009/12/reading-eid-card-from-vba-using.html or use EIDNative library in place of standard eID SDK
ReplyDeleteHi Serhiy,
ReplyDeleteI've just found your library and it's great! Works perfectly.
I have one small question, could it be that the date format is influenced by the library?
My visual controls in Delphi use the standard date separator which is '/' on my computer.
This evening, I've added your libary to the application and the dateseparator seems to have changed to '-'.
I tried resetting it at startup to '/' without luck.
Any idea?
Thx for the great software.
The latest version of the EIDreade.dll 32 and 64 bits are available for download: https://skydrive.live.com/redir.aspx?cid=b4508367face85d1&resid=B4508367FACE85D1!216&parid=B4508367FACE85D1!134
ReplyDelete