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
(Objective-C) PC/SC Get Card UIDSee more SCard ExamplesSends the APDU command to get a card's UID.
#import <CkoSCard.h> #import <CkoBinData.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoSCard *scard = [[CkoSCard alloc] init]; // First establish a context to the PC/SC Resource Manager BOOL success = [scard EstablishContext: @"user"]; if (success == NO) { NSLog(@"%@",scard.LastErrorText); return; } // Use your own smart card reader name here. success = [scard Connect: @"ACS ACR122 0" shareMode: @"shared" preferredProtocol: @"no_preference"]; if (success == NO) { NSLog(@"%@",scard.LastErrorText); return; } NSLog(@"%@%@",@"Connected reader: ",scard.ConnectedReader); NSLog(@"%@%@",@"Active protocol: ",scard.ActiveProtocol); NSLog(@"%@%@",@"ATR: ",scard.CardAtr); NSLog(@"%@%@",@"Reader Status: ",scard.ReaderStatus); // Send the APDU command 0xFF, 0xCA, 0x00, 0x00, 0x00 CkoBinData *bdRecv = [[CkoBinData alloc] init]; success = [scard TransmitHex: scard.ActiveProtocol apduHex: @"FFCA000000" bdRecv: bdRecv maxRecvLen: [NSNumber numberWithInt: 32]]; if (success == YES) { NSLog(@"%@%@",@"Received: ",[bdRecv GetEncoded: @"hex"]); // The UID is the returned data without the final 2 bytes. int numBytes = [bdRecv.NumBytes intValue]; if (numBytes > 2) { NSLog(@"%@%@",@"UID: ",[bdRecv GetEncodedChunk: [NSNumber numberWithInt: 0] numBytes: [NSNumber numberWithInt: (numBytes - 2)] encoding: @"hex"]); } } else { NSLog(@"%@",scard.LastErrorText); } // Disconnect from this reader. success = [scard Disconnect: @"leave"]; if (success == NO) { NSLog(@"%@",scard.LastErrorText); } // Applications should always release the context when finished. success = [scard ReleaseContext]; if (success == NO) { NSLog(@"%@",scard.LastErrorText); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.