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

📄 writedata.cpp

📁 XCRMF-801型读写器源码
💻 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 + -