📄 readdata.cpp
字号:
// ReadData.cpp : implementation file
//
#include "stdafx.h"
#include "VCsample.h"
#include "ReadData.h"
#include "XCRFAPI.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CReadData dialog
CReadData::CReadData(CWnd* pParent /*=NULL*/)
: CDialog(CReadData::IDD, pParent)
{
//{{AFX_DATA_INIT(CReadData)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CReadData::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReadData)
DDX_Control(pDX, IDC_STATIC_INFO, m_stcInfoCtl);
DDX_Control(pDX, IDC_COMBO_READDATALEN, m_cboReadLenCtl);
DDX_Control(pDX, IDC_COMBO_READDATASTARTADD, m_cboReadAddCtl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReadData, CDialog)
//{{AFX_MSG_MAP(CReadData)
ON_CBN_SELCHANGE(IDC_COMBO_READDATASTARTADD, OnSelchangeComboReaddatastartadd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReadData message handlers
void CReadData::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
int i;
int len = 0;
CString szTemp;
i = m_cboReadAddCtl.GetCurSel ( );
m_ucStartAddress = i ;
len = m_cboReadLenCtl.GetCurSel ( );
m_ucDataLength = ( 0x1C - i * 2 ) / 2 - len;
GetUserData();
// CDialog::OnOK();
}
BOOL CReadData::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString szTemp;
m_cboReadAddCtl.ResetContent();
m_cboReadLenCtl.ResetContent();
for ( int i = 0; i < 0x1C ; i = i + 2 ) //
{
szTemp.Format ( "%02x" , i/2 );
szTemp.MakeUpper();
m_cboReadAddCtl.AddString ( szTemp );
szTemp.Format ( "%02x" , ( 0x0E - i / 2 ));
szTemp.MakeUpper ( );
m_cboReadLenCtl.AddString ( szTemp );
}
m_cboReadAddCtl.SetCurSel ( 0 );
m_cboReadLenCtl.SetCurSel ( 0 );
m_stcInfoCtl.SetWindowText ( "" );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CReadData::OnCancel()
{
// TODO: Add extra cleanup here
if ( m_hCom != NULL )
{
XCPowerOff ( m_hCom );
}
CDialog::OnCancel();
}
//Send read user data command
void CReadData::GetUserData()
{
if ( m_hCom == NULL )
{
AfxMessageBox ( "unexpected error!Com port is not specified" );
return;
}
BeginWaitCursor();
CString szTemp;
memset ( m_pcTagAccessPSW, 0, 5 );
memset ( m_pchData, 0, sizeof ( m_pchData ) );
int result = XCReadUserDataEPC ( m_hCom
, m_pcTagAccessPSW
, m_ucStartAddress
, m_ucDataLength
, m_AntennaID
, ( unsigned char * )m_pchData);
if (( result <= 0 ) ||(result>1000 && result<=4013))
{
szTemp = theApp.Error_800 ( result );
m_stcInfoCtl.SetWindowText ( szTemp );
return;
}
else if (result == 1)
{
szTemp.Format( "\nAntenna No:%x#;\nUser data:" , m_pchData [ 4 ] );
CString sz;
for ( int i = 0 ; i < (int)m_pchData[1] - 3 ; i++ )
{
sz.Format ( "%02x " , m_pchData [ i + 5 ] );
szTemp += sz.Right( 3 );
}
m_stcInfoCtl.SetWindowText ( szTemp );
}
}
//
void CReadData::OnSelchangeComboReaddatastartadd()
{
// TODO: Add your control notification handler code here
CString szTemp;
m_cboReadLenCtl.ResetContent();
for ( int i = m_cboReadAddCtl.GetCurSel() * 2 ; i < 0x1C ; i = i + 2 )
{
szTemp.Format ( "%02x" , ( 0x1C - i ) / 2 );
szTemp.MakeUpper ( );
m_cboReadLenCtl.AddString ( szTemp );
}
m_cboReadLenCtl.SetCurSel ( 0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -