MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解

MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解



前言

因为在学习的过程中遇到了问题,不知道如何订阅变量,于是专门开一片文章来记录关于MOOS类的内容。详情请参考官网帮助文档《Help Topic: The MOOSApp Superclass》

一、MOOSapp父类的结构和方法

几乎在moos应用树种的所有的MOOS应用文件都继承自MOOSapp这个父类中。这个父类通过给应用程序构建配置模板、订阅邮件、迭代循环来方便我们对于app的构建工作。下面会详细写一下关于MOOSapp类中的基本结构,以及用这些结构如何方便的构建使用的app,

1.使用MOOSapp父类创建自己的app

同过MOOSapp父类创建自己的app的过程类似于我们下面给出的这个pFooBar应用程序的例子

#include "MOOS/libMOOS/MOOSLib.h"
class FooBar : public CMOOSApp
{
public:
FooBar();
~FooBar();
protected:
bool OnNewMail(MOOSMSG_LIST &NewMail);
bool Iterate();
bool OnConnectToServer();
bool OnStartUp();
};

虽然可以创建文件夹并且把上面的内容复制到头文件FooBar.h文件里去,但更好的办法是用一个脚本来创建一个模板文件

GenMOOSApp [app-name] [prefix]
示例如下:
GenMOOSApp FooBar p

还有一个用于生成MOOScasting的版本

GenMOOSApp_AppCasting FooBar p

关于MOOScasting的更多内容看网站,这里还包含了如何把一个MOOSapp转换为MOOScasting app
http://oceanai.mit.edu/ivpman/appcasting.

2.MOOSapp主要的可重载功能

MOOSapp的所有功能包括发布、订阅、处理程序间传递的邮件都是通过MOOSDB来进行的。所有的moos应用程序都是MOOSapp父类的子类,主要的程序都是通过写下面三个关键程序来实现的(这图出现了好几次了):
在这里插入图片描述

二、MOOSapp的实用函数

1.The Notify() function

这个函数是应用程序将邮件发送到MOOSDB的主要方法,并且这个函数有多种版本,版本取决于发布的数据类型。一般来说MOOS发布的信息通常包含时间和发布来源,但是有些辅助信息也很有用,所以有些版本也可以对辅助信息进行发布。下面是常用的一些函数版本,后面的参数不同。

bool  Notify(string varname, double value)
bool  Notify(string varname, string value, string auxilliary_info)
bool  Notify(string varname, double value, string auxilliary_info)
bool  Notify(string varname, vector<unsigned char> binaray_data)
bool  Notify(string varname, vector<unsigned char> binaray_data, string auxilliary_info)

2.The Register() function

通过这个函数可以向mail注册变量,后面的interval参数指的是我们希望接收mail的频率。每秒一次就赋值为1,默认是所有变化都发送值是0。多次注册同一个mail也不会有什么影响,但是要修改接收频率的话必须先注销mail再重新注册。

bool  Register(string varname, double interval=0)
bool  Register(string varname_pattern, string appname_pattern, double interval=0)

3.The UnRegister() function

这个函数的作用是对变量进行注销,如果对一个变量的信息不再感兴趣了,那么可以Onnewmail中忽略,或者将其注销。注销的话可以使得程序更小

bool  UnRegister(string varname)

之后有一堆MOOSapp的函数成员没有具体解释,不过最重要的三个我们已经知道其作用了,基本上足够我们来对程序进行书写了 我也将这些函数列举出来,看名知意。

4。其他函数成员

这些函数的主要作用都是对程序变量进行修改或者获取,因为类的变量都是protect对象所以不能直接在派生类中进行修改。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

关于MOOSapp类讲解的主要内容就这些,主要讲解了三个成员函数的主要功能,分别是将变量发布到MOOSDB,以及注册和注销变量。剩下的一些函数主要作用就是读取和修改类中的变量了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值