Pagina 1 van 1

EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 15 dec 2006, 15:37
door Kristof75
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

Geplaatst: 15 dec 2006, 15:46
door meon
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.

EID .NET

Geplaatst: 15 dec 2006, 18:37
door redman
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/

Geplaatst: 16 dec 2006, 12:34
door Sensei Zeon
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

Geplaatst: 16 dec 2006, 20:49
door Kristof75
Ok alvast bedankt,
Ik ga dit eens uitproberen in mijn programma en zal jullie op de hoogte houden.

Geplaatst: 18 dec 2006, 18:22
door Kartouch
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.

probleemje

Geplaatst: 21 dec 2006, 23:49
door Kristof75
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

Meer info foutmelding

Geplaatst: 22 dec 2006, 09:08
door Kristof75
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

Geplaatst: 22 dec 2006, 09:41
door khsw
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

Geplaatst: 30 jan 2007, 21:04
door Mr. Jibe
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

Geplaatst: 16 feb 2007, 08:49
door kvanbell
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?

Geplaatst: 16 feb 2007, 08:58
door meon
kvanbell schreef:De string is utf8 en moet eerst omgezet worden naar unicode.

... is utf-8 niet unicode? Dacht het wel :)

Geplaatst: 16 feb 2007, 08:59
door kvanbell
UTF8 herkent niet alle characters

Geplaatst: 16 feb 2007, 09:25
door meon
kvanbell schreef:UTF8 herkent niet alle characters

:eek:
Volgens mij is UTF-8 net een van de meest uitgebreide, algemeen gebruikte codepages :?

Geplaatst: 16 feb 2007, 10:00
door kvanbell
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

Geplaatst: 16 feb 2007, 10:51
door Astralon
Al naar documentatie van UTF8Encoding class gekeken?

Geplaatst: 16 feb 2007, 11:50
door meon
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?

Geplaatst: 16 feb 2007, 13:25
door ubremoved_539
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.

Geplaatst: 16 feb 2007, 19:54
door Sensei Zeon
c# is gewoon .net, dus c# == vb.net alleen andere woorden :)

Geplaatst: 17 feb 2007, 10:54
door wem
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.

Geplaatst: 17 feb 2007, 12:22
door Astralon
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.

Geplaatst: 17 feb 2007, 13:46
door wem
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?

Geplaatst: 17 feb 2007, 18:54
door ubremoved_539
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.

Geplaatst: 01 mei 2007, 06:21
door teleweb
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).

conversieproblemen

Geplaatst: 01 jun 2007, 16:27
door ayla
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

Geplaatst: 03 jun 2007, 13:48
door ubremoved_539
teleweb schreef:Objectief gezien heeft VB.NET dus MEER mogelijkheden dan C#.


Ik denk dat er iets grondig fout is met je objectiviteit.

eid probleem

Geplaatst: 08 jun 2007, 15:37
door ayla
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 :-(

Geplaatst: 17 sep 2008, 02:01
door Blackstar
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

Geplaatst: 17 sep 2008, 08:37
door ubremoved_539
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.

Re: eid probleem

Geplaatst: 17 sep 2008, 08:50
door Sensei Zeon
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;
        }

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 25 nov 2009, 13:23
door Kelly
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:

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 25 nov 2009, 13:32
door ubremoved_539
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.

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 25 nov 2009, 13:35
door Kelly
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?

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 25 nov 2009, 21:28
door ubremoved_539
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).

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 26 nov 2009, 20:39
door Kelly
mmh
ben er niet veel wijzer uit geworden, jammer :(

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 27 nov 2009, 09:27
door ubremoved_539
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.

Re: EID-lezer gebruiken in VB.NET omgeving

Geplaatst: 27 nov 2009, 17:56
door Kelly
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*