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

📄 vcsampledlg.cpp

📁 深圳远望谷804读写器DEMO 深圳远望谷804读写器DEMO
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	
	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 + -