我有两个程序,一个使用 OpenSplice 6.7.1 ,另一个使用 OpenDDS 3.10。
他们都使用 RTPS 作为协议,使用相同的域ID 和目标端口(我使用wireshark验证)。
问题是他们没有沟通。
我不知道我的配置是否有任何问题...我正在使用带有 RTPS 的OpenDDS的基本配置,而对于OpenSplice,我使用了提供的ospl.xml之后更改域名ID。
这是我的配置文件。 对于OpenDDS:
[common]
DCPSGlobalTransportConfig=$file
DCPSDefaultDiscovery=DEFAULT_RTPS
[transport/the_rtps_transport]
transport_type=rtps_udp
适用于OpenSplice:
<OpenSplice>
<Domain>
<Name>ospl_sp_ddsi</Name>
<Id>223</Id>
<SingleProcess>true</SingleProcess>
<Description>Stand-alone 'single-process' deployment and standard DDSI networking.</Description>
<Service name="ddsi2">
<Command>ddsi2</Command>
</Service>
<Service name="durability">
<Command>durability</Command>
</Service>
<Service name="cmsoap">
<Command>cmsoap</Command>
</Service>
</Domain>
<DDSI2Service name="ddsi2">
<General>
<NetworkInterfaceAddress>AUTO</NetworkInterfaceAddress>
<AllowMulticast>true</AllowMulticast>
<EnableMulticastLoopback>true</EnableMulticastLoopback>
<CoexistWithNativeNetworking>false</CoexistWithNativeNetworking>
</General>
<Compatibility>
<!-- see the release notes and/or the OpenSplice configurator on DDSI interoperability -->
<StandardsConformance>lax</StandardsConformance>
<!-- the following one is necessary only for TwinOaks CoreDX DDS compatibility -->
<!-- <ExplicitlyPublishQosSetToDefault>true</ExplicitlyPublishQosSetToDefault> -->
</Compatibility>
</DDSI2Service>
<DurabilityService name="durability">
<Network>
<Alignment>
<TimeAlignment>false</TimeAlignment>
<RequestCombinePeriod>
<Initial>2.5</Initial>
<Operational>0.1</Operational>
</RequestCombinePeriod>
</Alignment>
<WaitForAttachment maxWaitCount="100">
<ServiceName>ddsi2</ServiceName>
</WaitForAttachment>
</Network>
<NameSpaces>
<NameSpace name="defaultNamespace">
<Partition>*</Partition>
</NameSpace>
<Policy alignee="Initial" aligner="true" durability="Durable" nameSpace="defaultNamespace"/>
</NameSpaces>
</DurabilityService>
<TunerService name="cmsoap">
<Server>
<PortNr>Auto</PortNr>
</Server>
</TunerService>
</OpenSplice>
我做错了什么?
答案 0 :(得分:0)
多供应商的互操作性已在OMG活动中反复演示,但最近并未出现,因此可能会在任一产品中发生回归。
您的OpenSplice配置是(除了domainId,它应该与您的应用程序中使用的配置相匹配,通常用户使用DDS :: DOMAIN_ID_DEFAULT表示他们希望使用OSPL_URI环境变量指向的配置中指定的ID)正确的默认配置。我确定你知道如果使用多宿主机器,待使用的接口/ IP地址的AUTO设置可能会引起混淆。
接下来是查看(DDSI)跟踪和/或wireshark捕获,看看你是否发现两个供应商的DDSI线框(PrismTech为1.2,OCI为1.3)。
例如,当在OpenSplice DDSI-trace中没有发现供应商-1.3的迹象时,这表明还有一些基本的&#39;沟通问题。
请注意,在这些OMG活动中,我们通常会在域&#39; 0&#39;上使用(对于我们&#39;捆绑的&#39;)iShapes示例。和无模块IDL主题类型规范,以验证互操作性,因此它不适合您的应用程序,也值得尝试(并检查/使用wireshark与该示例相结合)
我还会继续关注社区论坛,了解相关信息。