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

📄 vcsampledlg.cpp

📁 深圳远望谷804读写器DEMO 深圳远望谷804读写器DEMO
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	{
		XCPowerOff ( hCom ); 
		int Result = XCClose ( hCom );
		if ( Result == 1 )
		{
			if ( IsReadId ==  TRUE )
			{
				KillTimer(1);
				KillTimer(2);
				KillTimer(3);
                IsReadId = FALSE;
			}
			IsHaveOpened = FALSE;	
			m_Status1Ctl.SetWindowText ( "Disconnect successfully!" );
			m_Status2Ctl.SetWindowText ( "" );
			
			if( strcmp(m_strComMode,"TCP")==0 )   
			{
				m_IpCtl.EnableWindow(true);
			}
			else
			{
				m_IpCtl.EnableWindow ( false );
			}
			m_ComModelCtl.EnableWindow ( true );
			m_EditScansTimesEPC.EnableWindow ( false );
			m_AntennaCombCtl.EnableWindow(false);
			m_AffirmCombCtl.EnableWindow(false);
			m_EditScansTimesEPC.EnableWindow(false);
			UpdateData(false);		
		}
		else 
		{
			strStatusDemo = "Disconnect failed!";

			CString sz;
			sz = theApp.Error_800 ( Result );
			if ( sz != "" )
			{
				strStatusDemo += "(" + sz + ")";
			}
			m_Status1Ctl.SetWindowText ( strStatusDemo );
		}			
	}
	else
	{
		m_Status1Ctl.SetWindowText ( "The reader has been disconnected!" );
	}
	KillTimer ( 1 );
	KillTimer ( 2 );
	KillTimer ( 3 );
}
//Read EPC
void CVCsampleDlg::OnMenuReadEpc() 
{
	// TODO: Add your command handler code here
	strStatusDemo = "";
	CString strTempQ;  

	if ( IsHaveOpened == TRUE )
	{  
		if ( IsReadId == FALSE )
		{
			m_EditScansTimesEPC.EnableWindow ( false );  
			m_AffirmCombCtl.EnableWindow ( false ); 
			m_AntennaCombCtl.EnableWindow(false);
			int len;
			unsigned char ucTimes;
			CString szTemp;
			iTagNum=0;  
			
			m_EditScansTimesEPC.GetWindowText ( szTemp );
			szTemp.TrimLeft();
			szTemp.TrimRight();
			len = szTemp.GetLength();
			
			if ( len == 0 )
			{
				szTemp = "";
				m_EditScansTimesEPC.SetWindowText ( szTemp );
				AfxMessageBox( "Read Tag Num error.Please input again!" );
				m_EditScansTimesEPC.EnableWindow ( true );  
				return;
			}
			UpdateData ( TRUE );
			
			int x = m_uiScanTimesEPC;//50.0
			double a = 2.0;
			double y1;
			double y2;
			double z;
			if ( x < 1 || x > 8192 )
			{			
				AfxMessageBox("Please input 1--8192 number,Please input again!");
				m_EditScansTimesEPC.EnableWindow ( true );  
				return;
				
			}
			
			switch ( x )
			{
			case 1:
				z=0;
				break;
			case 2:
				z=2;
				break;
			case 3:
			case 4:
				z=3;
				break;
			default:
				y1 = log10( x );
				y2 = log10( a );
				z = y1/y2 + 2;
				break;    
			}
			
			ucTimes = (int)z;	
			
			int iTemp = 0;
			iTemp = m_AffirmCombCtl.GetCurSel ( );
			InitReportListHead ( );
			
			strStatusDemo = _T( "" );
			m_Status1Ctl.SetWindowText ( strStatusDemo );		
			
			m_Status2Ctl.SetWindowText ( "Begin to read EPC Code!" ); 
			
			OnCleanDispbuff ( );
			
			unsigned char ucAnId = GetTianXianId () ;
			
			strTempQ.Format( "%02x ", ucTimes ); 
			unsigned char ucScanTimes = Asc2Hex((unsigned char*)strTempQ.GetBuffer (2));
			
			unsigned char isDoAffirm  = iTemp;
			if (hCom==NULL)
			{
				return;
			}
			
			int result = XCIdentifyEpcCode ( hCom, ucAnId, ucScanTimes, isDoAffirm );
			
			if ( 0 == result )
			{
				AfxMessageBox ( "Read EPC Code failed!" );						
				return ;
			}
			else
			{
				SetTimer ( 2, 0, NULL );
				IsReadId    = TRUE;  
				dwStartTime = GetTickCount ( );
			}  		
			
		}
	}
	else
	{
		AfxMessageBox ( "Please connect reader successfully first!" );
	}
}

void CVCsampleDlg::InitReportListHead()
{
	m_IdList.ModifyStyle (NULL,WS_VISIBLE);
    m_IdList.Invalidate();
}

unsigned char CVCsampleDlg::Asc2Hex(unsigned char *Asci_Info)
{
	unsigned char Asc;

	if((Asci_Info[0]>=0x30)&&(Asci_Info[0]<=0x39)&&(Asci_Info[1]>=0x30)&&(Asci_Info[1]<=0x39))
		Asc=(Asci_Info[0]-0x30)*16+(Asci_Info[1]-0x30);
	else if((Asci_Info[0]>='a')&&(Asci_Info[0]<='f')&&(Asci_Info[1]>=0x30)&&(Asci_Info[1]<=0x39))
		Asc=(Asci_Info[0]-0x61+10)*16+(Asci_Info[1]-0x30);
	else if((Asci_Info[0]>='0')&&(Asci_Info[0]<='9')&&(Asci_Info[1]>='a')&&(Asci_Info[1]<='f'))
        Asc=(Asci_Info[0]-0x30)*16+(Asci_Info[1]-0x61+10);
	else if((Asci_Info[0]>='a')&&(Asci_Info[0]<='f')&&(Asci_Info[1]>='a')&&(Asci_Info[1]<='f'))
        Asc=(Asci_Info[0]-0x61+10)*16+(Asci_Info[1]-0x61+10);
	return Asc;
}

void CVCsampleDlg::OnCleanDispbuff()
{
	ResetArray();
	InitRectTimesArray();	
	m_IdList.DeleteAllItems ();
}
//Get antenna No
unsigned char CVCsampleDlg::GetTianXianId()
{
	UpdateData(TRUE);

	for(int i=0;i<4;i++)
	{
		if(m_strAntenna == strTianXian[i])
			return i+1;
	}

    for(i=4;i<7;i++)
	{
		if(m_strAntenna == strTianXian[i])
			return 0;
	}
	return -1;
}
//Read TID
void CVCsampleDlg::OnMenuReadTid() 
{
	// TODO: Add your command handler code here
	m_AntennaCombCtl.EnableWindow ( false ); 

	if ( IsHaveOpened ==TRUE )
	{  
		if ( IsReadId == FALSE )
		{
			m_EditScansTimesEPC.EnableWindow ( false ); 
			m_AffirmCombCtl.EnableWindow ( false ); 
			
			InitReportListHead ( );
			
			m_Status2Ctl.SetWindowText ( "Begin to read TID Code!" ); 
			
			OnCleanDispbuff ( );
			
			int len;
			unsigned char ucTimes;
			CString szTemp;
			
			m_EditScansTimesEPC.GetWindowText ( szTemp );
			szTemp.TrimLeft();
			szTemp.TrimRight();
			len = szTemp.GetLength();
			
			if ( len == 0 )
			{
				szTemp = "";
				m_EditScansTimesEPC.SetWindowText ( szTemp );				
				AfxMessageBox( "Read Tag Num error.Please input again!" );
				m_EditScansTimesEPC.EnableWindow ( true );  
				return;
			}
			UpdateData ( TRUE );
			
			int x = m_uiScanTimesEPC;//50.0
			double a = 2.0;
			double y1;
			double y2;
			double z;
			if ( x < 1 || x > 8192 )
			{			
				AfxMessageBox( "Please input 1--8192 number,Please input again!" );
				m_EditScansTimesEPC.EnableWindow ( true ); 
				return;   
			}
			
			switch ( x )
			{
			case 1:
				z=0;
				break;
			case 2:
				z=2;
				break;
			case 3:
			case 4:
				z=3;
				break;
			default:
				y1 = log10( x );
				y2 = log10( a );
				z = y1/y2 + 2;
				break;    
			}
			
			ucTimes = (int)z;	
			int iTemp = 0;
			iTemp = m_AffirmCombCtl.GetCurSel ( );
			
			unsigned char ucAnId = GetTianXianId ( );
			unsigned char ucScanTimes = ucTimes;
			unsigned char isDoAffirm  = iTemp;
			unsigned char ucPsw [ 4 ];
			memset ( ucPsw, 0, 4 );
			
			int result = XCIdentifyTIDCode ( hCom, ucAnId
				, ucScanTimes, isDoAffirm, ucPsw);
			if ( 0 == result )
			{
				AfxMessageBox ( "Read TID Code failed!" );						
				return ;
			}
			else
			{
				SetTimer ( 3, 0, NULL );
				IsReadId    = TRUE;
				dwStartTime = GetTickCount ( );
			} 			
			
		}
	}
	else
	{	
		AfxMessageBox("Please connect reader successfully first!");
	}
}
//Stop reading tag
void CVCsampleDlg::OnMenuStopRead() 
{
	// TODO: Add your command handler code here
	strStatusDemo = "";		
	
	if ( IsHaveOpened == TRUE )
	{		
		if ( IsReadId == TRUE )
		{
			KillTimer ( 2 );
			KillTimer ( 3 );
			IsReadId = FALSE;
		}
		
		int Result = XCPowerOff ( hCom );

		if ( Result == 1 )
		{ 
			m_Status1Ctl.SetWindowText ( "Stop reading successfully!" );
			m_AntennaCombCtl.EnableWindow(true);
			m_EditScansTimesEPC.EnableWindow ( true );
			m_AntennaCombCtl.EnableWindow(true);
			m_AffirmCombCtl.EnableWindow(true);
			KillTimer ( 1 );
			KillTimer ( 2 );
			KillTimer ( 3 );
		}
		else
		{		
			strStatusDemo = "Stop reading failed!";

			CString sz;
			sz = theApp.Error_800 ( Result );
			if ( sz != "" )
			{
				strStatusDemo += "(" + sz + ")";
			}		
			m_Status1Ctl.SetWindowText ( strStatusDemo ); 
		}	  
	}
	else
	{
		AfxMessageBox ( "Please connect reader successfully first!" );
	}
	m_Status2Ctl.SetWindowText ( "" );
}
//Write EPC
void CVCsampleDlg::OnMenuWriteEpc() 
{
	// TODO: Add your command handler code here

	memset ( ucEPCPassword, 0, 4 );
	memset ( ucEPCData, 0, 12 );
	
	if ( IsHaveOpened == TRUE )
	{				
		CWriteEPC WriteEPCDataDlg;
		uAntennaID=GetTianXianId();  
		WriteEPCDataDlg.m_AntennaID=uAntennaID;  
		WriteEPCDataDlg.m_hCom = this -> hCom;
		WriteEPCDataDlg.DoModal ( );		
	}	
	else
	{
		AfxMessageBox ( "Please connect reader successfully first!" );
	}
}
//Read user data
void CVCsampleDlg::OnMenuReadUserdata() 
{
	// TODO: Add your command handler code here
	
	if ( IsHaveOpened == TRUE )
	{		
		CReadData EPCReadUserDataDlg;
		EPCReadUserDataDlg.m_hCom = hCom;
		uAntennaID=GetTianXianId();
		EPCReadUserDataDlg.m_AntennaID=uAntennaID;
		EPCReadUserDataDlg.DoModal ( );
	}		
	else
	{
		AfxMessageBox("Please connect reader successfully first!");
	}		

}
//Write user data
void CVCsampleDlg::OnMenuWriteUserdata() 
{
	// TODO: Add your command handler code here

	if ( IsHaveOpened == TRUE )
	{				
		CWriteData EPCWriteUserDataDlg;
		EPCWriteUserDataDlg.m_hCom = hCom;
		uAntennaID=GetTianXianId();
		EPCWriteUserDataDlg.m_AntennaID=uAntennaID;
		EPCWriteUserDataDlg.DoModal ( );			
	}		
	else
	{
		AfxMessageBox("Please connect reader successfully first!");
	}
}
//Config network parameter
void CVCsampleDlg::OnMenuIpSet() 
{
	// TODO: Add your command handler code here
	UpdateData ( TRUE );	
	strStatusDemo = "";

	CString strPrgPath;
	strPrgPath = m_strSysit;

	if ( IsHaveOpened == TRUE )
	{
		CSetIP NetDlg;
		NetDlg.m_hCom = hCom;
		CString strIp, strMask, strGetWay;
		CString ConfigstrIp, ConfigstrMask, ConfigstrGetWay;
		ConfigstrIp = MemLoadStr ( strPrgPath
						, "XCRF-800 Series Reader"
						, "XC_HOST_NAME" );
		ConfigstrMask = MemLoadStr ( strPrgPath
						, "XCRF-800 Series Reader"
						, "XC_SUBNET" );
		ConfigstrGetWay = MemLoadStr ( strPrgPath
						, "XCRF-800 Series Reader"
						, "XC_GATE" );
		
		NetDlg.strIp = ConfigstrIp;
		NetDlg.strMask = ConfigstrMask;
		NetDlg.strGetWay = ConfigstrGetWay;

		if ( NetDlg.DoModal ( ) == IDOK )
		{
			strIp = NetDlg.strIp ;
			strMask = NetDlg.strMask; 
			strGetWay = NetDlg.strGetWay ;
			char  strPwd[ ] = "YWGIT";
			int Result = XCNetAddrSet ( hCom
						, strPwd
						, "XCRF-800 Series Reader"
						, strIp.GetBuffer ( 6 )
						, strMask.GetBuffer ( 6 )
						, strGetWay.GetBuffer ( 6 ) );
			if ( 1 == Result )
			{
				m_IpCtl.SetWindowText ( strIp );
				strStatusDemo = "configure network parameter successful!";
				m_Status1Ctl.SetWindowText ( strStatusDemo );	

				if ( m_strComMode == _T ( "TCP" ) )	
				{
					Sleep ( 100 );
					OnMenuDisconnect ( );
					Sleep ( 300 );
					OnMenuConnect ( ); 
				}
			}
			else
			{
				strStatusDemo = "configure network parameter failed!";
				CString sz;
				sz = theApp.Error_800 ( Result );
				if ( sz != "" )
				{
					strStatusDemo += "(" + sz + ")";
				}
				AfxMessageBox ( strStatusDemo );	
			}				
		}
	}
	else
	{
		AfxMessageBox("Please connect reader successfully first!");
	}
}
//Config antenna power
void CVCsampleDlg::OnMenuPowerSet() 
{
	// TODO: Add your command handler code here

	if(IsHaveOpened==TRUE)
	{
		CSetPower Dlg;
		uAntennaID=GetTianXianId();   
        Dlg.m_AntennaID=uAntennaID;
		Dlg.m_hCom	 = hCom;
		Dlg.DoModal();		
	}
	else
	{		
		AfxMessageBox("Please connect reader successfully first!");
	}
}

⌨️ 快捷键说明

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