安装
https://www.pianshen.com/article/87591710572
通过IDL文件定义通信数据结构
IDL文件示例(property.idl)
#include<G:/softDownload/OpenDDS-3.14/ACE_wrappers/TAO/tao/DoubleSeq.pidl>
#include<G:/softDownload/OpenDDS-3.14/ACE_wrappers/TAO/tao/LongSeq.pidl>
#include<G:/softDownload/OpenDDS-3.14/ACE_wrappers/TAO/tao/StringSeq.pidl>
module propertyMsg{
#pragma DCPS_DATA_TYPE "propertyMsg::intPropertyMsg"
#pragma DCPS_DATA_KEY "propertyMsg::intPropertyMsg id"
struct intPropertyMsg{
long id;
string name;
long value;
};
#pragma DCPS_DATA_TYPE "PropertyMessenger::IntArrayPropertyMsg"
#pragma DCPS_DATA_KEY "PropertyMessenger::IntArrayPropertyMsg Id"
struct IntArrayPropertyMsg {
long Id;
string propertyName;
CORBA::LongSeq value;
};
#pragma DCPS_DATA_TYPE "PropertyMessenger::DoubleArrayPropertyMsg"
#pragma DCPS_DATA_KEY "PropertyMessenger::DoubleArrayPropertyMsg Id"
struct DoubleArrayPropertyMsg {
long Id;
string propertyName;
CORBA::DoubleSeq value;
};
#pragma DCPS_DATA_TYPE "PropertyMessenger::StringArrayPropertyMsg"
#pragma DCPS_DATA_KEY "PropertyMessenger::StringArrayPropertyMsg Id"
struct StringArrayPropertyMsg {
long Id;
string propertyName;
CORBA::StringSeq value;
};
}
idl中没有INT类型,用Long代替。
idl内置了longSeq stringSeq doubleSeq等seq类型。
使用IDL文件生成cpp源码
将IDL文件放在DDS文件夹下G:\softDownload\OpenDDS-3.14
在该文件夹下命令行输入(版本不同命令略有差异):
opendds_idl.exe .\property.idl
tao_idl.exe .\property.idl
tao_idl.exe .\propertyTypeSupport.idl --idl-version 4
此时可以看到文件夹下生成了下述cpp文件:
将上述文件添加到自己的代码工程中即可。