鉴于moos官网上资料有很多,此处只是针对于用到的东西进行了学习:
moos-ivp官网网址: https://oceanai.mit.edu/moos-ivp/pmwiki/pmwiki.php?n=Main.HomePage
基础文档如下:
1. MOOS概述
1.1. MOOS的框架如下:
MOOS是一套自主的发布-订阅的中间件,消息由各个app自主订阅,MOOSDB统一分发;(每一个moos应用程序都是一个客户端,都连接在MOOSDB上,这个连接是由客户端建立的); MOOS的应用程序接口允许客户端与MOOSDB之间进行数据传输。
1.2 MOOS应用中的关键虚函数
(1) Iterate();(在调用OnNewMail()之后,在每次应用程序迭代时都会调用Iterate()方法。 )
通过该功能可以协调应用程序要执行的工作,基类会定期自动调用iterate函数;可以配置SetAppFreq()调用迭代的速率,也可以通过在任务文件中指定“ AppTick”参数来配置;MOOSApp知道何时调用Iterate。函数MOOSTime以浮点秒为单位返回Unix时间。
(2)OnNewMail();(订阅时使用----用来处理邮件)
如果有新邮件在等待,则varCMOOSApp基类将调用OnNewMail()虚函数,在CMOOSApp :: Run()中调用此函数,返回值是std :: list <CMOOSMsg>形式;可以自由地遍历此集合,以检查谁发送了数据以及数据的相关性并相应地操作数据。
(3) OnConnectToServer();-----末尾一般用来读邮件时注册登记变量
它实际上是来自CMOOSApp拥有的处理所有IPC通信的mComms对象(实例CMOOSCommsObject)中的线程的回调;如果有其他进程发布与特定变量有关的数据,则告诉MOOSDB我们要发送邮件;
(4) OnStartup();--------末尾一般用来注册变量
在应用程序进入其自己的永久循环之前调用此函数。这是实现应用程序的初始化代码的应用程序,尤其是读取配置参数(包括那些修改CMOOSApp基类的默认的参数 )中的文件。
1.3. 客户端之间传递的数据形式受到MOOS的限制:
(1) 通常,数据类型是字符串或双精度型 ;
(2) 二进制数据可以打包到字符串字段中 ;
其消息类为MOOSMsg ,提供的部分功能如下:
下一篇就是MOOSApp的编写啦~