MOOS例程HelloWorld-详细注释

来源:互联网 发布:js float 保留两位小数 编辑:程序博客网 时间:2024/05/24 05:50

MOOS学习笔记1——HelloWorld

例程

/**  @功能:通讯客户端的最简单程序,向MOOSDB发送名为"Greeting"*         数据"Hello",并向MOOSDB订阅该信息,接收信息后显示*         出来*//** @功能:插入通讯类头文件* @介绍:MOOSAsyncCommClient与DB连接以后启动两个不同步的读写线程,*       极大的减少了时间延迟。*/#include"MOOS/libMOOS/Comms/MOOSAsyncCommClient.h"/** @功能:bool Fn(void * pParam)型函数,作为SetOnConnectCallBack()函数的*       初始参数,在与服务器连接时订阅变量使用。*/bool OnConnect(void *pParam){   /*   * reinterpret_cast是强制类型转换符!用来处理无关类型转换,重新解释底层的编码;   * 转换空指针为CMOOSCommClient类型的指针   * CMOOSCommClient为MOOS最重要的类之一,单线程的最初的通讯类   */   CMOOSCommClient *pC=reinterpret_cast<CMOOSCommClient*>(pParam);   //第一个参数为订阅通知的变量名   //第二个参数为订阅信息到来的最小时间间隔,为0表示以最大速度获取   pC->Register("Greeting",0.0);   return true;}//主函数形参C++ primer P196//第二个参数argv是元素为字符串指针的数组,第一个元素(编号为0)为函数名或空字符串,最后一个元素值为0//第一个参数argc为数组中字符串的数量,实际输入的字符串数量,值为编号的最大值,即去掉0值的剩下的字符串数量int main(int argc,char *argv[]){   //初始化通讯   MOOS::MOOSAsyncCommClient Comms;   //调用用户的函数订阅变量通知,第一个参数为函数指针形参,   //第二个参数为传递给用户函数的形参   //输入函数名自动转换为函数指针,   //函数原型为void SetOnConnectCallBack ( bool (* pfn )( void * pParamCaller ),void * pCallerParam );   Comms.SetOnConnectCallBack(OnConnect,&Comms);   //启动客户端线程,告知客户端运行MOOSDB的机器的名字和地址,   //以及MOOSDB的端口,给客户端一个名字。   //最后一个参数指定每秒与MOOSDB通讯多少次,默认为5。   Comms.Run("localhost",9000,"EX10");   //MOOSMSG_LIST是std :: list <CMOOSMsg>的别名,   //list为双向链表容器,类似于vector,CMOOSMsg用于打包moos数据。   //CMOOSMsg是一个类   MOOSMSG_LIST M;   for(;;){      //暂停当前的线程1000毫秒      MOOSPause(1000);      //发送数据,变量名为Greeting,变量值为Hello      Comms.Notify("Greeting","Hello");      //取回客户端工作线程内已准备好的数据      Comms.Fetch(M);      //表示迭代器类型      MOOSMSG_LIST::iterator q;      //begin(),end(),返回迭代器类型,end()迭代器返回最后一个元素      //迭代器不要用<>号,用== !=      for(q=M.begin();q!=M.end();q++){          //输出消息的总结         q->Trace();      }   }   return 0;}