Ejemplo n.º 1
0
void MobileControl::DataArrival(int size, unsigned char *buffer)
{
	unsigned char recv_tmp = buffer[0];

	if (buffer[0] == 0x0D)	//end of data
	{
		DataProcess();
	}
	else
	{
		encoder_recv.push_back(recv_tmp);
	}

	if (IsProcessOver)
	{
		double start;
		start = clock();
		if (cal > 5)
		{
			ComputeVelosity(start,EncoderData[RIGHT],EncoderData[LEFT]);
			printf("V = %f  W = %f  \n",LinearVelocity,AngularVelocity);
			cal = 0;
		}
		else
			cal++;

		int AccumulateDistance = m_pThis->Odometer();
		printf("AccumulateDistance = %d \n",AccumulateDistance );


		IsProcessOver = false;
		encoder_recv.clear();
	}

}
Ejemplo n.º 2
0
/*
*********************************************************
* GET ONE BEAM DATA. 
*********************************************************
*/
void CDataProcess::GetOneBeamData(){

	//WAIT FOR DATA COMMING
	DWORD stat = WaitForMultipleObjects(2,h_eInterrupt,FALSE,INFINITE);
    switch (stat){
	   case WAIT_OBJECT_0+SINGLESPECTRAFINISHED:	
           DataProcess();
		   SetEvent(h_eSpectraDataProcessed);
		
		   break;
	   case WAIT_OBJECT_0+TOTALSPECTRASFINISHED:
		   SetEvent(h_eBeamDataProcessed);
	
		   break;

	   case WAIT_TIMEOUT://NO USE NOW
		   AfxMessageBox("DATA TRANS TIME OUT");
		   break;
		   
	   default:
		   break;
	};
	return ;
}