📄 valuedlg.cpp
字号:
// ValueDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Mifare.h"
#include "ValueDlg.h"
#include "zlg500.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CValueDlg dialog
CValueDlg::CValueDlg(CWnd* pParent /*=NULL*/)
: CDialog(CValueDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CValueDlg)
m_valueread = 0;
m_valuewrite = 0;
m_valueadd = 0;
m_valuesub = 0;
m_SrcBlock = 1;
m_DesBlock = 2;
//}}AFX_DATA_INIT
szpwd[0] = 0xff;
szpwd[1] = 0xff;
szpwd[2] = 0xff;
szpwd[3] = 0xff;
szpwd[4] = 0xff;
szpwd[5] = 0xff;
szpwd[6] = 0xff;
}
void CValueDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CValueDlg)
DDX_Control(pDX, IDC_COMBO3, m_ComboBlockNum2);
DDX_Control(pDX, IDC_COMBO2, m_ComboBlockNum);
DDX_Control(pDX, IDC_COMBO1, m_ComboReader);
DDX_Text(pDX, IDC_EDIT2, m_valueread);
DDX_Text(pDX, IDC_EDIT1, m_valuewrite);
DDX_Text(pDX, IDC_EDIT3, m_valueadd);
DDX_Text(pDX, IDC_EDIT4, m_valuesub);
DDX_Text(pDX, IDC_EDIT5, m_SrcBlock);
DDX_Text(pDX, IDC_EDIT6, m_DesBlock);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CValueDlg, CDialog)
//{{AFX_MSG_MAP(CValueDlg)
ON_BN_CLICKED(IDC_INIT, OnInit)
ON_BN_CLICKED(IDC_BLOCK_WRITE, OnBlockWrite)
ON_BN_CLICKED(IDC_VALUE_READ, OnValueRead)
ON_BN_CLICKED(IDC_ADDVALUE, OnAddvalue)
ON_BN_CLICKED(IDC_SUBVALUE, OnSubvalue)
ON_BN_CLICKED(IDC_VALUE_COPY, OnValueCopy)
ON_BN_CLICKED(IDC_EMPTY, OnEmpty)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CValueDlg message handlers
BOOL CValueDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_DesBlock = 2;
UpdateData(FALSE);
if(zlg500_ReadAddr(cardaddrlen,cardaddr)==1) //取得线上的读卡器的地址
{
AfxMessageBox("取得线上的读卡器的地址失败!"); //如果失败则返回
}
CString str;
for(int i=0;i<cardaddrlen;i++)
{
str.Format("%x",cardaddr[i]);
m_ComboReader.AddString(str);
}
m_ComboReader.SetCurSel(0);
CString str2;
for(int j=0;j<64;j++)
{
str2.Format("%d",j);
m_ComboBlockNum.AddString(str2);
}
m_ComboBlockNum.SetCurSel(1);
for(j=0;j<64;j++)
{
str2.Format("%d",j);
m_ComboBlockNum2.AddString(str2);
}
m_ComboBlockNum2.SetCurSel(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CValueDlg::OnInit()
{
// TODO: Add your control notification handler code here
for(int i=0;i<16;i++)
{
if(zlg500_LoadPwd(cardaddr[0],0,i,szpwd)==1) //往第0 密钥区装载密钥A
{
MessageBox("加载密钥失败!");
}
Sleep(2);
}
if(zlg500_Request(cardaddr[0],1,type)==1) //对第一个读卡器进行操作
{
if(zlg500_Request(cardaddr[0],1,type)==1)
{
MessageBox("请求读卡器失败!");
}
}
Sleep(2);
if(zlg500_Anticoll(cardaddr[0],0,snr)==1) //进行防碰撞选择成功则返回卡号
{
MessageBox("防碰撞失败!");
}
Sleep(2);
/* unsigned long xuhao[10];
unsigned char num;
if(zlg500_SelCards(cardaddr[0],0,xuhao,num)==1)
{
MessageBox("识别标签失败!");
}*/
if(zlg500_Select(cardaddr[0],snr,size)==1) //选择卡
{
MessageBox("选择标签失败!");
}
Sleep(2);
/* if(zlg500_AuthenPwd(cardaddr[0],0,0)==1) //验证第0 扇区的密钥A
{
MessageBox("验证密钥失败!");
}*/
}
void CValueDlg::OnBlockWrite()
{
// TODO: Add your control notification handler code here
writeblocknum = m_ComboBlockNum.GetCurSel();
m_ComboBlockNum2.SetCurSel(writeblocknum);
int KeyBlock;
KeyBlock = writeblocknum/4;
if(zlg500_AuthenPwd(cardaddr[0],0,KeyBlock)==1) //验证第扇区的密钥A
{
MessageBox("验证密钥失败!");
}
UpdateData();
if(zlg500_WriteBlockVal(cardaddr[0],writeblocknum,m_valuewrite)==1) //往第二块写入数据
{
MessageBox("写入数据失败!");
zlg500_SetControl(cardaddr[0],0x07,10,10,10);
}
Sleep(2);
}
void CValueDlg::OnValueRead()
{
// TODO: Add your control notification handler code here
readblocknum = m_ComboBlockNum2.GetCurSel();
writeblocknum = m_ComboBlockNum.GetCurSel();
if(readblocknum != writeblocknum)
{
int KeyBlock;
KeyBlock = readblocknum/4;
if(zlg500_AuthenPwd(cardaddr[0],0,KeyBlock)==1) //验证第0 扇区的密钥A
{
MessageBox("验证密钥失败!");
}
}
if(zlg500_ReadBlockVal(cardaddr[0],readblocknum,m_valueread)==1) //读取第二块的数据
{
MessageBox("读取数据失败!");
zlg500_SetControl(cardaddr[0],0x07,10,10,10);
}
Sleep(2);
UpdateData(FALSE);
}
void CValueDlg::OnAddvalue()
{
// TODO: Add your control notification handler code here
UpdateData();
writeblocknum = m_ComboBlockNum.GetCurSel();
if(zlg500_AddVal(cardaddr[0],writeblocknum,m_valueadd)==1)
{
MessageBox("加上数值失败!");
zlg500_SetControl(cardaddr[0],0x07,10,10,10);
}
Sleep(2);
}
void CValueDlg::OnSubvalue()
{
// TODO: Add your control notification handler code here
UpdateData();
writeblocknum = m_ComboBlockNum.GetCurSel();
if(zlg500_ReduceVal(cardaddr[0],writeblocknum,m_valuesub)==1) //往第二块写入数据
{
MessageBox("减去数值失败!");
zlg500_SetControl(cardaddr[0],0x07,10,10,10);
}
Sleep(2);
}
void CValueDlg::OnValueCopy()
{
// TODO: Add your control notification handler code here
UpdateData();
int KeyBlock;
KeyBlock = m_SrcBlock/4;
if(zlg500_AuthenPwd(cardaddr[0],0,KeyBlock)==1) //验证第扇区的密钥A
{
MessageBox("验证密钥失败!");
}
Sleep(2);
// UpdateData();
if(zlg500_CopyBlock(cardaddr[0],m_SrcBlock,m_DesBlock)==1)
{
MessageBox("复制数值失败!");
zlg500_SetControl(cardaddr[0],0x07,10,10,10);
}
Sleep(2);
}
void CValueDlg::OnEmpty()
{
// TODO: Add your control notification handler code here
m_valueread = NULL;
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -