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

📄 writeepc.cpp

📁 深圳远望谷804读写器DEMO 深圳远望谷804读写器DEMO
💻 CPP
字号:
// WriteEPC.cpp : implementation file
//

#include "stdafx.h"
#include "VCsample.h"
#include "WriteEPC.h"
#include "XCRFAPI.h"

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

/////////////////////////////////////////////////////////////////////////////
// CWriteEPC dialog


CWriteEPC::CWriteEPC(CWnd* pParent /*=NULL*/)
	: CDialog(CWriteEPC::IDD, pParent)
{
	//{{AFX_DATA_INIT(CWriteEPC)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CWriteEPC::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWriteEPC)
	DDX_Control(pDX, IDCANCEL, m_btnCancelCtl);
	DDX_Control(pDX, IDOK, m_btnOKCtl);
	DDX_Control(pDX, IDC_STATIC_INFO, m_stcInfoCtl);
	DDX_Control(pDX, IDC_EDIT_PASSWORD_WriteEPCData, m_edEpcPswCtl);
	DDX_Control(pDX, IDC_EDIT_INFO_WriteEPCData, m_edWriteEpcDataCtl);
	DDX_Control(pDX, IDC_COMBO_WRITEEPCLEN, m_cboWriteEpcLenCtl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWriteEPC, CDialog)
	//{{AFX_MSG_MAP(CWriteEPC)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWriteEPC message handlers

void CWriteEPC::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(TRUE);
	m_stcInfoCtl.SetWindowText ( "" ); 
	int i;	
	CString szTemp, sz;
	int len;

	m_edWriteEpcDataCtl.GetWindowText ( szTemp );
	szTemp.TrimLeft();
	szTemp.TrimRight();	
	if ( szTemp.GetLength ( ) % 4 != 0 
		|| szTemp.GetLength ( ) == 0 )
	{
		sz = "Input data should be double-byte character (4 hexadecimal alphanumeric characters),Please input again!";//英文 2006-04-25		
		::AfxMessageBox ( sz );
		szTemp = "";
		m_edWriteEpcDataCtl.SetWindowText ( szTemp );
		return;
	}

	len = szTemp.GetLength ( );
	i   = m_edWriteEpcDataCtl.GetLimitText ( );
	if ( len != i )
	{
		sz = "Length error!Write data length is different from the data length in fact";
		::AfxMessageBox ( sz );
		szTemp = "";
		m_edWriteEpcDataCtl.SetWindowText ( szTemp );
		return;	
	}
	
	m_edEpcPswCtl.GetWindowText ( szTemp );
	szTemp.TrimLeft  ( );
	szTemp.TrimRight ( );
	len = szTemp.GetLength();

	if ( len != 8 )
	{
		sz = "The length of password error,Please input again!";
		::AfxMessageBox ( sz );
		szTemp = "";
		m_edEpcPswCtl.SetWindowText ( szTemp );
		return;	
	}
	for ( i = 0; i < len ; i++ )
	{		
		if ( theApp._atoi_j ( szTemp [ i ] ) == -1 )
		{
			sz = "Please input hexadecimal characters.";
			::AfxMessageBox ( sz );
			szTemp = "";
			m_edEpcPswCtl.SetWindowText ( szTemp );
			return;	
		}
	}	

	memset ( m_pchPSW, 0, 5 ); 
	m_edEpcPswCtl.GetWindowText ( szTemp );
	szTemp.TrimLeft  ( );
	szTemp.TrimRight ( );
	int ret = theApp.sz20x ( &szTemp, ( char * ) m_pchPSW );
	if ( ret == -1 )
	{
		sz = "Please input hexadecimal characters.";
		::AfxMessageBox ( sz );
		szTemp = "";
		m_edEpcPswCtl.SetWindowText ( szTemp );
		return;	
	}
		
	m_edWriteEpcDataCtl.GetWindowText ( szTemp );
	szTemp.TrimLeft  ( );
	szTemp.TrimRight ( );
	memset ( m_pchEPCData, 0 , sizeof ( m_pchEPCData ) );
	
	ret = theApp.sz20x ( &szTemp, ( char * ) m_pchEPCData );
	if ( ret == -1 )
	{
		sz = "Please input hexadecimal characters.";
		::AfxMessageBox ( sz );
		szTemp = "";
		m_edWriteEpcDataCtl.SetWindowText ( szTemp );
		return;	
	}
	m_ucWriteEPCLen = ret/2;
	SetEPCData ( );

//	CDialog::OnOK();
}


BOOL CWriteEPC::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	int i;
	CString szTemp;

	m_cboWriteEpcLenCtl.ResetContent();
	for ( i = 0; i < 0x0C; i = i + 2 )
	{
		szTemp.Format ( "%02d", 0x0C - i );
		m_cboWriteEpcLenCtl.AddString ( szTemp ) ;
	}
	m_cboWriteEpcLenCtl.SetCurSel ( 0 );
	m_edWriteEpcDataCtl.SetLimitText ( 24 );
	m_edEpcPswCtl.SetLimitText ( 8 );

	m_edWriteEpcDataCtl.EnableWindow ( true );
	m_cboWriteEpcLenCtl.EnableWindow ( false );  
	m_btnCancelCtl.EnableWindow ( true );
	m_edEpcPswCtl.EnableWindow ( true );
	m_btnOKCtl  .EnableWindow ( true );

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//Send write EPC command
void CWriteEPC::SetEPCData()
{
	if ( m_hCom == NULL )
	{
		AfxMessageBox ( "unexpected error!" );	
		return;
	}
	BeginWaitCursor();	
	CString szTemp;
	int result = XCSetEpcCode ( m_hCom
		                        , m_AntennaID
								, ( unsigned char * ) m_pchPSW
								,0x00
								, m_ucWriteEPCLen
								, ( unsigned char * ) m_pchEPCData );

	if ( 1 != result )
	{
		szTemp = theApp.Error_800 ( result );		
		m_stcInfoCtl.SetWindowText ( szTemp ); 
	}
	else
	{
		m_stcInfoCtl.SetWindowText ( "Write EPC Data succeed!" ); 
	}
}

void CWriteEPC::OnCancel() 
{
	// TODO: Add extra cleanup here
	if ( m_hCom != NULL )
	{
		XCPowerOff ( m_hCom );
	}	
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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