MOOS学习笔记1——HelloWorld
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的更多相关文章
- MOOS学习笔记2——HelloWorld回调
MOOS学习笔记2--HelloWorld回调 例程 #include "MOOS/libMOOS/Comms/MOOSAsyncCommClient.h" bool OnConn ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- MOOS学习笔记4——独立线程不同回调
MOOS学习笔记4--独立线程不同回调 /** * @fn 独立线程不同回调 * @version v1.0 * @author */ #include "MOOS/libMOOS/Comm ...
- MOOS学习笔记3——命令行
MOOS学习笔记3--命令行 例程 /** * @code A simple example showing how to use a comms client问问怎么样 */ #include &q ...
- U3D学习笔记1: HelloWorld
Unity 版本: 5.3.5.f1 Hello World工程 1.新建工程 HelloWorld U3D可选2D和3D游戏 2.新建C#脚本文件 在project栏的assets目录右键-&g ...
- cocos2d-x 2.1.4学习笔记之HelloWorld分析
下面截图是HelloWorld项目下的文件夹结构 这是用python命令生成的项目,在创建过程中默认生成多个平台的程序文件. 1.“resource”文件夹 该文件夹主要用于存放游戏中需要的图片.音频 ...
- MOOS学习笔记——多线程
/* * A simple example showing how to use a comms client */ #include "MOOS/libMOOS/Comms/MOOSAsy ...
- C++学习笔记(HelloWorld,类型和值)
现在有一个从控制台读取输入的小程序: #include "../std_lib_facilities.h" int main() { cout << "Ple ...
- Activiti学习笔记2 — HelloWorld
一. Maven的POM配置文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...
随机推荐
- 4.1、Android Stuido配置你的Build Variant
每个版本的build variant代表了你可以构建的每一个版本.虽然你未直接配置build variants,你可以通过配置build type和product flavor. 比如,一个demo的 ...
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
因为写博客总是需要录制 Android 软件的演示效果, 研究了将近一小时找到了合适的工具; 录制流程 : -- 1. 录制 Android 手机屏幕内容 : 使用 拍大师 软件录制 Android ...
- 08 ListView 优化
ListVie的优化 1 固定ListView长宽高 如下图在清单文件中: <ListView android:id="@+id/lv" android:layout_wid ...
- 从Storm和Spark 学习流式实时分布式计算的设计
0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛.本来想就写Spark源码分析的文章吧.但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量 ...
- 从二进制数据流中构造GDAL可以读取的图像数据
在很多时候,我们的图像数据往往都不是文件方式存储在磁盘上,而是可能从网络或者数据库中获取的是二进制的图像数据流.最简单的方式和最容易想到的方式就是将这个文件流保存到磁盘上形成一个文件,然后再使用GDA ...
- (NO.00004)iOS实现打砖块游戏(十):砖块!更多的砖块!
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 到目前为止游戏基本可玩,但是砖块数量是不变的,等玩家打光所有的砖 ...
- 卸载linux后出现grub rescue怎么办?
原文转自:http://zhidao.baidu.com/link?url=9e2mOttgV0IJDMml58SFbV-7XOvVzp2jR5l1n3ltFOzX1XAcp5-t-QQPc-Nozy ...
- mac 下终端 操作svn命令 以及出现证书错误的处理方法
首先,转载地址:http://hi.baidu.com/zhu410289616/item/eaaf160f60eb0dc62f4c6b0e 还有一个地址:http://www.cnblogs.com ...
- Eclipse中查看没有源码的Class文件的方法
本文地址:http://blog.csdn.net/sushengmiyan/article/details/18798473 本文作者:sushengmiyan 我们在使用Eclipse的时候,经常 ...
- UNIX环境高级编程——线程
线程包含了表示进程内执行环境必需的信息,其中包括进程中标示线程的线程ID.一组寄存器值.栈.调度优先级和策略.信号屏蔽字.errno变量以及线程私有数据. 进程的所有信息对该进程的所有线程都是共享的, ...