Perl
Perl
PC/SC Get Card UID
See more SCard Examples
Sends the APDU command to get a card's UID.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$scard = chilkat::CkSCard->new();
# First establish a context to the PC/SC Resource Manager
$success = $scard->EstablishContext("user");
if ($success == 0) {
print $scard->lastErrorText() . "\r\n";
exit;
}
# Use your own smart card reader name here.
$success = $scard->Connect("ACS ACR122 0","shared","no_preference");
if ($success == 0) {
print $scard->lastErrorText() . "\r\n";
exit;
}
print "Connected reader: " . $scard->connectedReader() . "\r\n";
print "Active protocol: " . $scard->activeProtocol() . "\r\n";
print "ATR: " . $scard->cardAtr() . "\r\n";
print "Reader Status: " . $scard->readerStatus() . "\r\n";
# Send the APDU command 0xFF, 0xCA, 0x00, 0x00, 0x00
$bdRecv = chilkat::CkBinData->new();
$success = $scard->TransmitHex($scard->activeProtocol(),"FFCA000000",$bdRecv,32);
if ($success == 1) {
print "Received: " . $bdRecv->getEncoded("hex") . "\r\n";
# The UID is the returned data without the final 2 bytes.
$numBytes = $bdRecv->get_NumBytes();
if ($numBytes > 2) {
print "UID: " . $bdRecv->getEncodedChunk(0,$numBytes - 2,"hex") . "\r\n";
}
}
else {
print $scard->lastErrorText() . "\r\n";
}
# Disconnect from this reader.
$success = $scard->Disconnect("leave");
if ($success == 0) {
print $scard->lastErrorText() . "\r\n";
}
# Applications should always release the context when finished.
$success = $scard->ReleaseContext();
if ($success == 0) {
print $scard->lastErrorText() . "\r\n";
}