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


文章目录

  • MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解
  • 前言
  • 一、MOOSapp父类的结构和方法
    • 1.使用MOOSapp父类创建自己的app
    • 2.MOOSapp主要的可重载功能
  • 二、MOOSapp的实用函数
    • 1.The Notify() function
    • 2.The Register() function
    • 3.The UnRegister() function
    • 4。其他函数成员
  • 总结

前言

因为在学习的过程中遇到了问题,不知道如何订阅变量,于是专门开一片文章来记录关于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,以及注册和注销变量。剩下的一些函数主要作用就是读取和修改类中的变量了。

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

  1. linux 程序实验总结,Linux实验报告(实验四) shell编程实验

    实验四 shell编程实验(二) 班级:姓名:学号:上机时间:年月日 任课教师:实验教师:实验成绩: 一.实验目的 综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程. 二.实验注意 ...

  2. 实验四 Shell编程

    一.实验目的 1.掌握shell环境变量.管道.输入输出重定向使用方法: 2.掌握shell脚本建立和执行方法: 3.掌握shell脚本的基本结构: 4.掌握基本的shell编程方法. 二.实验环境: ...

  3. python3编程入门_在类Unix系统上开始Python3编程入门

    >>> s 'Hello' >>> x = len(s) >>> print("The length of %s is %d" ...

  4. MOOS-ivp 实验四 MOOS编程入门(1)

    MOOS-ivp 实验四 MOOS编程入门(1) 文章目录 MOOS-ivp 实验四 MOOS编程入门(1) 前言 一.MOOS概览 1.MOSS应用程序结构 2.定义在MOOSmsg上的便携函数(h ...

  5. 实验一OpenGL图形编程入门

    实验一OpenGL图形编程入门 一. 实验目的 1.了解和掌握OpenGL的安装. 2.掌握一个简单的基于OpenGL的C++程序结构. 3.掌握Win32程序框架. 4.掌握OpenGL中若干基本图 ...

  6. 实验四 数据库SQL语言基础编程

    -- 实验四 数据库SQL语言基础编程 -- 实验目的: --  掌握数据库查询语句的编写方法 --  掌握利用查询语言完成基本查询 --  掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...

  7. GPU 编程入门到精通(四)之 GPU 程序优化

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...

  8. Opencv3编程入门学习笔记(四)之split通道分离Debug过程中0xC0000005内存访问冲突问题

    这是笔者学习<Opencv3编程入门>的第四篇博客,这篇博客主要是解决在Windows系统下VS 2013中Debug含有split分离通道色彩函数时报出的0xC0000005内存访问冲突 ...

  9. 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

    转自即时通讯网:http://www.52im.net/ 1.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道"三次"和&quo ...

最新文章

  1. 【python教程入门学习】Python零基础入门爬虫项目
  2. Luogu P4105 [HEOI2014]南园满地堆轻絮
  3. 洛谷p1208 水题贪心 思想入门
  4. 几条跟堆栈扯上关系的汇编指令
  5. notepad 没有plugin manager_如何在没有反光镜的情况下在户外拍摄人物?
  6. 成本直降50%,下一代网关震撼发布
  7. oracle如何查询系统变量数据,Oracle如何对IN子查询使用绑定变量(转)
  8. 数据结构之链表创建一元多项式,求一元多项式之和
  9. Crusher Django 学习笔记4 使用Model
  10. 使用Hexo搭建个人博客的终极资料
  11. jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包
  12. NetBPM工作流的一个示例-请假审批
  13. java引用复制_Java中引用的浅复制和深复制
  14. 即席查询Presto
  15. html项目案例_非常时期的健身IP案例-营销100案之8
  16. 让xp3 iis5.1支持40个连接数
  17. 仿Excel冻结单元格效果
  18. 欢迎页面welcome.jsp
  19. Chrome 插件篇-Unsplash插件:浏览器背景桌面设置,漂亮的背景桌面插件,时时更新
  20. 《SolidWorks 2014中文版机械设计从入门到精通》——2.5 尺寸标注

热门文章

  1. 【云端软件】竞价实例(Spot instance):可节省80%-90%的云计算成本
  2. [人生感悟]写在毕业前
  3. 移动硬盘在mac上无法显示 读不出来
  4. 战双服务器维护,战双帕弥什维护到几点 战双帕弥什维护什么时候结束
  5. 重要的是商业,不是应用(Building a bussiness, not an app)
  6. 电子科技大学格拉斯哥学院基础实践——共享单车的调查
  7. 如何实现罗克韦尔PLC的模拟量采集和远程上下载?
  8. Jackson转换java对象与json对象
  9. 英语中what的用法
  10. 照片格式如何批量更改成jpg