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 ...
随机推荐
- 【移动开发】Context类bindService()参数
bindService()是Context的一个方法,它是抽象的.函数原型的代码如下:(android 2.3.3) /** * Connect to an application service, ...
- linux iio子系统
//============================================================================\\ || 系 统:W ...
- Java:使用匿名内部类在方法内部定义并启动线程
下面的代码展示了在一个方法中,通过匿名内部类定义一个Thread,并Override它的run()方法,之后直接启动该线程. 这样的代码可用于在一个类内部通过另起线程来执行一个支线任务,一般这样的任务 ...
- android修改HOLO对话框风格
andriod中修改对话框的风格,可以通过设置theme来实现,部分元素需要通过Java代码来修改,下面以修改对话框的标题为例说明各步骤. 1.编写一个文本样式. DIALOG的标题是一个textvi ...
- Fedora 20: How to enable SSH
1. systemctl enable sshd.service 2. service sshd restart
- 精通CSS+DIV网页样式与布局--滤镜的使用
在上篇博客中,小编主要简单的介绍了使用CSS,如何制作实用菜单,今天我们继续来总结有关CSS的基础知识,今天小编主要简单的来介绍一下CSS中关于滤镜的使用,首先,小编先来简单的介绍一下滤镜,我们这次来 ...
- Android开发-Listview中显示不同的视图布局
1. 使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能.convertView在Item为单一的同种类型布局时,能够 ...
- c# 单元测试工程如何取得当前项目路径
前言: C#工程项目中有些配置文件,数据文件等不是C#工程文件,但是程序中需要访问,如果写成绝对路径不利于程序的迁移,所以必须写成相对路径.取得相对路径的方法很多,网上的例子也很多,基本上是七种吧,这 ...
- Java Web 高性能开发,第 1 部分: 前端的高性能
Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.所有 Web 的思想都是通用的,它们也可以运用到 Java Web.这一系列 ...
- 第三方ProgressHUD进度条 技术分享
创建一个进度辅助视图: 初始化: - (void)viewDidLoad { [super viewDidLoad]; <span style="color: rgb(255, 0, ...