📄 uldlg.cpp
字号:
// UlDlg.cpp : implementation file
//
#include "stdafx.h"
//#include "CFDemo.h"
#include "UlDlg.h"
//#include "Com.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUlDlg property page
IMPLEMENT_DYNCREATE(CUlDlg, CPropertyPage)
CUlDlg::CUlDlg() : CPropertyPage(CUlDlg::IDD)
{
//{{AFX_DATA_INIT(CUlDlg)
m_sCSN = _T("");
m_sData = _T("");
//}}AFX_DATA_INIT
}
CUlDlg::~CUlDlg()
{
}
void CUlDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUlDlg)
DDX_Control(pDX, IDC_CMB_PAGE, m_cmbPage);
DDX_Control(pDX, IDC_BTN_WRITE, m_btnWrite);
DDX_Control(pDX, IDC_BTN_REQUEST, m_btnRequest);
DDX_Control(pDX, IDC_BTN_READ, m_btnRead);
DDX_Text(pDX, IDC_EDT_CSN, m_sCSN);
DDX_Text(pDX, IDC_EDT_DATA, m_sData);
DDV_MaxChars(pDX, m_sData, 8);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUlDlg, CPropertyPage)
//{{AFX_MSG_MAP(CUlDlg)
ON_BN_CLICKED(IDC_BTN_REQUEST, OnBtnRequest)
ON_BN_CLICKED(IDC_BTN_READ, OnBtnRead)
ON_BN_CLICKED(IDC_BTN_WRITE, OnBtnWrite)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUlDlg message handlers
BOOL CUlDlg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_pParent = (CMyPropetySheet*)GetParent();
ASSERT(m_pParent);
CString sTemp;
for(int n = 2; n < 16; n++)
{
sTemp.Format(L"%d", n);
m_cmbPage.AddString(sTemp);
}
m_cmbPage.SetCurSel(0);
m_btnRequest.EnableWindow(m_pParent->m_bConnected);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CUlDlg::OnBtnRequest()
{
// 寻 UL
BYTE bRev[32] = {0};
BYTE bLength = 0;
CString sText = _T("");
m_sCSN = _T("");
// 关闭天线
if(CFSetAntennaStatus(0, 0) == 0)
{
//设置读写卡器非接触工作方式 "A"
if(CFSetWorkMode(0, 0) == 0)
{
//启动天线
if(CFSetAntennaStatus(0, 1) == 0)
{
//搜寻所有的卡
if(CFISO14443_3ARequest(0, 0x52, bRev, &bLength) == 0)
{
//返回卡的序列号(防冲突)
if(CFISO14443_3AAnticoll(0, bRev, &bLength) == 0)
{
// 锁定一张卡
if(CFULSelect(0, bRev) == 0)
{
// 序列号
m_sCSN.Format(L"%02X%02X%02X%02X%02X%02X%02X",
bRev[0], bRev[1], bRev[2], bRev[3]
, bRev[4], bRev[5], bRev[6]);
m_btnRead.EnableWindow(TRUE);
m_btnWrite.EnableWindow(TRUE);
}
else
{
AfxMessageBox(_T("No Tickets! - CFULSelect -"));
}
}
else
{
AfxMessageBox(_T("No Tickets! - CFISO14443_3AAnticoll -"));
}
}
else
{
AfxMessageBox(_T("No Tickets! : - CFISO14443_3ARequest -"));
}
}
}
}
UpdateData(FALSE);
}
void CUlDlg::OnBtnRead()
{
BYTE bRev[32] = {0};
DWORD nLength = 1;
m_sData.Empty();
// 读卡
int nError = CFISO14443_3ARead(0, m_cmbPage.GetCurSel()+2, bRev);
if(nError == 0)
{
m_sData.Format(L"%02X%02X%02X%02X",
bRev[0], bRev[1], bRev[2], bRev[3]);
}
else
{
m_sData.IsEmpty();
AfxMessageBox(_T("Read Error!"));
}
UpdateData(FALSE);
}
void CUlDlg::OnBtnWrite()
{
BYTE bSend[32] = {0};
BYTE bRev[32] = {0};
// 数据
UpdateData();
if(m_sData.IsEmpty() || m_sData.GetLength() < 8)
{
GetDlgItem(IDC_EDT_DATA)->SetFocus();
AfxMessageBox(L"input 8 chars");
return;
}
StrToHex(m_sData.GetBuffer(8), bSend);
m_sData.ReleaseBuffer();
// 写卡
int nError = CFULWrite(0, m_cmbPage.GetCurSel()+2, bSend, bRev);
if(nError)
{
AfxMessageBox(L"Write Error!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -