Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) PC/SC Get Card UIDSee more SCard ExamplesSends the APDU command to get a card's UID.
IncludeFile "CkSCard.pb" IncludeFile "CkBinData.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. scard.i = CkSCard::ckCreate() If scard.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; First establish a context to the PC/SC Resource Manager success.i = CkSCard::ckEstablishContext(scard,"user") If success = 0 Debug CkSCard::ckLastErrorText(scard) CkSCard::ckDispose(scard) ProcedureReturn EndIf ; Use your own smart card reader name here. success = CkSCard::ckConnect(scard,"ACS ACR122 0","shared","no_preference") If success = 0 Debug CkSCard::ckLastErrorText(scard) CkSCard::ckDispose(scard) ProcedureReturn EndIf Debug "Connected reader: " + CkSCard::ckConnectedReader(scard) Debug "Active protocol: " + CkSCard::ckActiveProtocol(scard) Debug "ATR: " + CkSCard::ckCardAtr(scard) Debug "Reader Status: " + CkSCard::ckReaderStatus(scard) ; Send the APDU command 0xFF, 0xCA, 0x00, 0x00, 0x00 bdRecv.i = CkBinData::ckCreate() If bdRecv.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkSCard::ckTransmitHex(scard,CkSCard::ckActiveProtocol(scard),"FFCA000000",bdRecv,32) If success = 1 Debug "Received: " + CkBinData::ckGetEncoded(bdRecv,"hex") ; The UID is the returned data without the final 2 bytes. numBytes.i = CkBinData::ckNumBytes(bdRecv) If numBytes > 2 Debug "UID: " + CkBinData::ckGetEncodedChunk(bdRecv,0,numBytes - 2,"hex") EndIf Else Debug CkSCard::ckLastErrorText(scard) EndIf ; Disconnect from this reader. success = CkSCard::ckDisconnect(scard,"leave") If success = 0 Debug CkSCard::ckLastErrorText(scard) EndIf ; Applications should always release the context when finished. success = CkSCard::ckReleaseContext(scard) If success = 0 Debug CkSCard::ckLastErrorText(scard) EndIf CkSCard::ckDispose(scard) CkBinData::ckDispose(bdRecv) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.