EID-lezer gebruiken in VB.NET omgeving

Plaats reactie
Kristof75
Starter
Starter
Berichten: 4
Lid geworden op: 15 dec 2006, 15:33

Hoi allemaal,

heeft iemand al ervaring met het gebruik van een EIDlezer bij een VB.NET-programma?

Ik zou een login willen maken waarbij je de mogelijkheid krijgt om via een button een controle op ID uit te voeren en je zo al dan niet toegang te laten geven voor de applicatie.

Kan iemand hiermee helpen?
Hoe kan ik gegevens in VB.NET uitlezen?

mvg
Kristof
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ze0n heeft me ooit iets laten testen dat ie gemaakt had, las alle velden uit van m'n eID en was in .net geschreven. Dus wellicht dat hij je tips kan aanreiken.
redman
Elite Poster
Elite Poster
Berichten: 1626
Lid geworden op: 26 okt 2005, 23:19
Uitgedeelde bedankjes: 63 keer
Bedankt: 88 keer

Dit is heel gemakkelijk als je een beetje ervaring hebt met .NET.
Microsoft gaat dit hevig ondersteunen en heeft daarvoor gezord dat de programmatie zo simpel mogelijk is.

Bekijk de documenten op de volgende pagina eens:
http://www.microsoft.com/belux/nl/eid/
Sensei Zeon
Administrator
Administrator
Berichten: 4143
Lid geworden op: 15 sep 2002, 09:08
Locatie: Belgium, Haacht
Contacteer:

Ik heb een tijdje geleden, zoals meon al zei, ook een inlog programma adhv de E-ID geschreven, wat ik gedaan heb is:

De drivers van de E-ID reader installeren. En ook de Runtime (Belgian_Identity_Card_Run-time_EN_2313 heb ik geinstalleerd)
In je VB form moet je dan het object EIDlib1 toevoegen aan je form.

Een bugje dat ik nog wel gevonden heb is als ik 2x snel na elkaar een E-id inlees hij soms de vorige laat staan, maar dat kan aan een ander deel van mijn programma liggen :).

De code die ik gebruikt heb is deze, als je verbeteringen toebrengt, zou ik ze ook wel willen eten als het kan :):

(Disclaimer: het is heel quick 'n dirty gemaakt, dus error handling enzo heeft nog veel verbetering nodig!)

Code: Selecteer alles

    Private Sub btnReadEid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadEid.Click

        Dim lHandle As Integer

        'BEID_ Kaart Info
        Dim strCardNumber As String
        Dim strChipNumber As String
        Dim strBegValDag, strBegVal, strBegValMaand As Object
        Dim strBegValJaar As String
        Dim strEndValDag, strEndVal, strEndValMaand As Object
        Dim strEndValJaar As String
        Dim strIssuingMunicipality As String
        'BEID Persoons Info
        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
        'BEID Adres Info
        Dim strStreet As String
        Dim strZIPCode As String
        Dim strMunicipality As String

        Dim RetStatus As 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

        'voor de img
        Dim bytes() As Byte
        'Dim ms As System.IO.MemoryStream()


        Try
            RetStatus = EIDlib1.Init("", 0, 0, lHandle)
            If (RetStatus.GetGeneral = 0) Then
                RetStatus = EIDlib1.GetID(MapColID, CertifCheck)
                strChipNumber = MapColID.GetValue("ChipNumber").ToString
                strCardNumber = MapColID.GetValue("CardNumber").ToString
                strBegVal = MapColID.GetValue("BeginValidityDate")
                strEndVal = MapColID.GetValue("EndValidityDate")
                strIssuingMunicipality = MapColID.GetValue("IssuingMunicipality").ToString
                strName = MapColID.GetValue("Name").ToString
                strFirstName1 = MapColID.GetValue("FirstName1").ToString
                strBirthDate = MapColID.GetValue("BirthDate").ToString
                strBirthPlace = MapColID.GetValue("BirthPlace").ToString
                strGender = MapColID.GetValue("Gender").ToString
                strNationality = MapColID.GetValue("Nationality").ToString
                strNationalNumber = MapColID.GetValue("NationalNumber").ToString

                'Opsplitsen begindatum

                strBegValDag = VB.Right(strBegVal.ToString, 2)
                strBegValMaand = Mid(strBegVal.ToString, 5, 2)
                strBegValJaar = VB.Left(strBegVal.ToString, 4)
                'Opsplitsen einddatum

                strEndValDag = VB.Right(strEndVal.ToString, 2)
                strEndValMaand = Mid(strEndVal.ToString, 5, 2)
                strEndValJaar = VB.Left(strEndVal.ToString, 4)


            End If

            RetStatus = EIDlib1.GetAddress(MapColAddress, CertifCheck)

            strStreet = MapColAddress.GetValue("Street").ToString

            strZIPCode = MapColAddress.GetValue("ZIPCode").ToString

            strMunicipality = MapColAddress.GetValue("Municipality").ToString

            lblName.Text = strName
            lblFirstName.Text = strFirstName1
            lblBirthplace.Text = strBirthPlace
            lblBirthDate.Text = strBirthDate
            lblGender.Text = strGender
            lblNat.Text = strNationality
            lblNatNr.Text = strNationalNumber

            lblStreet.Text = strStreet
            lblPostCode.Text = strZIPCode
            lblGemeente.Text = strMunicipality
            lblLand.Text = "België"

            lblChipNr.Text = strChipNumber
            lblCardNr.Text = strCardNumber

            lblBegVal.Text = strBegVal.ToString
            lblEndVal.Text = strEndVal.ToString

            lblUitreikGemeente.Text = strIssuingMunicipality

            RetStatus = EIDlib1.GetPicture(MapColPicture, CertifCheck)

            bytes = DirectCast(MapColPicture.GetValue("Picture"), Byte())

            'ms = DirectCast(bytes, System.IO.MemoryStream)
            Dim ms As New System.IO.MemoryStream(bytes)

            PbFoto.Image = System.Drawing.Image.FromStream(ms)
            deelnemer = New EidData(strCardNumber, strChipNumber, strBegValDag, strBegVal, strBegValMaand, strBegValJaar, strEndValDag, strEndVal, strEndValMaand, strEndValJaar, strIssuingMunicipality, strName, strFirstName1, strBirthPlace, strBirthDate, strGender, strNationality, strNationalNumber, strStreet, strZIPCode, strMunicipality, bytes)

            kaartGelezen = 1

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try


    End Sub
Laatst gewijzigd door Sensei Zeon 03 mei 2007, 11:45, in totaal 2 gewijzigd.
Your Sensei sends his greetz, SeNsEi Ze0n

Afbeelding
Kristof75
Starter
Starter
Berichten: 4
Lid geworden op: 15 dec 2006, 15:33

Ok alvast bedankt,
Ik ga dit eens uitproberen in mijn programma en zal jullie op de hoogte houden.
Kartouch
Pro Member
Pro Member
Berichten: 415
Lid geworden op: 22 jan 2005, 14:15
Bedankt: 1 keer

Bij het testen zal je wellicht opvallen dat:
de eerste en tweede voornaam samen zitten in het veld FirstName1
en dat de straat, huisnummer, busnummer, deelgemeente samen zitten in het straatveld.
Ook de country-code is niet ingevuld.

Ik heb zelf een algoritme geschreven om de adresvelden mooi op te delen want ik heb nog geen enkele kaart gelezen die wel goed zit.

Mijn ontwikkelingen zijn echter wel in java.
Kristof75
Starter
Starter
Berichten: 4
Lid geworden op: 15 dec 2006, 15:33

hoi allemaal,

Ik krijg het voorlopig nog niet aan de praat....
Mijn probleem zit bij de EIDlib1
Deze blijft onbekend voor het apparaat.

Heeft dit te maken met een certificaat ofzo?
Kan iemand mij een tip geven om dit aan te pakken

Groeten
Kristof
Kristof75
Starter
Starter
Berichten: 4
Lid geworden op: 15 dec 2006, 15:33

Name 'EIDlib1' is not declared. Ik had ook geprobeerd om een dll toe te voegen zoals hieronder maar dat helpt niet.
Iemand ervaring met deze EIDlib1?
Heeft het te maken met de certificaten?

Ik had ook problemen met EIDLIBCTRLLib maar dat was omdat ik een referentie moet toevoegen (EIDLIBCTRLLib.dll) Dit is ondertussen opgelost
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Je hebt gewoon een referentie toegevoegd aan je project, maar EIDlib1 is niet gedeclareerd, in de code van SeNsEi Ze0n is dit een control.

Je rechterklikt op je toolbox (je voegt eventueel een nieuwe tab toe) en je klikt op "Choose Items...". Selecteer de tweede tab "COM Components", wacht even, en vink daar "EIDlib Class" aan. Klik op OK om deze dialog te sluiten.
Nu heb je links in de toolbox een nieuwe control "EIDlib Class" staan. Sleep deze op jouw form en bovenstaande code zal werken.

Je kan ook, als je de control niet nodig hebt, zelf een declaratie toevoegen

Code: Selecteer alles

Private EIDlib1 As New EIDLIBCTRLLib.EIDlib
Mr. Jibe
Starter
Starter
Berichten: 11
Lid geworden op: 08 mei 2006, 17:32

Merci voor de tip, ik heb dit onmiddellijk eens geprobeerd en ziet er goed uit. Iemand er al in geslaagd om dit vanuit een webpagina te doen?

grt,

Lieven
kvanbell
Starter
Starter
Berichten: 3
Lid geworden op: 16 feb 2007, 08:43

Ik ben ook bezig met testen met de E-ID in .net.

De onderstaande code werk maar blijkbaar heb je geen mensen tegengekomen die een Franse naam hebben zoals François.

Indien je dit doet zal je opmerken dat er nog een probleempje is met de code. De string is utf8 en moet eerst omgezet worden naar unicode.

Ik zoek er nu al enkele uren naar maar ik krijg nog steeds niet de juiste characters. Dus ik heb François .

Is er iemand die weet hoe hij dit moet oplossen?
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

kvanbell schreef:De string is utf8 en moet eerst omgezet worden naar unicode.

... is utf-8 niet unicode? Dacht het wel :)
kvanbell
Starter
Starter
Berichten: 3
Lid geworden op: 16 feb 2007, 08:43

UTF8 herkent niet alle characters
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

kvanbell schreef:UTF8 herkent niet alle characters

:eek:
Volgens mij is UTF-8 net een van de meest uitgebreide, algemeen gebruikte codepages :?
kvanbell
Starter
Starter
Berichten: 3
Lid geworden op: 16 feb 2007, 08:43

Zal mij misschien een beetje beter uitdrukken.

Als je en UTF8 string wilt laten weergeven, die je binnenhaalt uit de ID worden de speciale tekens zoals ç weergegeven als ç. UTF8 kent het karakter wel maar slaat het op in 2bytes en niet in 1. Zodoende is het moeilijker om die te kunnen weergeven op het scherm.

Mijn vraag is hoe
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Al naar documentatie van UTF8Encoding class gekeken?
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

kvanbell schreef:UTF8 kent het karakter wel maar slaat het op in 2bytes en niet in 1. Zodoende is het moeilijker om die te kunnen weergeven op het scherm.
Is dat net niet de reden waarom UTF-8 unicode is en niet ASCII?
Enfin, uw output on-screen ook UTF-8 laten uitspuwen is geen optie?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Misschien hier eens lezen... http://www.yoda.arachsys.com/csharp/unicode.html

In C# kan je alvast gewoon Unicode outputten...

Code: Selecteer alles

textBox1.Text = "\u1E00";


... geeft een grote A met een bolletje eronder.

Misschien beter meteen in een taal programmeren die Unicode support heeft zoals C# of Java.
Sensei Zeon
Administrator
Administrator
Berichten: 4143
Lid geworden op: 15 sep 2002, 09:08
Locatie: Belgium, Haacht
Contacteer:

c# is gewoon .net, dus c# == vb.net alleen andere woorden :)
Your Sensei sends his greetz, SeNsEi Ze0n

Afbeelding
wem
Premium Member
Premium Member
Berichten: 666
Lid geworden op: 24 mei 2004, 14:48

SeNsEi Ze0n schreef:c# is gewoon .net, dus c# == vb.net alleen andere woorden :)


Heeft C# niet meer mogelijkheden dan vb.net? Ik kan me niet herinneren dat er met pointers geknoeid kan worden in vb.net (maar ben dan ook geen vb specialist ;-) )
Het is niet omdat ze naar dezelfde runtime language vertaald worden, dat ze dezelfde mogelijkheden hebben.
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Ik volg de redenering van Sensei. Zowel C# als VB.NET ondersteunen de CLS (Common Language Specification). M.a.w. de functionaliteit wordt bepaald door de CLS en niet door de programmeertaal.
wem
Premium Member
Premium Member
Berichten: 666
Lid geworden op: 24 mei 2004, 14:48

Astralon schreef:Ik volg de redenering van Sensei. Zowel C# als VB.NET ondersteunen de CLS (Common Language Specification). M.a.w. de functionaliteit wordt bepaald door de CLS en niet door de programmeertaal.


Maar het is toch niet omdat CLS feature A toelaat, dat ook VB.net toelaat om feature A te gebruiken?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

wem schreef:Maar het is toch niet omdat CLS feature A toelaat, dat ook VB.net toelaat om feature A te gebruiken?


Inderdaad... het is niet omdat alle software op Intel x86 architectuur werkt dat het ook allemaal hetzelfde kan.
teleweb
Starter
Starter
Berichten: 12
Lid geworden op: 01 mei 2007, 06:04

wem schreef:Heeft C# niet meer mogelijkheden dan vb.net?


Nee hoor, als programmeur werk ik courant met beide programmeertalen en ik heb ooit eens een mooi vergelijkend lijstje gemaakt van de C# <-> VB.NET language features, en helaas, C# kwam er als verliezer uit...

Objectief gezien heeft VB.NET dus MEER mogelijkheden dan C#. In de praktijk hangt het natuurlijk van de soort applicatie die je wil ontwikkelen af welke taal de beste keuze is. Ze hebben elk namelijk ANDERE features.

Met elke nieuwe versie van .NET krijgen de talen ook meer en meer features van elkaar (denk bvb. aan anonymous methods).
ayla
Starter
Starter
Berichten: 2
Lid geworden op: 01 jun 2007, 16:13

hey;

ik heb ook een programmaatje geschreven in vb.net om de gegevens van een eid kaart te lezen. Dit lukt maar ik heb zoals anderen hier problemen met de conversie van speciale karakters.
bijvoorbeeld valère leest hij als Valère . Ik heb hier gelezen waar dit aan ligt maar kan geen oplossing vinden om het om te zetten naar valère.

ik heb hetvolgende al geprobeerd:
...
TextName.Text = ConvertUTF8(MapColID.GetValue("Name"))
...
Function ConvertUTF8(ByRef UTF8text As String) As String

Dim b As Byte()
b = System.Text.Encoding.UTF8.GetBytes(UTF8text)
Dim c As Byte()
c = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, b)
ConvertUTF8 = System.Text.Encoding.Unicode.GetString(c)

End Function

maar zonder succes...

kan iemand me hier met helpen aub?
dank bij voorbaat

groetjes
ayla
Laatst gewijzigd door ayla 05 jun 2007, 20:55, in totaal 4 gewijzigd.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

teleweb schreef:Objectief gezien heeft VB.NET dus MEER mogelijkheden dan C#.


Ik denk dat er iets grondig fout is met je objectiviteit.
ayla
Starter
Starter
Berichten: 2
Lid geworden op: 01 jun 2007, 16:13

hey;

Ik denk dat het probleem ligt bij de omzetting van de utf8(unicode) naar unicode in .net( wat standaard utf16 is).

Heeft er iemand een idee hoe ik die complexe karakters (in 2 bytes opgeslagen) zoals è kan tonen als è en niet als die rare chars?

Ik heb het geprobeerd volgens mijn bovenstaande post zonder succes.

groetjes

ps: het zou leuk zijn om de topic te proberen oplossen, een discussie rond het verschil tussen vb en c# helpt daarbij niet echt :-(
Blackstar
Starter
Starter
Berichten: 1
Lid geworden op: 17 sep 2008, 01:00

Het is een beetje na datum maar heeft er ook iemand mss al eens bekeken of dit ook werkt met Access 2007 VBA ?
Ben altijd geinteresseerd.

D
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Blackstar schreef:Het is een beetje na datum maar heeft er ook iemand mss al eens bekeken of dit ook werkt met Access 2007 VBA ?
Je kan DLL's aanroepen in VBA, dus in princiepe moet dat eveneens lukken, desnoods schrijf je een volledige wrapper rond het eID gebeuren voor gebruik in MS Access.
Sensei Zeon
Administrator
Administrator
Berichten: 4143
Lid geworden op: 15 sep 2002, 09:08
Locatie: Belgium, Haacht
Contacteer:

ayla schreef:hey;

Ik denk dat het probleem ligt bij de omzetting van de utf8(unicode) naar unicode in .net( wat standaard utf16 is).

Heeft er iemand een idee hoe ik die complexe karakters (in 2 bytes opgeslagen) zoals è kan tonen als è en niet als die rare chars?

Ik heb het geprobeerd volgens mijn bovenstaande post zonder succes.

groetjes

ps: het zou leuk zijn om de topic te proberen oplossen, een discussie rond het verschil tussen vb en c# helpt daarbij niet echt :-(
:oops: Ik ben dit helemaal uit het oog verloren, ik heb hier al een klein jaar een oplossing voor gevonden. De fout is dat .net er van uit gaat dat de strings die je uit de C API van de eID Middleware krijgt, in je default Charachter encoding staat. De oplossing is dus om het te forceren naar UTF-8. Zo die je het in C#: (VB.net is praktisch hetzelfde, het komt er eigenlijk op neer om dim te zetten voor de eerste regel en de ; weg te laten :) )

Code: Selecteer alles

        private String fixChars(String input)
        {
            byte[] byInput;
            byInput = System.Text.Encoding.Default.GetBytes(input);
            input = System.Text.Encoding.UTF8.GetString(byInput);

            return input;
        }
Your Sensei sends his greetz, SeNsEi Ze0n

Afbeelding
Kelly
Starter
Starter
Berichten: 4
Lid geworden op: 25 nov 2009, 13:19

hoihoi

ik ben nogal een leek met VB :oops: maar had een vriend van me beloofd iets te verbeteren aan zijn klantenbestand
vroeger werkte hij met een gewone excel-lijst
nu heb ik al in access 2002 een iets makkelijkere manier gemaakt om alles te beheren, maar kwam hij naar me toe met de vraag of het niet mogelijk is om rechtreeks van een e-id de info af te halen...

ik heb me al suf gezocht maar niets werkt...
is er iemand die een noob wat op weg kan helpen? :oops:
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Kelly schreef:ik heb me al suf gezocht maar niets werkt...
is er iemand die een noob wat op weg kan helpen? :oops:
Lees deze thread zou ik zeggen... alles staat er in essentie in.
Kelly
Starter
Starter
Berichten: 4
Lid geworden op: 25 nov 2009, 13:19

r2504 schreef:
Kelly schreef:ik heb me al suf gezocht maar niets werkt...
is er iemand die een noob wat op weg kan helpen? :oops:
Lees deze thread zou ik zeggen... alles staat er in essentie in.
en vb.net en vb6 zijn hetzelfde?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Kelly schreef:en vb.net en vb6 zijn hetzelfde?
Niet echt, maar uiteindelijk kun je in Visual Basic 6 ook gewoon DLL's aanroepen (en de code van Sensei Zeon op de eerste pagina zal trouwens niet echt veel verschillen in VB6).
Kelly
Starter
Starter
Berichten: 4
Lid geworden op: 25 nov 2009, 13:19

mmh
ben er niet veel wijzer uit geworden, jammer :(
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Kelly schreef:mmh
ben er niet veel wijzer uit geworden, jammer :(
Laat dan eens zien welke code je al geschreven hebt... en wat er niet werkt.
Kelly
Starter
Starter
Berichten: 4
Lid geworden op: 25 nov 2009, 13:19

hoppa, ik heb iets dat werkt :)
heb een van de samples genomen die bij de download zitten van de overheids-site
en dan wat aangepast zodat ik ook de foto heb!

*glundert van trots*

nu nog gelezen dat in tabel weggeschreven krijgen...

*moed zakt me weer in de schoenen*
Plaats reactie

Terug naar “Development”