📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMainForm *frmMainForm;
//---------------------------------------------------------------------------
__fastcall TfrmMainForm::TfrmMainForm(TComponent* Owner)
: TForm(Owner)
{
//Fill Cardreaders Names to Combobox
TSmartCardReader::GetCardListReaders(cobCardReaders->Items);
}
//---------------------------------------------------------------------------
BYTE GetProtocalFromATR(BYTE * pATR, int iATR)
{
BYTE aByte ;
BYTE AtrStr = pATR[1]; //T0
aByte = AtrStr;
}
//Power On /Off Card
void __fastcall TfrmMainForm::btnOnOffClick(TObject *Sender)
{
if (0 <= cobCardReaders->ItemIndex)
{
if (NULL != CardReader)
{
delete CardReader;
CardReader = NULL;
btnSend->Enabled = false;
btnOnOff->Caption = "Power On";
cobCardReaders->Enabled = true;
}
else
{
CardReader = new TSmartCardReader(cobCardReaders->Items->Strings[cobCardReaders->ItemIndex].c_str());
AnsiString pATR;
if (true == CardReader->CardConnect(&pATR))
{
btnSend->Enabled = true;
if (CardReader->m_ActiveProtocol == SCARD_PROTOCOL_T1)
memMsg->Lines->Add("Protocol:T=1");
else if (CardReader->m_ActiveProtocol == SCARD_PROTOCOL_T0)
memMsg->Lines->Add("Protocol:T=0");
else
memMsg->Lines->Add("Protocol: Unknow");
memMsg->Lines->Add("ATR << " + pATR);
btnOnOff->Caption = "Power Off";
cobCardReaders->Enabled = false;
}
else
{
delete CardReader;
CardReader = NULL;
}
}
}
}
//---------------------------------------------------------------------------
//Send APDU Command to Card
void __fastcall TfrmMainForm::btnSendClick(TObject *Sender)
{
AnsiString szResponse;
AnsiString strCMD = edtHexCmd->Text.Trim();
strCMD = TSmartCardReader::NoSpace(strCMD);
if (0 != strCMD.Length() % 2)
{
return ;
}
memMsg->Lines->Add("SND >> " + edtHexCmd->Text.Trim());
if (CardReader->RunAPDU(strCMD, &szResponse))
memMsg->Lines->Add("REC << " + szResponse);
else
memMsg->Lines->Add("RUN APDU error" + szResponse);
}
//---------------------------------------------------------------------------
//If CardReader is Not Null then Free it ,
//Call CardReleaseContex to Free Card Contex
void __fastcall TfrmMainForm::FormDestroy(TObject *Sender)
{
if (CardReader != NULL)
delete CardReader;
TSmartCardReader::CardReleaseContex();
HANDLE hmsgMgn = FindWindow("TfrmMsgMgr", NULL);
if (0 != hmsgMgn)
SendMessage(hmsgMgn, WM_CLOSE, 0, 0);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -