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

Comments

  1. Hey Serhiy,

    Zou 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

    ReplyDelete
  2. Hallo Thomas,

    Ja, dat is fout :(

    Probeer nog een keer te download de nieuwe versie van
    https://sourceforge.net/project/platformdownload.php?group_id=239504

    Serhiy

    ReplyDelete
  3. Serhiy,

    Bedankt 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

    ReplyDelete
  4. Hallo,

    Bedankt 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

    ReplyDelete
  5. Hi Serhiy,

    No 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

    ReplyDelete
  6. Did you build the EIDReader.dll with Microsoft Visual Studio or with Borland Delphi.

    Is 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

    ReplyDelete
  7. 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.

    ReplyDelete
  8. Dag Thomas,

    Mag 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 ;)

    ReplyDelete
  9. Hey Serhiy,

    Could 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

    ReplyDelete
  10. Hi Nicky,

    I 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

    ReplyDelete
  11. Hey Serhiy,

    The 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

    ReplyDelete
  12. Hi Nicky,

    Thank 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 :)

    ReplyDelete
  13. Serhiy,

    Werkt 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

    ReplyDelete
  14. Hello,

    I 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...

    ReplyDelete
  15. Hey Serhiy,

    Thanks 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

    ReplyDelete
  16. Anonymous01 July, 2009

    Hey Serhiy,

    Ik 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é

    ReplyDelete
  17. Hey Serhiy,

    I've encountered the same problem as Kurt.
    As a solution, I reinitialize.

    Kind regards,

    Nicky

    ReplyDelete
  18. Hi Kurt and Nicky. Thanks for the feedback, I will check it tomorrow

    ReplyDelete
  19. Hi,

    Today 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.

    ReplyDelete
  20. Hi Serhiy,

    Congratulations 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

    ReplyDelete
  21. Hi Rene,

    You 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

    ReplyDelete
  22. Hi Serhiy,

    I'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

    ReplyDelete
  23. Hi Jean-Luc,

    Maybe you forgot to call InitReader function? In my sample it's called from Form_Load sub

    Serhiy

    ReplyDelete
  24. Hi Serhiy
    You 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

    ReplyDelete
  25. Hello Jean-Luc,

    I 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.

    ReplyDelete
  26. Hi Serhiy,

    I 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

    ReplyDelete
  27. I forgot to ask you what version of Middleware do you have installed? The solution for message boxes depends from it

    ReplyDelete
  28. The 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.

    If 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

    ReplyDelete
  29. Hello,


    It 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

    ReplyDelete
  30. Hi Serhiy,

    Now 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

    ReplyDelete
  31. Serhiy,

    Wil 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

    ReplyDelete
  32. See http://delphi32.blogspot.com/2009/12/reading-eid-card-from-vba-using.html or use EIDNative library in place of standard eID SDK

    ReplyDelete
  33. Hi Serhiy,
    I'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.

    ReplyDelete
  34. 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

Post a Comment

Popular posts from this blog

Quricol - QR code generator library

Smir - backup and restore Windows desktop icons position