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

📄 valuedlg.cpp

📁 Mifare非接触IC读卡器与PC通信程序
💻 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 + -