Projektbeispiel 1, CardManager KVK - V2.x
Dieses Projektbeispiel zeigt einen Quelltextauszug des CardManagers KVK im AutoDetect-Mode welcher in weiten Teilen exakt der Demoversion entspricht und beinhaltet sowohl die Statusabfragen zum Terminal, die Kartenprüfung und die Übergabe des Versicherten Daten Templates. Die auszuführenden Aktionen werden durch die Events bestimmt, welche vom SDK ausgelöst werden !
 
Private Sub Template()

    '- PC/SC Dienst: SCardSvr prüfen -

    If SCARD1.Services("SCardSvr", TASK_SERVICE, False) <> 1 then
        Debug.Print "Der Dienst 'SCardSvr' wird nicht ausgeführt !"
        Exit Sub
    End If

    '- Evtl. Kollisionsdienste suchen + beenden -

    SCARD1.Services "SCM_Smart_Card_Office_Kernel", TASK_SERVICE, True
    SCARD1.Services "SCMgr.exe", TASK_APPLICATION, True
    SCARD1.
Services "sokscmpn.exe", TASK_APPLICATION, True

    '- Schnittstelle initialisieren -

    With SCARD1
        If .
GetReaderCount >0 then
            .
CardReader = .GetReaderList
            .
DisconnectFlag = SCARD_UNPOWER_CARD
            .
AutoDetect False
            .
Initialize
        Else
            Debug.Print "Es konnte kein Terminal ermittelt werden !"
        End If
    End With


End Sub

Private Sub SCARD1_OnMCARDClose()

    Debug.Print "Die Verbindung PC/SC <-> MCARD API, Kartenleser wurde getrennt !"

End Sub

Private Sub SCARD1_OnMCARDError()

    Debug.Print "Die Initialisierung der MCARD API ist fehlgeschlagen !"

End Sub

Private Sub
SCARD1_OnMCARDInit()

    With SCARD1
        Debug.Print "SDK Version :" & .
Version
        Debug.Print "MCARD-Version :" & .
CardDLL
        Debug.Print "ChannelID :" & .
ChannelID
        Debug.Print "IFDSerialID :" & .
IFDSerialID
        Debug.Print "IFDVersion :" & .
IFDVersion
    End With

    SCARD1.AutoDetect True, 50                  '<- AutoDetect aktivieren !

End Sub

Private Sub SCARD1_OnInsert()

    With SCARD1
        .
ShowTrayIcon True
        .
Connect
    End With

End Sub

Private Sub SCARD1_OnConnect()

    With SCARD1.INFO
        Debug.Print "BitOrder :" & .
BitOrder
        Debug.Print "CardCompany :" & .
CardCompany
        Debug.Print "ChipCompany :" & .
ChipCompany
        Debug.Print "ChipAttrID :" & .
ChipAttrID
        Debug.Print "ChipType :" & .
ChipType
        Debug.Print "Clockrate :" & .
Clockrate
        Debug.Print "Counter :" & .
Counter
        Debug.Print "CR's :" & .
CR
        Debug.Print "MemoryZone :" & .
CardZone
        Debug.Print "MemorySize :" & .
CardSize
        Debug.Print "PIN :" & .
PIN
        Debug.Print "Protocol :" & .
Protocol
        Debug.Print "SerialNr. :" & .
SerialNr
    End With

    SCARD1.IsHealthCard     '<- Plausibilitätsprüfung durchführen !

End Sub

Private Sub SCARD1_OnConnectError()

    Debug.Print "Der Verbindungsaufbau zur Chipkarte ist fehlgeschlagen !"

End Sub

Private Sub SCARD1_OnHealthCard()

    With SCARD1.KVK

        Debug.Print "Nachname :" & .Nachname
        Debug.Print "Vorname :" & .
Vorname
        Debug.Print "Zusatz :" & .
Zusatz
        Debug.Print "Titel :" & .
Titel
        Debug.Print "GebDatum :" & .
GebDatum
        Debug.Print "Strasse :" & .
Strasse
        Debug.Print "PLZ :" & .
PLZ
        Debug.Print "Wohnort :" & .
Wohnort
        Debug.Print "KKName :" & .
KKName
        Debug.Print "IKNr :" & .
IKNr
        Debug.Print "Laendercode :" & .
Laendercode
        Debug.Print "VNr :" & .
VNr
        Debug.Print "VKNr :" & .
VKNr
        Debug.Print "Validate :" & .
Validate
        Debug.Print "Status :" & .
Status
        Debug.Print "StatusADD :" & .
StatusADD
        Debug.Print "Alter : & .
Years
        Debug.Print "Prüfsumme :" & Hex(.
Checksum)

        '// Versicherungsende prüfen //

        If .Expired then
            Debug.Print "Die Versichertenkarte ist abgelaufen !"
        End If

        '// Prüfsumme berechnen + vergleichen //

        If SCARD1.Checksum <> .Checksum then
            Debug.Print "Die Integritätsprüfung ist fehlgeschlagen !"
            Debug.Print "Extern berechnete Prüfsumme: " & Hex(SCARD1.
Checksum)
            Debug.Print "Gespeicherte Prüfsumme: " & Hex(.
Checksum)
        End If

    End With

End Sub

Private Sub SCARD1_OnHealthCardError()

    Debug.Print "Die Chipkarte entspricht nicht der KVK Spezifikation !"

End Sub

Private Sub SCARD1_OnRemoved()

    SCARD1.ShowTrayIcon False

End Sub

Private Sub
Form_Unload(Cancel as Integer)

    SCARD1.Shutdown

End Sub
 
©2011 by ProScan Elektronische Systeme, Buchholzer Weg 2, 42897 Remscheid, www.smartcardtools.de