📄 writedata.cpp
字号:
// WriteData.cpp : implementation file
//
#include "stdafx.h"
#include "VCsample.h"
#include "WriteData.h"
#include "XCRFAPI.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWriteData dialog
CWriteData::CWriteData(CWnd* pParent /*=NULL*/)
: CDialog(CWriteData::IDD, pParent)
{
//{{AFX_DATA_INIT(CWriteData)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CWriteData::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWriteData)
DDX_Control(pDX, IDC_STATIC_INFO, m_stcInfoCtl);
DDX_Control(pDX, IDC_EDIT_WriteDataAccessPSW, m_edACKPSWCtl);
DDX_Control(pDX, IDC_EDIT_WriteDataTagData, m_edWriteDataCtl);
DDX_Control(pDX, IDC_COMBO_WRITELEN, m_cboWriteLenCtl);
DDX_Control(pDX, IDC_COMBO_WRITEADD, m_cboWriteAddCtl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWriteData, CDialog)
//{{AFX_MSG_MAP(CWriteData)
ON_CBN_SELCHANGE(IDC_COMBO_WRITEADD, OnSelchangeComboWriteadd)
ON_CBN_SELCHANGE(IDC_COMBO_WRITELEN, OnSelchangeComboWritelen)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWriteData message handlers
void CWriteData::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
m_stcInfoCtl.SetWindowText ( "" );
int i;
CString szTemp, sz;
int len;
m_edWriteDataCtl.GetWindowText ( szTemp );
if ( szTemp.GetLength() % 2 == 1 )
{
AfxMessageBox("Please input hexadecimal characters!");
szTemp = "";
m_edWriteDataCtl.SetWindowText ( szTemp );
return;
}
len = szTemp.GetLength();
for ( i = 0; i < len; i++ )
{
if ( theApp._atoi_j ( szTemp [ i ] ) == -1 )
{
szTemp = "";
m_edWriteDataCtl.SetWindowText ( szTemp );
AfxMessageBox("Please input hexadecimal characters!");
return;
}
}
i = m_edWriteDataCtl.GetLimitText();
if ( len != i )
{
sz = "Length error!Write data length is different from the data length in fact!";
AfxMessageBox ( sz );
return;
}
m_edACKPSWCtl.GetWindowText ( szTemp );
szTemp.TrimLeft();
szTemp.TrimRight();
len = szTemp.GetLength();
if ( len != 8 )
{
szTemp = "";
m_edACKPSWCtl.SetWindowText ( szTemp );
AfxMessageBox ( "The length of Tag access password error,Please input again!" );
return;
}
for ( i = 0; i < 8; i++ )
{
if ( theApp._atoi_j ( szTemp [ i ] ) == -1 )
{
szTemp = "";
m_edACKPSWCtl.SetWindowText ( szTemp );
AfxMessageBox("Please input hexadecimal characters!");
return;
}
}
memset ( m_pcTagAccessPSW, 0, 5 );
m_edACKPSWCtl.GetWindowText ( szTemp );
szTemp.TrimLeft ( );
szTemp.TrimRight ( );
int ret = theApp.sz20x ( &szTemp, (char*)m_pcTagAccessPSW );
if ( ret == -1 )
{
szTemp = "";
m_edACKPSWCtl.SetWindowText ( szTemp );
AfxMessageBox("Please input hexadecimal characters!");
return;
}
i = m_cboWriteAddCtl.GetCurSel();
m_ucStartAddress = i ;
memset ( m_pchData, 0 , sizeof ( m_pchData ) );
m_edWriteDataCtl.GetWindowText ( szTemp );
szTemp.TrimLeft ( );
szTemp.TrimRight ( );
m_ucDataLength = ( unsigned char ) theApp.sz20x (
&szTemp, ( char * ) m_pchData ) / 2;
if ( m_ucDataLength == -1 )
{
szTemp = "";
m_edWriteDataCtl.SetWindowText ( szTemp );
AfxMessageBox("Please input hexadecimal characters.");
return;
}
SetUserData();
// CDialog::OnOK();
}
BOOL CWriteData::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString szTemp;
m_cboWriteAddCtl.ResetContent();
m_cboWriteLenCtl.ResetContent();
for ( int i = 0; i <= 0x1A ; i = i + 2 )
{
szTemp.Format ( "%02x" , i/2 );
szTemp.MakeUpper();
m_cboWriteAddCtl.AddString ( szTemp );
szTemp.Format ( "%02x" , (0x0E - i/2) );
szTemp.MakeUpper();
m_cboWriteLenCtl.AddString ( szTemp );
}
m_cboWriteAddCtl.SetCurSel ( 0 );
m_cboWriteLenCtl.SetCurSel ( 0 );
m_edWriteDataCtl.LimitText ( 0x1C * 2 );
m_edACKPSWCtl.LimitText ( 8 );
m_stcInfoCtl.SetWindowText ( "" );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CWriteData::OnCancel()
{
// TODO: Add extra cleanup here
if ( m_hCom != NULL )
{
XCPowerOff ( m_hCom );
}
CDialog::OnCancel();
}
//Send write user data command
void CWriteData::SetUserData()
{
if ( m_hCom == NULL )
{
AfxMessageBox ( "unexpected error!COM port is not specified!" );
return;
}
BeginWaitCursor();
CString szTemp;
int result = XCSetUseData ( m_hCom
, m_AntennaID
, m_pcTagAccessPSW
, m_ucStartAddress
, m_ucDataLength
, ( unsigned char * ) m_pchData );
if ( 1 != result )
{
szTemp = theApp.Error_800 ( result );
m_stcInfoCtl.SetWindowText ( szTemp );
}
else
{
szTemp.Format( "Write data succeed!" );
m_stcInfoCtl.SetWindowText ( szTemp );
}
}
void CWriteData::OnSelchangeComboWriteadd()
{
// TODO: Add your control notification handler code here
CString szTemp;
m_cboWriteLenCtl.ResetContent ( );
for ( int i = m_cboWriteAddCtl.GetCurSel() * 2 ; i < 0x1C ; i = i + 2 )
{
szTemp.Format ( "%02x" , ( 0x1C - i ) / 2 );
szTemp.MakeUpper ( );
m_cboWriteLenCtl.AddString ( szTemp );
}
m_cboWriteLenCtl.SetCurSel ( 0 );
m_edWriteDataCtl.LimitText ( ( 0x1C - m_cboWriteAddCtl.GetCurSel() * 2 ) * 2 );
m_edWriteDataCtl.GetWindowText ( szTemp );
m_edWriteDataCtl.SetWindowText ( szTemp.Left ( 0x1C / 2 - m_cboWriteAddCtl.GetCurSel() * 2 ) );
}
void CWriteData::OnSelchangeComboWritelen()
{
// TODO: Add your control notification handler code here
CString szTemp;
int len = 0x1C / 2 - m_cboWriteAddCtl.GetCurSel() - m_cboWriteLenCtl.GetCurSel();
m_edWriteDataCtl.LimitText ( len * 4 );
m_edWriteDataCtl.GetWindowText ( szTemp );
m_edWriteDataCtl.SetWindowText ( szTemp.Left ( len * 4 ) );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -