MOOS-ivp之第二个MOOSApp:订阅MOOSDB消息

前言

MOOS是一套自主的发布-订阅的中间件,消息由各个app自主订阅,MOOSDB统一分发。明白了消息的发布和订阅,MOOSApp就没其他多少内容了,至于要发布的消息和订阅消息之后要做的事情就根据项目需求实现。
转载请注明出处!!!!

环境介绍

官方教程链接 建议去看看
vm虚拟机 ubuntu 18.04
MOOS-ivp 19.8.1

MOOS-ivp的安装可以参考我之前的博文

构建MOOSApp

如何构建MOOS-ivp扩展看这里

cd ~/moos-ivp-extend/src
 MyGenMOOSApp MySubscription p "NXM"

src 目录下的CMakeLists.txt中添加构建的app。

#============================================================================
# List the subdirectories to build...
#============================================================================
ADD_SUBDIRECTORY(lib_behaviors-test)
ADD_SUBDIRECTORY(pExampleApp)
ADD_SUBDIRECTORY(pXRelayTest)
ADD_SUBDIRECTORY(pMyTestApp)       
ADD_SUBDIRECTORY(pMySubscription)              #   添加这一行

MySubscription.cpp中找到RegisterVariables函数

  Register("My_TestVal", 0);//订阅的消息名称,0代表发生变化立刻接受
  //这里订阅上一篇博客创建的app发布的消息

继续找到OnNewMail函数,在for循环中添加对邮件的解析

      string key = msg.GetKey();
      if(key == "My_TestVal")
      {
      	//再此添加对订阅消息的处理,消息只有double和string两种数据类型
      	//如何处理看具体需求
      	double temp = msg.m_dfVal;//保存
    	Notify("Accept",temp);//再发布出去,便于验证
      }

然后编译

cd ~/moos-ivp-extend
 ./build.sh

配置文件添加创建的app

cd ~/moos-ivp-extend/missions/alder
//------------------------------------------
// Antler configuration  block
ProcessConfig = ANTLER
{
  MSBetweenLaunches = 200

  Run = MOOSDB		@ NewConsole = false
  Run = uSimMarine	@ NewConsole = false
  Run = pNodeReporter	@ NewConsole = false
  Run = pMarinePID	@ NewConsole = false
  Run = pMarineViewer	@ NewConsole = false
  Run = uProcessWatch   @ NewConsole = false
  Run = pHelmIvP	@ NewConsole = false
  Run = pOdometry	@ NewConsole = false
  Run = pMyTestApp	@ NewConsole = false 
  Run = pMySubscription@ NewConsole = false //添加
}

验证

cd ~/moos-ivp-extend/missions/alder

运行

pAntler alder.moos

再开一个终端,我没实际运行,具体怎么样我就不截图了,参照上一篇博客

uXMS Accept

猜你喜欢

转载自blog.csdn.net/qq_36523059/article/details/107577178