⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15693dlg.cpp

📁 APIDemo源码
💻 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 + -