コード例 #1
0
ファイル: RobotCom.cpp プロジェクト: ksun/CS225A
// get_type = GET_CURTIME (gv.curTime),
//            GET_JPOS (gv.q), GET_JVEL (gv.dq), GET_TORQ (gv.tau), 
//            GET_IPOS (gv.x)
void RobotCom::getStatus( UiToServoMessageType get_type, float *arg )
{
	if( get_type != GET_CURTIME && get_type != GET_JPOS
		&& get_type != GET_JVEL && get_type != GET_TORQ
		&& get_type != GET_IPOS )
		return;

    CMsg mOut;
	mOut.Init();
    mOut.WriteMessageType( get_type );
	mOut.WriteInt( GUI );
	sendMessage(mOut);

	short expectedMesgType;
	int numOfData;

	switch( get_type )
	{
	case GET_CURTIME:
		expectedMesgType = CURTIME_DATA;
		numOfData = 1;
		break;
	case GET_JPOS:
		expectedMesgType = JPOS_DATA;
		numOfData = 6;
		break;
	case GET_JVEL:
		expectedMesgType = JVEL_DATA;
		numOfData = 6;
		break;
	case GET_TORQ:
		expectedMesgType = TORQ_DATA;
		numOfData = 6;
		break;
	case GET_IPOS:
		expectedMesgType = IPOS_DATA;
		numOfData = 7;
		break;
	}

	for(;;)
	{
		if( IsDataAvailable() )
		{
			CMappedMsg mIn = GetMsg();
			short mesgType = mIn.ReadMessageType();
			//printf("Type = %d\n", mesgType );

			if( mesgType == expectedMesgType )
			{
				mIn.ReadFloat( arg, numOfData );
				return;
			}
		}
	}
}
コード例 #2
0
ファイル: RobotCom.cpp プロジェクト: brianmok/Keep3r
// get_type = GET_CURTIME (gv.curTime),
//            GET_JPOS (gv.q), GET_JVEL (gv.dq), GET_TORQ (gv.tau), 
//            GET_IPOS (gv.x)
void RobotCom::getStatus( UiToServoMessageType get_type, float *arg )
{
  CMsg mOut;
	mOut.Init();
    mOut.WriteMessageType( get_type );
	mOut.WriteInt( GUI );
	sendMessage(mOut);

	short expectedMesgType = NO_MSSG;

	switch( get_type )
	{
	case GET_CURTIME:
		expectedMesgType = CURTIME_DATA;
		break;
	case GET_JPOS:
		expectedMesgType = JPOS_DATA;
		break;
	case GET_JVEL:
		expectedMesgType = JVEL_DATA;
		break;
	case GET_TORQ:
		expectedMesgType = TORQ_DATA;
		break;
	case GET_IPOS:
		expectedMesgType = IPOS_DATA;
		break;
	default:
		std::cout<<"Warning: RobotCom::getStatus: Unsupported messagetype provided!"<<std::endl;
		return;
		break;
	}

	for(;;)
	{
		if( IsDataAvailable() )
		{
			CMappedMsg mIn = GetMsg();
			short mesgType = mIn.ReadMessageType();

			int numData = mIn.ReadInt();

			if( mesgType == expectedMesgType )
			{
				mIn.ReadFloat( arg, numData );
				return;
			}
		}
	}
}
コード例 #3
0
ファイル: RobotCom.cpp プロジェクト: brianmok/Keep3r
CMappedMsg RobotCom::GetMsg()
{
  CMappedMsg msg;
  msg.SetMsg( buffer_, size_ );
  return msg;
}