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,变量值为HelloComms.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;
}

转载于:https://www.cnblogs.com/jingshikongming/p/8971946.html

MOOS学习笔记1——HelloWorld相关推荐

  1. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  2. MOOS学习笔记3——命令行

    MOOS学习笔记3--命令行 例程 /** * @code A simple example showing how to use a comms client问问怎么样 */#include &qu ...

  3. 【FastDDS学习笔记】HelloWorld示例程序编译和运行

    目录 第一章:[FastDDS学习笔记]Ubuntu22上安装fastDDS环境 第二章:[FastDDS学习笔记]HelloWorld示例程序编译和运行 第三章:[FastDDS学习笔记]Fast- ...

  4. Cocos2d-x 学习笔记一 HelloWorld

    最近刚刚开始学习cocos2d-x,本身自己就是小菜外加从未涉足过游戏引擎方面,而相关的C++版本学习教程并不多,自学起来很是费力啊! 首先是引擎相关的最基本概念,参见http://leeyin.it ...

  5. nodejs学习笔记-入门helloworld

    2019独角兽企业重金招聘Python工程师标准>>> 什么是nodejs? Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快. ...

  6. python编译helloworld_python3学习笔记--001--python HelloWorld

    python默认使用UTF-8编码 一个python3版本的HelloWorld代码如下: #!/usr/bin/env python print ('Hello World!') 如果此python ...

  7. Objective-C 学习笔记1 HelloWorld

    1.打开xcode(4.2) 2.选择 Create a new Xcode project 3.选择 os x下的 application 4.选择右边的Command Line Tool 5.点[ ...

  8. Griffon学习笔记1 - HelloWorld

    参考文章:[url]http://morry.iteye.com/blog/804768[/url] [img]http://dl.iteye.com/upload/attachment/348337 ...

  9. 不忘初心helloworld,IMX6入门学习笔记

    本文按照时间学习的先后顺序,入门体验了知名半导体厂商NXP的著名处理器--IMX6. 无论你是否有基础,都能按照流程学会软件使用和交叉编译方法,老规矩:看不懂算我的. 了解开发板 官方资料链接: ht ...

最新文章

  1. python比较数据库表今天跟前一天数据增量,Python 生产环境Mysql数据库增量备份脚本...
  2. mongodb 关闭服务 mongod -f /root/mongodb/bin/xx.conf --shutdown
  3. Java设计模式-状态模式(State)
  4. linux安装定制添加输入,Arch Linux--定制自己的Linux操作系統(乙-國際化桌面安裝篇)...
  5. Telnet初试(本地测试)
  6. pythonnumpy矩阵详解_python常用模块numpy解析(详解)
  7. java static是单例_JAVA基础-static关键字及单例设计模式
  8. 如何用手机制作一寸或二寸证件照?
  9. 1213家中国厂商涌入拉斯维加斯!CES 2019最全预告在此...
  10. MATLAB--求一个矩阵中所有元素的平均值
  11. iPhone iPad下载NBA2K22苹果版下载
  12. wifi已连接不可上网服务器无响应,为什么手机连上wifi却上不了网
  13. meethigher-QQ发送卡片消息
  14. 卡通农场服务器无响应是怎么回事,卡通农场新买的平板打不开的解决方法
  15. Linux 4.19.111 供电(power supply )子系统
  16. 二本跨考985计算机考研,跨专业考研经验谈:从二本到985的飞跃
  17. SAP ABAP GUI_DOWNLOAD中下载乱码的问题
  18. sqlite3数据库损坏修复
  19. 〖全域运营实战白宝书 - 运营角色认知篇④〗- 与运营打交道的小伙伴
  20. 极限发问,挑战文心一言底线

热门文章

  1. 一个很好用的DBHelper类(包括使用SQL语句 存储过程 事务 做相关操作) 入门级
  2. 4.3.2 用jQuery进行异步加载(2)
  3. reportviewer动态数据源
  4. HttpModule,HttpHandler 简介
  5. Gallery:收集一些用于展示一组图片的javascript控件
  6. C实现web service
  7. 漫步线性代数十三——线性变换
  8. PRML-系列一之1.6.1
  9. The Network Adapter could not establish the connection解决
  10. PointConv论文阅读笔记