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

📄 mf_pad_demodlg.cpp

📁 基于wince系统的RFID识别程序 支持多种RFID协议自动转化
💻 CPP
字号:
// mf_pad_demoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "mf_pad_demo.h"
#include "mf_pad_demoDlg.h"
#include "mi.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMf_pad_demoDlg dialog

CMf_pad_demoDlg::CMf_pad_demoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMf_pad_demoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMf_pad_demoDlg)
	m_strTransmit = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMf_pad_demoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMf_pad_demoDlg)
	DDX_Control(pDX, IDC_EDIT_DISP, m_editDisp);
	DDX_Control(pDX, IDC_COMBO_PORT, m_cbPort);
	DDX_Text(pDX, IDC_EDIT_DISP, m_strTransmit);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMf_pad_demoDlg, CDialog)
	//{{AFX_MSG_MAP(CMf_pad_demoDlg)
	ON_BN_CLICKED(IDC_BTN_OPENCOM, OnBtnOpencom)
	ON_BN_CLICKED(IDC_BTN_CLOSECOM, OnBtnClosecom)
	ON_BN_CLICKED(IDC_BTN_CNTRL_LED, OnBtnCntrlLed)
	ON_BN_CLICKED(IDC_BTN_CLEAR, OnBtnClear)
	ON_BN_CLICKED(IDC_BTN_SETBAUD, OnBtnSetbaud)
	ON_BN_CLICKED(IDC_BTN_GETVER, OnBtnGetver)
	ON_BN_CLICKED(IDC_BTN_TYPEA, OnBtnTypeA)
	ON_BN_CLICKED(IDC_BTN_REQB, OnBtnReqb)
	ON_BN_CLICKED(IDC_BTN_MF_READ, OnBtnMfRead)
	ON_BN_CLICKED(IDC_BTN_MFWRITE, OnBtnMfwrite)
	ON_BN_CLICKED(IDC_BTN_MF_INITVAL, OnBtnMfInitval)
	ON_BN_CLICKED(IDC_BTN_MF_DEC, OnBtnMfDec)
	ON_BN_CLICKED(IDC_BTN_INC, OnBtnInc)
	ON_BN_CLICKED(IDC_BTN_MF_GETSNR, OnBtnMfGetsnr)
	ON_BN_CLICKED(IDC_BTN_NEXT_PAGE, OnBtnNextPage)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMf_pad_demoDlg message handlers

BOOL CMf_pad_demoDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen
	m_cbPort.SetCurSel(5);
	// TODO: Add extra initialization here
	m_hComm = INVALID_HANDLE_VALUE;

	return TRUE;  // return TRUE  unless you set the focus to a control
}

HANDLE m_hComm = INVALID_HANDLE_VALUE;
void CMf_pad_demoDlg::OnBtnOpencom() 
{
	// TODO: Add your control notification handler code here
	int seq;
	CString PortIDs[9] = {"COM1:", "COM2:", "COM3:", "COM4:", "COM5:",
								   "COM6:", "COM7:", "COM8:"
								};
	int i,ids[11] = {IDC_BTN_CLOSECOM,IDC_BTN_SETBAUD,IDC_BTN_GETVER,IDC_BTN_CNTRL_LED,IDC_BTN_TYPEA, IDC_BTN_MF_READ,
				IDC_BTN_MFWRITE,IDC_BTN_MF_INITVAL,IDC_BTN_MF_DEC,IDC_BTN_INC,IDC_BTN_MF_GETSNR};

	unsigned char buf[100]="\xAA\x00\x03\x89\x18\x0A\x98\xBB";
	
	seq = m_cbPort.GetCurSel();	
	if(seq>=0&&seq<9){
	}else {
		return ;
	}
	m_hComm = API_OpenComm(seq,9600);
	if(m_hComm == 0)
	{
		m_editDisp.SetWindowText(_T("Open com port err"));
		GetDlgItem(IDC_BTN_OPENCOM)->EnableWindow(FALSE);
	    for(i=0;i<11;i++)
		   GetDlgItem(ids[i])->EnableWindow(TRUE);
		return ;
	}else {
		m_editDisp.SetWindowText(_T("Open com port ok"));
	}
}

void CMf_pad_demoDlg::OnBtnClosecom() 
{
	// TODO: Add your control notification handler code here
	int ret;

	if(m_hComm == INVALID_HANDLE_VALUE) return ;
	int i,ids[11] = {IDC_BTN_CLOSECOM,IDC_BTN_SETBAUD,IDC_BTN_GETVER,IDC_BTN_CNTRL_LED,IDC_BTN_TYPEA, IDC_BTN_MF_READ,
				IDC_BTN_MFWRITE,IDC_BTN_MF_INITVAL,IDC_BTN_MF_DEC,IDC_BTN_INC,IDC_BTN_MF_GETSNR};

	ret = API_CloseComm(m_hComm);
	if(ret==0)
	{
		m_editDisp.SetWindowText(_T("Close com port ok"));
		m_hComm = INVALID_HANDLE_VALUE;
		GetDlgItem(IDC_BTN_OPENCOM)->EnableWindow(TRUE);
	    for(i=0;i<11;i++)
		   GetDlgItem(ids[i])->EnableWindow(FALSE);

	}else {
		m_editDisp.SetWindowText(_T("Close com port fail"));
	}
	return ;	
}

void CMf_pad_demoDlg::OnBtnCntrlLed() 
{
	// TODO: Add your control notification handler code here
	int ret;
	CString strDsp;
	unsigned char freq=0x18;
	unsigned char duration=0x1a;
	unsigned char buffer[100];

	if(m_hComm == INVALID_HANDLE_VALUE)
	{
		m_editDisp.SetWindowText(_T("Please Open Comm\r\n"));
		return ;
	}
	/*	
	ret = SetLED(0,1);
	strDsp.Format(_T("read:%d"),ret);
	AfxMessageBox(strDsp);
	if(ret)
	{
		m_editDisp.SetWindowText(_T("SetLED error"));
	}else {
		m_editDisp.SetWindowText(_T("SetLED ok"));
	}
*/

	ret = API_ControlLED(m_hComm,0,freq,duration,buffer);
	if(ret)
	{
		m_editDisp.SetWindowText(_T("API_ControlLED error"));
	}else {
		m_editDisp.SetWindowText(_T("API_ControlLED ok"));
	}
}

void CMf_pad_demoDlg::OnBtnClear() 
{
	// TODO: Add your control notification handler code here
	m_editDisp.SetWindowText(_T(""));
}

void CMf_pad_demoDlg::OnBtnSetbaud() 
{
	// TODO: Add your control notification handler code here
	int ret;
	CString strDsp;
	unsigned char buffer[100];

	if(m_hComm == INVALID_HANDLE_VALUE)
	{
		m_editDisp.SetWindowText(_T("Please Open Comm\r\n"));
		return ;
	}
	memset(buffer,0,sizeof(buffer));
	ret = API_SetBandrate(m_hComm, 0,115200, (unsigned char*)buffer);
	if(ret)
	{
		m_editDisp.SetWindowText(_T("API_SetBandrate error"));
	}else {
		m_editDisp.SetWindowText(_T("API_SetBandrate ok"));
	}
}

void CMf_pad_demoDlg::OnBtnGetver() 
{
	// TODO: Add your control notification handler code here
	int ret;
	CString strDsp=_T("");
	unsigned char buffer[100];

	memset(buffer,0,100);
	if(m_hComm == INVALID_HANDLE_VALUE)
	{
		m_editDisp.SetWindowText(_T("Please Open Comm\r\n"));
		return ;
	}
	ret = GetVersionNum(m_hComm,0,(char*)buffer);
	if(ret)
	{
		strDsp.Format(_T("GetVersionNum error %d"),ret);
		m_editDisp.SetWindowText((strDsp));
	}else {
			strDsp = buffer;
			m_editDisp.SetWindowText(strDsp);
	}	
}

void CMf_pad_demoDlg::OnBtnTypeA() 
{
	// TODO: Add your control notification handler code here
	int DeviceAddress = 0;
	unsigned char inf_mode = 0x01; //Idleģʽ
	unsigned char Buffer[100];
	CString strDsp;
	unsigned char status;
	unsigned char snr[5];
	int ret;

	if(m_hComm == INVALID_HANDLE_VALUE)
	{
		m_editDisp.SetWindowText(_T("Please Open Comm\r\n"));
		return ;
	}
	ret = MF_Request(m_hComm, DeviceAddress, inf_mode, (unsigned char *)Buffer);
	if(ret)
	{
		strDsp.Format(_T("MF_Request error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		strDsp = _T("MF_Request ok\r\n");
		m_editDisp.SetWindowText(strDsp);
	}
	ret = MF_Anticoll(m_hComm,DeviceAddress,(unsigned char *)snr,status);	
	if(ret)
	{
		strDsp.Format(_T("MF_Anticoll error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		m_editDisp.GetWindowText(strDsp);
		strDsp.Format(_T("%sMF_Select ok:%02x%02x%02x%02x\r\n"),strDsp,snr[0],snr[1],snr[2],snr[3]);
		m_editDisp.SetWindowText(strDsp);
	}
	ret = MF_Select(m_hComm, DeviceAddress,(unsigned char *)snr);
	if(ret)
	{
		strDsp.Format(_T("MF_Select error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		m_editDisp.GetWindowText(strDsp);
		strDsp += _T("MF_Select ok\r\n");
		m_editDisp.SetWindowText(strDsp);
	}
	ret = MF_Halt(m_hComm,DeviceAddress);
	if(ret)
	{
		strDsp.Format(_T("MF_Halt error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		m_editDisp.GetWindowText(strDsp);
		strDsp += _T("MF_Halt ok\r\n");
		m_editDisp.SetWindowText(strDsp);
	}
	return ;
}

void CMf_pad_demoDlg::OnBtnReqb() 
{
	// TODO: Add your control notification handler code here
	int DeviceAddress = 0;
	unsigned char inf_mode = 0x01; //Idleģʽ
	unsigned char buffer[100];
	CString strDsp;
	int ret;
	
	if(m_hComm == INVALID_HANDLE_VALUE)
	{
		m_editDisp.SetWindowText(_T("Please Open Comm\r\n"));
		return ;
	}
	ret = RequestType_B(m_hComm,DeviceAddress,(unsigned char *)buffer);
	if(ret)
	{
		strDsp.Format(_T("RequestType_B error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		m_editDisp.GetWindowText(strDsp);
		strDsp += _T("RequestType_B ok\r\n");
		m_editDisp.SetWindowText(strDsp);
	}	
	ret = AntiType_B(m_hComm,DeviceAddress, (unsigned char *)buffer);
	if(ret)
	{
		strDsp.Format(_T("AntiType_B error %d\r\n"),ret);
		m_editDisp.SetWindowText((strDsp));
		return ;
	}else {
		m_editDisp.GetWindowText(strDsp);
		strDsp += _T("AntiType_B ok\r\n");
		m_editDisp.SetWindowText(strDsp);
	}	
}


void CMf_pad_demoDlg::OnBtnMfRead() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0 ;
	unsigned char blk_addr = 4;
	unsigned char num_blk = 3;
	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char buffer[100];
	int i,j;

	ret = API_PCDRead(m_hComm, DeviceAddress,mode,blk_addr, num_blk,
		              (unsigned char*)snr,(unsigned char*)buffer);	
	if(ret==0)
	{
		for(i=0;i<3;i++)
		{
			for(j=0;j<16;j++)
			{
				strDsp.Format(_T("%s%02x"),strDsp,buffer[i*16+j]);
			}
			strDsp+=_T("\r\n");
		}
		m_editDisp.SetWindowText(strDsp);
	}else {
		m_editDisp.SetWindowText(_T("API_PCDRead fail"));
	}
}
extern CString remove_space(CString str);
void CMf_pad_demoDlg::OnBtnMfwrite() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0 ;
	unsigned char blk_addr = 4;
	unsigned char num_blk = 3;
	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char buf[100];
	int i,j;

	memset(buf,0,sizeof(buf));

	DWORD dwCharToWrite=0;
	int HexSend = 1;
	CString	m_strTransmit;

	if(m_hComm == INVALID_HANDLE_VALUE) 
	{
		m_editDisp.SetWindowText(_T("Pls open serial port first!"));
		return ;
	}
	GetDlgItemText(IDC_EDIT_DISP,m_strTransmit);
	m_strTransmit = remove_space(m_strTransmit);
	if(!HexSend)
	{
		dwCharToWrite=(DWORD)m_strTransmit.GetLength();
	}
	else
	{
		for(i=0;i<m_strTransmit.GetLength()/2;i++)
		{
			if(((m_strTransmit.GetAt(i*2)>='0'&&m_strTransmit.GetAt(i*2)<='9')||(m_strTransmit.GetAt(i*2)>='A'&&m_strTransmit.GetAt(i*2)<='F'))&&((m_strTransmit.GetAt(i*2+1)>='0'&&m_strTransmit.GetAt(i*2+1)<='9')||(m_strTransmit.GetAt(i*2+1)>='A'&&m_strTransmit.GetAt(i*2+1)<='F')))
			{
				dwCharToWrite++;
			}
		}
	}
	if(dwCharToWrite!=0)
	{
		if(!HexSend)
		{			
			for(i=0;i<(int)dwCharToWrite;i++)
			{
				buf[i]=(char)m_strTransmit.GetAt(i);
			}
		}
		else
		{
			j=0;
			for(i=0;i<m_strTransmit.GetLength()/2;i++)
			{
				if(((m_strTransmit.GetAt(i*2)>='0'&&m_strTransmit.GetAt(i*2)<='9')||(m_strTransmit.GetAt(i*2)>='A'&&m_strTransmit.GetAt(i*2)<='F'))&&((m_strTransmit.GetAt(i*2+1)>='0'&&m_strTransmit.GetAt(i*2+1)<='9')||(m_strTransmit.GetAt(i*2+1)>='A'&&m_strTransmit.GetAt(i*2+1)<='F')))
				{
					if(m_strTransmit.GetAt(i*2+1)>='0'&&m_strTransmit.GetAt(i*2+1)<='9')
					{
						buf[j]=m_strTransmit.GetAt(i*2+1)-48;
					}
					else
					{
						buf[j]=m_strTransmit.GetAt(i*2+1)-55;
					}
					if(m_strTransmit.GetAt(i*2)>='0'&&m_strTransmit.GetAt(i*2)<='9')
					{
						buf[j]+=(m_strTransmit.GetAt(i*2)-48)*16;
					}
					else
					{
						buf[j]+=(m_strTransmit.GetAt(i*2)-55)*16;
					}
					j++;
				}
			}
		}
		ret = API_PCDWrite(m_hComm, DeviceAddress,mode,blk_addr, num_blk,
						  (unsigned char*)snr,(unsigned char*)buf);	
		if(ret==0)
		{
			m_editDisp.SetWindowText(_T("API_PCDWrite ok"));
		}else {
			m_editDisp.SetWindowText(_T("API_PCDWrite fail"));
		}		
	}else {
		m_editDisp.SetWindowText(_T("Please input valid data\r\n!"));
	}
}

void CMf_pad_demoDlg::OnBtnMfInitval() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0 ;
	unsigned char SectNum = 1;
	int value=1000;

	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char buffer[100];

	memset(buffer,0,sizeof(buffer));

	ret = API_PCDInitVal(m_hComm, DeviceAddress,mode,SectNum,
		              (unsigned char*)snr,value);	
	if(ret==0)
	{
		m_editDisp.SetWindowText(_T("API_PCDInitVal 1000 ok"));
	}else {
		m_editDisp.SetWindowText(_T("API_PCDInitVal fail"));
	}	
}

void CMf_pad_demoDlg::OnBtnMfDec() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0 ;
	unsigned char SectNum = 1;
	int value=1;

	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char buffer[100];

	memset(buffer,0,sizeof(buffer));

	ret = API_PCDDec(m_hComm, DeviceAddress,mode,SectNum,
		              (unsigned char*)snr,&value);	
	if(ret==0)
	{
		strDsp.Format(_T("API_PCDDec ok,rest value:%d\r\n"),value);
		m_editDisp.SetWindowText(strDsp);
	}else {
		m_editDisp.SetWindowText(_T("API_PCDDec fail"));
	}
}

void CMf_pad_demoDlg::OnBtnInc() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0 ;
	unsigned char SectNum = 1;
	int value=1;

	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char buffer[100];

	memset(buffer,0,sizeof(buffer));

	ret = API_PCDInc(m_hComm, DeviceAddress,mode,SectNum,
		              (unsigned char*)snr,&value);	
	if(ret==0)
	{
		strDsp.Format(_T("API_PCDInc ok,rest value:%d\r\n"),value);
		m_editDisp.SetWindowText(strDsp);
	}else {
		m_editDisp.SetWindowText(_T("API_PCDInc fail"));
	}		
}

void CMf_pad_demoDlg::OnBtnMfGetsnr() 
{
	// TODO: Add your control notification handler code here
	int ret;
	int DeviceAddress = 0;
	unsigned char mode = 0x26 ;
	unsigned char buffer[100];

	unsigned char snr[7] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff};
	CString strDsp=_T("");
	unsigned char       RDM_halt=0;

	memset(buffer,0,sizeof(buffer));
	ret = GET_SNR(m_hComm, DeviceAddress,mode,RDM_halt,
		              (unsigned char*)snr,(unsigned char*)buffer);	
	if(ret==0)
	{
		strDsp.Format(_T("GET_SNR ok,SN:%02x%02x%02x%02x\r\n"),buffer[0],buffer[1],buffer[2],buffer[3]);
		m_editDisp.SetWindowText(strDsp);
	}else {
		m_editDisp.SetWindowText(_T("GET_SNR fail"));
	}		
}

#include "dlg15693.h"
HANDLE g_hComm;
void CMf_pad_demoDlg::OnBtnNextPage() 
{
	// TODO: Add your control notification handler code here
	Dlg15693 dlg ;

	g_hComm = m_hComm;
	dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -