Projektbeispiel 1, CardManager PRO - V2.x
Das nachfolgende Projektbeispiel zeigt einen manuellen Verbindungsaufbau zur Chipkarte, bei dem vorab die Zustandsinformation des Kartenslots (CardState) geprüft wird. Wurde der Verbindungsaufbau (Connect) erfolgreich ausgeführt, lassen sich die Kartenspezifischen Eigenschaften über die INFO Class auswerten.
 
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 Command1_Click()            '<- Auslösen der Abfrage per Command Button !

    With SCARD1

        '- Chipkarte vorhanden ? -

        If Not .CardState then
            Debug.Print "Es befindet sich keine Chipkarte im Terminal !"
            Exit Sub
        End If

        '- Verbindung bereits vorhanden ? -

        If Not .IsConnected then
            If .
Connect then

                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

            Else
                Debug.Print "Der Verbindungsaufbau ist fehlgeschlagen !"
            End If
        End If

        .Disconnect

    End With

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

End Sub

Private Sub
SCARD1_OnMCARDError()

    Debug.Print "MCARD-API Initialisierung/Fehler: " & SCARD1.CardERR

End Sub

Private Sub SCARD1_OnMCARDClose()

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

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