// 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; } } } }
// 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; } } } }
CMappedMsg RobotCom::GetMsg() { CMappedMsg msg; msg.SetMsg( buffer_, size_ ); return msg; }