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;
}

MOOS学习笔记1——HelloWorld的更多相关文章

  1. MOOS学习笔记2——HelloWorld回调

    MOOS学习笔记2--HelloWorld回调 例程 #include "MOOS/libMOOS/Comms/MOOSAsyncCommClient.h" bool OnConn ...

  2. Spring MVC 学习笔记一 HelloWorld

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

  3. MOOS学习笔记4——独立线程不同回调

    MOOS学习笔记4--独立线程不同回调 /** * @fn 独立线程不同回调 * @version v1.0 * @author */ #include "MOOS/libMOOS/Comm ...

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

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

  5. U3D学习笔记1: HelloWorld

    Unity 版本: 5.3.5.f1 Hello World工程 1.新建工程 HelloWorld U3D可选2D和3D游戏   2.新建C#脚本文件 在project栏的assets目录右键-&g ...

  6. cocos2d-x 2.1.4学习笔记之HelloWorld分析

    下面截图是HelloWorld项目下的文件夹结构 这是用python命令生成的项目,在创建过程中默认生成多个平台的程序文件. 1.“resource”文件夹 该文件夹主要用于存放游戏中需要的图片.音频 ...

  7. MOOS学习笔记——多线程

    /* * A simple example showing how to use a comms client */ #include "MOOS/libMOOS/Comms/MOOSAsy ...

  8. C++学习笔记(HelloWorld,类型和值)

    现在有一个从控制台读取输入的小程序: #include "../std_lib_facilities.h" int main() { cout << "Ple ...

  9. Activiti学习笔记2 — HelloWorld

    一. Maven的POM配置文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...

随机推荐

  1. (一)SQLite与SQL语句基础

    数据库一般分为 关系型和对象型,关系型是主流,对象型数据库是直接把对象存入数据库. 常用关系型数据库: PC:Oracle MySQL SQL Server DB2 嵌入式/移动端:SQLite 本文 ...

  2. Fresco图片框架内部实现原理探索

    流行的网络框架 目前流行的网络图片框架: Picasso.Universal Image Loader.Volley的(ImageLoader.NetworkImageView).Glide和Fres ...

  3. UNIX环境高级编程——线程属性

    pthread_attr_t 的缺省属性值 属性 值 结果 scope PTHREAD_SCOPE_PROCESS 新线程与进程中的其他线程发生竞争. detachstate PTHREAD_CREA ...

  4. java设计模式---访问者模式

      Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自 己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自 ...

  5. 如何在Cocos2D 1.0 中掩饰一个精灵(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰和CCRenderTexture CCRenderTextu ...

  6. 【一天一道LeetCode】#111. Minimum Depth of Binary Tree

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  7. android 网络通信框架volly

    1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...

  8. 平述factory reset ——从main system到重引导流程

    关于Android或linux的引导流程,网上大都是从开机开始讲述的,或者直接跳过bootloader引导阶段,直接从init进程开始说起.这里我从手机正常运行状态开始,到重启状态以及重启之后的状态略 ...

  9. jquery easyui datagrid 分页实现---善良公社项目

    接着上篇文章,接下来给大家分享分页的实现,分页其实多多少少见过很有几种,框架中带的图片都特别的好看,会给用户以好的使用效果,具体实现,需要自己来补充代码: 图示1: 通常情况下页面数据的分页显示分成真 ...

  10. json进阶(一)js读取解析JSON类型数据

    js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...