📄 vcsampledlg.cpp
字号:
m_strComMode = strCom[0];
m_strAntenna = strTianXian[0];
UpdateData(FALSE);
}
BOOL CVCsampleDlg::InitIpPara()
{
strStatusDemo = "";
CFileFind Cff;
CString strPrgPath,strIp,strMask,strGetWay;
strPrgPath = m_strSysit;
if(0==Cff.FindFile (strPrgPath))
{
strStatusDemo = "Config file lost!";
AfxMessageBox(strStatusDemo);
return FALSE;
}
strCfgFileName = strPrgPath;
strIp = MemLoadStr(strPrgPath, "XCRF-800 Series Reader", "XC_HOST_NAME");
m_IpCtl.SetWindowText(strIp);
strMask = MemLoadStr(strPrgPath, "XCRF-800 Series Reader", "XC_SUBNET");
strGetWay = MemLoadStr(strPrgPath, "XCRF-800 Series Reader", "XC_GATE");
m_strComMode = MemLoadStr(strPrgPath, "XCRF-800 Series Reader", "XC_COM_NUMBER");
if(strcmp(m_strComMode,"TCP")==0)
{
m_IpCtl.EnableWindow( true );
}
else
{
m_IpCtl.EnableWindow ( false );
}
MemSet(strCfgFileName,"XCRF-800 Series Reader","XC_ANTENNA_CONCTL","1#");
m_strAntenna = MemLoadStr(strPrgPath, "XCRF-800 Series Reader", "XC_ANTENNA_CONCTL");
UpdateData(FALSE);
return TRUE;
}
void CVCsampleDlg::MemSet(CString cInitFile, CString cMemItem, CString cMemKey, CString cValue)
{
WritePrivateProfileString(cMemItem,cMemKey,cValue,cInitFile);
return ;
}
CString CVCsampleDlg::MemLoadStr(CString cInitFile, CString cMemItem, CString cMemKey)
{
char numBuf[_MAX_PATH] , tmpBuf[_MAX_PATH] , cPos;
GetPrivateProfileString(cMemItem,cMemKey,"0",tmpBuf,sizeof(tmpBuf),cInitFile);
cPos = 0;
for(int i=0;i<_MAX_PATH;i++)
{
if ((tmpBuf[i] == ';')||(tmpBuf[i]== 0x00))
break;
if (tmpBuf[i] != 32 && tmpBuf[i] != 9)
{
numBuf[i] = tmpBuf[i];
cPos++;
}
}
numBuf[cPos]=0;
return numBuf;
}
void CVCsampleDlg::InitListHead()
{
m_IdList.SetRedraw ( false );
m_IdList.SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES |LVS_EX_UNDERLINEHOT|LVS_EDITLABELS );
m_IdList.InsertColumn(0,"Tag No",LVCFMT_LEFT,190);
m_IdList.InsertColumn(1,"Read Time",LVCFMT_LEFT,85);
m_IdList.InsertColumn(2,"Read Times",LVCFMT_LEFT,85);
m_IdList.InsertColumn(3,"Antenna No",LVCFMT_LEFT,85);
m_IdList.ModifyStyle (NULL,WS_VISIBLE);
m_IdList.SetRedraw ( true );
}
void CVCsampleDlg::ResetArray()
{
strArrId.RemoveAll();
InitRectTimesArray();
strArrTime.RemoveAll();
strArrTianxian.RemoveAll();
m_iListRow = 0;
}
void CVCsampleDlg::InitRectTimesArray()
{
DWORD times=0;
int i;
for(i=0;i<100;i++)
{
dwArrTimes[i]=times;
}
}
void CVCsampleDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
strStatusDemo = "";
unsigned char ucInfoBuf[256];
int result;
int pv_nIdTimes;
CString strFast,strID,strTianXian,strTime;
CString strCurrentTime;
memset(ucInfoBuf, 0, sizeof(ucInfoBuf));
CTime tm;
switch ( nIDEvent )
{
//----------------event 1 show time ----------------------------------------//
case 1:
{
tm=CTime::GetCurrentTime();
strCurrentTime.Format("%02d:%02d:%02d",tm.GetHour(),tm.GetMinute(),tm.GetSecond());
m_Status3Ctl.SetWindowText(strCurrentTime);
break;
}
//----------------event 2 Read EPC Code -------------------------------------//
case 2:
{
result = XCEpcCodeReport(hCom, ucInfoBuf);
if(( result < 0 )||( result <= 4013 && result >= 1001))
{
if ((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==0) && (result == -20))
{
KillTimer(7);
break;
}
dwStartTime=GetTickCount();
strStatusDemo = theApp.Error_800 ( result );
if( result == 3008 || result == 3009 )
{
tm=CTime::GetCurrentTime();
strTime.Format ("%02d:%02d:%02d",tm.GetHour (),tm.GetMinute (),tm.GetSecond ());
if(m_AffirmCombCtl.GetCurSel ( )==0)
{
iTagNum++;
CString str;
str.Format ("%d",iTagNum);
strID=strStatusDemo+str;
}
else
{
strID=strStatusDemo;
}
strTianXian="";
m_iListRow = AddIdAndTimeToArray(strID,strTime,strTianXian);
FillReportList();
}
else
{
if((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==1) && (result == -20))
{
m_Status1Ctl.SetWindowText("");
}
else
{
m_Status1Ctl.SetWindowText(strStatusDemo);
}
}
UpdateData(FALSE);
}
else if ( result==1 )
{
if ((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==0) && (ucInfoBuf[1]==0x03))
{
KillTimer(7);
break;
}
else
{
if(ucInfoBuf[3]!=0)
{
strStatusDemo = "Identification finished!";
m_Status2Ctl.SetWindowText(strStatusDemo);
}
else
{
tm=CTime::GetCurrentTime();
iSpeedNum++;
if((m_AffirmCombCtl.GetCurSel ( )==1) && iSpeedNum!=1)
{
if((iSpeedNum%10==0) && (iSpeedNum>=10))
{
dwEndTime = GetTickCount();
dwDiff = (dwEndTime - dwStartTime)/10;
dwStartTime = dwEndTime;
}
else if(iSpeedNum<10)
{
dwDiff = dw1Time;
}
}
else
{
dwEndTime = GetTickCount();
dwDiff = (dwEndTime - dwStartTime);
if(iSpeedNum==1)
{
dw1Time=dwDiff;
}
dwStartTime = dwEndTime;
}
strFast.Format (" %d",dwDiff);
m_slStatic.SetWindowText (strFast);
for ( int i=0; i<ucInfoBuf[1]-3; i++ )
{
strNewID[i].Format ("%02x",ucInfoBuf[5+i]);
strID +=strNewID[i];
}
UpdateData(TRUE);
strTianXian.Format ("%d#",ucInfoBuf[4]);
strTime.Format ("%02d:%02d:%02d",tm.GetHour (),tm.GetMinute (),tm.GetSecond ());
m_iListRow = AddIdAndTimeToArray(strID,strTime,strTianXian);
FillReportList();
pv_nIdTimes = strArrId.GetSize ();
m_IdTimes.Format(_T("%d"), pv_nIdTimes);
m_Status1Ctl.SetWindowText("");
strStatusDemo = "Reading EPC Code!";
m_Status2Ctl.SetWindowText(strStatusDemo);
UpdateData(FALSE);
}
}
}
break;
}
//---------end of event 2---------------------------//
//----------------------event 3 Read TID ----------------------------------//
case 3:
{
result = XCTIDCodeReport(hCom, ucInfoBuf);
if(( result < 0 )||( result <= 4013 && result >= 1001))
{
if ((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==0) && (result == -20))
{
KillTimer(8);
break;
}
dwStartTime=GetTickCount();
strStatusDemo = theApp.Error_800 ( result );
if((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==1) && (result == -20))
{
m_Status1Ctl.SetWindowText("");
}
else
{
m_Status1Ctl.SetWindowText(strStatusDemo);
}
UpdateData(FALSE);
}
else if(result==1)
{
if ((m_ComModelCtl.GetCurSel( ) == 1) && (m_AffirmCombCtl.GetCurSel ( )==0) && (ucInfoBuf[1]==0x03))
{
KillTimer(8);
break;
}
else
{
m_Status1Ctl.SetWindowText("");
UpdateData(FALSE);
if(ucInfoBuf[3]!=0)
{
strStatusDemo = "Identification finished!";
m_Status2Ctl.SetWindowText(strStatusDemo);
}
else
{
tm=CTime::GetCurrentTime();
iSpeedNum++;
if((m_AffirmCombCtl.GetCurSel ( )==1) && iSpeedNum!=1)
{
if((iSpeedNum%10==0) && (iSpeedNum>=10))
{
dwEndTime = GetTickCount();
dwDiff = (dwEndTime - dwStartTime)/10;
dwStartTime = dwEndTime;
}
else if(iSpeedNum<10)
{
dwDiff = dw1Time;
}
}
else
{
dwEndTime = GetTickCount();
dwDiff = (dwEndTime - dwStartTime);
if(iSpeedNum==1)
{
dw1Time=dwDiff;
}
dwStartTime = dwEndTime;
}
strFast.Format (" %d",dwDiff);
m_slStatic.SetWindowText (strFast);
for ( int i=0; i<ucInfoBuf[1]-3; i++ )
{
strNewID[i].Format ("%02x",ucInfoBuf[5+i]);
strID +=strNewID[i];
}
UpdateData ( TRUE );
strTianXian.Format ( "%d#", ucInfoBuf [ 4 ] );
strTime.Format ( "%02d:%02d:%02d"
, tm.GetHour ( ) ,tm.GetMinute ( )
, tm.GetSecond ( ) );
m_iListRow = AddIdAndTimeToArray ( strID, strTime, strTianXian );
FillReportList ( );
pv_nIdTimes = strArrId.GetSize ();
m_IdTimes.Format ( _T ( "%d" ), pv_nIdTimes );
m_Status1Ctl.SetWindowText("");
strStatusDemo = "Reading TID Code!";
m_Status2Ctl.SetWindowText(strStatusDemo);
UpdateData ( FALSE );
}
}
}
}
break;
}
CDialog::OnTimer(nIDEvent);
}
int CVCsampleDlg::AddIdAndTimeToArray(CString& strId,CString& strTime,CString& strTianxian )
{
int times;
CString strRecordID;
int count = strArrId.GetSize ();
BOOL IsHaveThisId = FALSE;
m_isNEWTag = false;
if(count==0)
{
strArrId.Add ( strId );
strArrTime.Add ( strTime );
strArrTianxian.Add ( strTianxian );
times = 0;
dwArrTimes [ 0 ]++;
m_isNEWTag = true;
}
else
{
for ( int i = 0; i < count; i++ )
{
if ( strId == strArrId [ i ] )
{
IsHaveThisId = TRUE;
dwArrTimes [ i ]++;
strArrTime [ i ] = strTime;
strArrTianxian [ i ] = strTianxian;
times = i;
m_isNEWTag = false;
break;
}
}
if ( IsHaveThisId == FALSE )//new tag
{
strArrId.Add ( strId );
strArrTime.Add ( strTime );
strArrTianxian.Add ( strTianxian );
times = count;//+1;
dwArrTimes [ count ]++;
m_isNEWTag = true;
}
}
UpdateData(FALSE);
return times;
}
BOOL CVCsampleDlg::FillReportList()
{
CTime tm;
CString strFast1;
int ReadOutTagNum = 0;
m_IdList.SetRedraw ( false );
CString strCols [ 4 ];
int counts = strArrId.GetSize ();
if ( m_isNEWTag )
{
strCols [ 0 ] = strArrId [ m_iListRow ];
strCols [ 1 ] = strArrTime[ m_iListRow ];
strCols [ 2 ].Format ( "%ld", dwArrTimes [ m_iListRow ] );
strCols [ 3 ] = strArrTianxian [ m_iListRow ];
m_IdList.InsertItem ( m_iListRow, strCols [ 0 ] );
m_IdList.SetItemText ( m_iListRow,1,strCols[1] );
m_IdList.SetItemText ( m_iListRow,2,strCols[2]);
m_IdList.SetItemText ( m_iListRow,3,strCols[3]);
}
else
{
strCols[1]=strArrTime[ m_iListRow ];
strCols[2].Format ("%ld",dwArrTimes [ m_iListRow ] );
strCols [ 3 ] = strArrTianxian [ m_iListRow ];
m_IdList.SetItemText(m_iListRow,1,strCols[1]);
m_IdList.SetItemText(m_iListRow,2,strCols[2]);
m_IdList.SetItemText ( m_iListRow,3,strCols[3]);
}
m_IdList.SetRedraw ( true );
return TRUE;
}
void CVCsampleDlg::OnSelchangeComboMode()
{
// TODO: Add your control notification handler code here
int index = m_ComModelCtl.GetCurSel ();
m_ComModelCtl.GetLBText (index,m_strComMode);
MemSet(strCfgFileName,"XCRF-800 Series Reader","XC_COM_NUMBER ",m_strComMode);
MemSet ( strCfgFileName, "XCRF-800 Series Reader"
, "XC_PORT_TYPE", m_strComMode.Left(3) );
if ( m_ComModelCtl.GetCurSel( ) == 0)
{
m_IpCtl.EnableWindow ( true );
}
else
{
m_IpCtl.EnableWindow ( false );
}
}
void CVCsampleDlg::OnSelchangeCOMBOAntenna()
{
// TODO: Add your control notification handler code here
strStatusDemo = "";
int iResult;
int iTemp;
unsigned char m_AnNum;
CString str="";
int index = m_AntennaCombCtl.GetCurSel ();
if ( IsHaveOpened == TRUE )
{
if( index > 3 )
{
m_AnNum = m_AntennaCombCtl.GetCurSel () - 2;
iResult = XCSysFastSet ( hCom, 0x02, 1, &m_AnNum );
if ( 1 != iResult )
{
m_strAntenna = _T("1#");
m_Status1Ctl.SetWindowText ( "Please configurate the antenna No again!" );
UpdateData ( false );
}
else
{
iTemp = m_AntennaCombCtl.GetCurSel () - 2;
str.Format ("%d",iTemp);
MemSet(strCfgFileName, "XCRF-800 Series Reader", "XC_ANTENNAS", str);
m_AntennaCombCtl.GetLBText (index,m_strAntenna);
}
}
else
{
m_AnNum = m_AntennaCombCtl.GetCurSel () + 1;
iResult = XCSysFastSet ( hCom, 0x02, 1, &m_AnNum );
if ( 1 != iResult )
{
m_strAntenna = _T("1#");
m_Status1Ctl.SetWindowText ( "Please configurate the antenna No again!" );
UpdateData ( false );
}
else
{
iTemp = m_AntennaCombCtl.GetCurSel () + 1;
str.Format ("%d",iTemp);
MemSet(strCfgFileName, "XCRF-800 Series Reader", "XC_ANTENNAS", str);
m_strAntenna = "0#";
}
}
MemSet(strCfgFileName,"XCRF-800 Series Reader","XC_ANTENNA_CONCTL",m_strAntenna);
}
else
{
AfxMessageBox ( "Please connect reader successfully first!" );
}
}
//Disconnect the reader
void CVCsampleDlg::OnMenuDisconnect()
{
// TODO: Add your command handler code here
if ( IsHaveOpened == TRUE )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -