opendds简单入门(二)

我也是从网上抄了一个示例,自己测试了一下,

lyingbo的博客-DDS

1. 首先写一个IDL:

// Demo.idl

module Demo {


#pragma DCPS_DATA_TYPE "Demo::Pos"
#pragma DCPS_DATA_KEY  "Demo::Pos pos_id"

	struct Pos {
		long            pos_id;
		long            pos_x;
		long            pos_y;
	};
};

2. 然后就可以生成代码了:

opendds_idl Demo.idl

tao_idl Demo.idl


// 备注执行这个命令,需要添加环境变量:
// include=D:\OpenDDS3133
// 否则会提示找不到dds目录下包含的文件,

tao_idl DemoTypeSupport.idl

其中tao_idl Demo.idl 生成

 < filename >C.cpp
 < filename >C.h
 < filename >C.inl
 < filename >S.cpp
 < filename >S.h
 < filename >S.inl  //这个不一定有

opendds_idl Demo.idl 生成

< filename >TypeSupport.idl
< filename >TypeSupportImpl.h
< filename >TypeSupportImpl.cpp

其中生成的IDL文件中包括了PosTypeSupport, PosDataWriter 和PosDataReader的接口定义。这些特定的DDS类型接口将会在稍后注册数据类型,发布数据样本和接收数据样本时使用,而生成的cpp文件实现了这些接口。

生成的IDL文件还需要和原始的IDL一起,用 TAO IDL编译器编译,以便生成相应的接口框架。之后这些生成的实现文件需要和使用 Pos类型的OpenDDS应用程序源码一起编译链接。

而 新生成的IDL还需要再用tao_idl生成一遍。

OpenDDS Java开发(二):根据IDL进行代码生成

 

 

3. 还有一种方法生成各种代码文件,同时生成项目文件,因为刚才的方法并没有生成项目文件还是不能用。

3.1 写一个mpc文件:

project(*idl): dcps {
  TypeSupport_Files {
    Demo.idl
  }

  custom_only = 1
}

project(*publisher) : dcpsexe_with_tcp {
  exename   = publisher
  after    += *idl

  TypeSupport_Files {
    Demo.idl
  }

  Source_Files {
    DataWriter.cpp
    Publisher.cpp
  }
}

project(*subscriber) : dcpsexe_with_tcp {
  exename   = subscriber
  after    += *publisher

  TypeSupport_Files {
    Demo.idl
  }

  Source_Files {
    DataReader.cpp
    Subscriber.cpp
  }
}

3.2 提供相关的代码文件(可以先随便新建一个空的):

发布端:

Publisher.cpp

DataWriter.h

DataWriter.cpp

订阅端:

DataReader.h

DataReader.cpp

Subscriber.cpp

3.3 执行命令,生成项目文件:

mpc使用介绍 (一)

perl %ACE_ROOT%\MPC\mwc.pl -type vs2017 -include %DDS_ROOT%\MPC\config

这个时候就可以在目录里看到OpenDDSPing.sln了,

备注一下:各个VC版本:

Visual Studio 6 : vc6
Visual Studio 2003 : vc7
Visual Studio 2005 : vc8
Visual Studio 2008 : vc9
Visual Studio 2010 : vc10
Visual Studio 2012 : vc11
Visual Studio 2013 : vc12
Visual Studio 2015 : vc14
Visual Studio 2017 : vs2017

3.4 生成代码文件,

打开OpenDDSPing.sln,生成IDL项目部分就可以,比手动运行好多了。

3.5 接下来就要完善代码了,见我的资源下载部分

附录:示例项目

https://download.csdn.net/download/robinfoxnan/12821698

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值