Projektbeispiel 2, CardManager PRO - V2.x
Das nachfolgende Projektbeispiel zeigt einen automatischen Verbindungsaufbau zur Chipkarte, bei dem die Zustandsinformation des Kartenslots über den AutoDetect Mode per Event (OnInsert, OnRemoved) gefeuert wird. Die Zustände lassen sich zudem optional per TrayIcon in der Statusleiste ein- u. ausblenden.
 
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_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

   
'- AutoDetect aktivieren -

    SCARD1.AutoDetect True, 50

End Sub

Private Sub
SCARD1_OnMCARDError()

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

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

End Sub

Private Sub SCARD1_OnConnectError()

    Debug.Print "Verbindungsfehler: " & SCARD1.CardERR

End Sub

Private Sub SCARD1_OnRemoved()

    SCARD1.ShowTrayIcon False

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