📄 mf_pad_demodlg.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 + -