📄 15693dlg.cpp
字号:
// 15693Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "APIDemo.h"
#include "15693Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// C15693Dlg property page
IMPLEMENT_DYNCREATE(C15693Dlg, CPropertyPage)
C15693Dlg::C15693Dlg() : CPropertyPage(C15693Dlg::IDD)
{
//{{AFX_DATA_INIT(C15693Dlg)
m_sAFI = _T("");
m_sData = _T("");
m_sDSFID = _T("");
m_sUID = _T("");
m_sStatus = _T("");
//}}AFX_DATA_INIT
m_pParent = NULL;
m_bDSFID = 0;
m_bAFI = 0;
ZeroMemory(m_bUID, sizeof(m_bUID));
}
C15693Dlg::~C15693Dlg()
{
}
void C15693Dlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(C15693Dlg)
DDX_Control(pDX, IDC_CMB_BLOCK, m_cmbBlock);
DDX_Control(pDX, IDC_BTN_DSFID_WRITE, m_btnDsWrite);
DDX_Control(pDX, IDC_BTN_GETINFO, m_btnGetInfo);
DDX_Control(pDX, IDC_BTN_DS_LOCK, m_btnDsLock);
DDX_Control(pDX, IDC_BTN_BLOCK_WRITE, m_btnBlockWrite);
DDX_Control(pDX, IDC_BTN_BLOCK_READ, m_btnBlockRead);
DDX_Control(pDX, IDC_BTN_BLOCK_LOCK, m_btnBlockLock);
DDX_Control(pDX, IDC_BTN_AFI_WRITE, m_btnAfiWrite);
DDX_Control(pDX, IDC_BTN_AFI_LOCK, m_btnAfiLock);
DDX_Text(pDX, IDC_EDT_AFI, m_sAFI);
DDV_MaxChars(pDX, m_sAFI, 2);
DDX_Text(pDX, IDC_EDT_DATA, m_sData);
DDX_Text(pDX, IDC_EDT_DSFID, m_sDSFID);
DDX_Text(pDX, IDC_EDT_UID, m_sUID);
DDX_Text(pDX, IDC_EDT_STATUS, m_sStatus);
DDV_MaxChars(pDX, m_sStatus, 2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(C15693Dlg, CPropertyPage)
//{{AFX_MSG_MAP(C15693Dlg)
ON_BN_CLICKED(IDC_BTN_GETINFO, OnBtnGetinfo)
ON_BN_CLICKED(IDC_BTN_DSFID_WRITE, OnBtnDsfidWrite)
ON_BN_CLICKED(IDC_BTN_DS_LOCK, OnBtnDsLock)
ON_BN_CLICKED(IDC_BTN_AFI_WRITE, OnBtnAfiWrite)
ON_BN_CLICKED(IDC_BTN_AFI_LOCK, OnBtnAfiLock)
ON_BN_CLICKED(IDC_BTN_BLOCK_READ, OnBtnBlockRead)
ON_BN_CLICKED(IDC_BTN_BLOCK_WRITE, OnBtnBlockWrite)
ON_BN_CLICKED(IDC_BTN_BLOCK_LOCK, OnBtnBlockLock)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// C15693Dlg message handlers
BOOL C15693Dlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_pParent = (CMyPropetySheet*)GetParent();
ASSERT(m_pParent);
m_btnGetInfo.EnableWindow(m_pParent->m_bConnected);
CString sTemp;
for(int n = 0; n < 64; n++)
{
sTemp.Format(L"%d", n);
m_cmbBlock.AddString(sTemp);
}
m_cmbBlock.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void C15693Dlg::OnBtnGetinfo()
{
CString sText;
// 设置读写器读卡方式为 15693
if(CFSetWorkMode(0, 3) == 0)
{
int nError = CFISO15693GetSystemInformation(0, 0, m_bUID, &m_bDSFID, &m_bAFI);
if(nError == 0)
{
/* TCHAR szText[64] = {0};
TCHAR sztemp[64] = {0};
for(DWORD n = 0; n < 8; n++)
{
wsprintf(sztemp, L"%02X", m_bUID[n]);
wcscat(szText, sztemp);
}
::MessageBox(NULL, szText, L"Rev Data", MB_OK);*/
m_sUID.Format(L"%02X%02X%02X%02X%02X%02X%02X%02X",
m_bUID[0], m_bUID[1], m_bUID[2], m_bUID[3],
m_bUID[4], m_bUID[5], m_bUID[6], m_bUID[7]);
m_sDSFID.Format(L"%02X", m_bDSFID);
m_sAFI.Format(L"%02X", m_bAFI);
m_btnDsWrite.EnableWindow(TRUE);
m_btnDsLock.EnableWindow(TRUE);
m_btnBlockWrite.EnableWindow(TRUE);
m_btnBlockRead.EnableWindow(TRUE);
m_btnBlockLock.EnableWindow(TRUE);
m_btnAfiWrite.EnableWindow(TRUE);
m_btnAfiLock.EnableWindow(TRUE);
}
else
{
m_sData.Empty();
m_sStatus.Empty();
m_btnDsWrite.EnableWindow(FALSE);
m_btnDsLock.EnableWindow(FALSE);
m_btnBlockWrite.EnableWindow(FALSE);
m_btnBlockRead.EnableWindow(FALSE);
m_btnBlockLock.EnableWindow(FALSE);
m_btnAfiWrite.EnableWindow(FALSE);
m_btnAfiLock.EnableWindow(FALSE);
m_sAFI.Empty();
m_sData.Empty();
m_sDSFID.Empty();
m_sUID.Empty();
sText.Format(_T("No tickets! -- %d"), nError);
AfxMessageBox(sText);
}
}
else
{
m_btnDsWrite.EnableWindow(FALSE);
m_btnDsLock.EnableWindow(FALSE);
m_btnBlockWrite.EnableWindow(FALSE);
m_btnBlockRead.EnableWindow(FALSE);
m_btnBlockLock.EnableWindow(FALSE);
m_btnAfiWrite.EnableWindow(FALSE);
m_btnAfiLock.EnableWindow(FALSE);
m_sAFI.Empty();
m_sData.Empty();
m_sDSFID.Empty();
m_sUID.Empty();
AfxMessageBox(_T("No tickets!"));
}
UpdateData(FALSE);
}
void C15693Dlg::OnBtnDsfidWrite()
{
UpdateData(TRUE);
StrToHex(m_sDSFID.GetBuffer(2), &m_bDSFID);
m_sDSFID.ReleaseBuffer();
if(CFISO15693WriteDSFID(0, 0x02, m_bUID, m_bDSFID) == 0)
{
}
else
AfxMessageBox(L"Write Error!");
}
void C15693Dlg::OnBtnDsLock()
{
if(CFISO15693LockDSFID(0, 0x02, m_bUID) == 0)
{
}
else
AfxMessageBox(L"Lock Error!");
}
void C15693Dlg::OnBtnAfiWrite()
{
UpdateData(TRUE);
StrToHex(m_sAFI.GetBuffer(2), &m_bAFI);
m_sAFI.ReleaseBuffer();
if(CFISO15693WriteAFI(0, 0x02, m_bUID, m_bAFI))
AfxMessageBox(L"Write Error!");
}
void C15693Dlg::OnBtnAfiLock()
{
if(CFISO15693LockAFI(0, 0x02, m_bUID) == 0)
{
}
else
AfxMessageBox(L"Lock Error!");
}
void C15693Dlg::OnBtnBlockRead()
{
BYTE bData[16] = {0};
BYTE bLength = 0;
if(CFISO15693Read(0, 0x02, m_bUID, m_cmbBlock.GetCurSel(), 0x01, bData, &bLength) == 0)
{
m_sData.Format(L"%02X%02X%02X%02X", bData[0],
bData[1], bData[2], bData[3]);
ZeroMemory(bData, sizeof(bData));
CFISO15693GetBlockSecurity(0, 0x02, m_bUID, m_cmbBlock.GetCurSel(), 0x01, bData, &bLength);
m_sStatus.Format(L"%02X", bData[0]);
}
else
AfxMessageBox(L"Read Error!");
UpdateData(FALSE);
}
void C15693Dlg::OnBtnBlockWrite()
{
UpdateData();
BYTE bData[16] = {0};
CString sText = _T("");
if(m_sData.IsEmpty())
{
AfxMessageBox(L"Data is empty!");
return;
}
StrToHex(m_sData.GetBuffer(8), bData);
//Write
int nError = CFISO15693Write(0, 0x02, m_bUID, m_cmbBlock.GetCurSel(), bData);
if(nError == 0)
{
}
else
{
sText.Format(_T("Write error! --- %d"), nError);
AfxMessageBox(sText);
}
}
void C15693Dlg::OnBtnBlockLock()
{
if(CFISO15693LockBlock(0, 0x06, m_bUID, m_cmbBlock.GetCurSel()) == 0)
{
}
else
AfxMessageBox(L"Lock error!");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -