欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 2018113662554
申请人: 南京华讯方舟通信设备有限公司
专利类型:发明专利
专利状态:已下证
专利领域: 电通信技术
更新日期:2025-03-12
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于DDS的跨网段通信方法,其特征在于,包括步骤:(1)定义主机A与主机B之间通信的数据类型,并使用DDS编译器将定义的数据类型生成中间件中C文件和H头文件,供应用程序使用;

(2)在主机A上使用DDS中间件,创建ID为a的域domain a,a∈[0,230],a∈Z;创建发布者pub,注册数据类型;创建主题Topic;创建数据写入者DataWriter,写入数据;以组播的形式发布数据;其中,注册的数据类型为步骤(1)中定义的数据类型;

(3)在与主机A处于不同网段的主机B上使用DDS中间件,创建ID为b的域domain b,b≠a,b∈[0,230],b∈Z;创建订阅者sub,注册数据类型;创建主题Topic;创建数据读取者DataReader,通过take或read语句读取发布者pub发布的数据,实现数据的订阅;其中,注册的数据类型为步骤(1)中定义的数据类型,且与主机A上注册的数据类型相同;创建的主题与主机A上创建的主题相同;

(4)在双网卡电脑C上设置用于运行domain a的sub和domain b的pub的xml配置文件;

所述电脑C的双网卡的IP地址分别与主机A的IP地址和主机B的IP地址在相同网段;

(5)读取xml配置文件,所述xml配置文件包括绑定信息,所述绑定信息为主机A、B的域ID信息、主题信息以及QoS配置信息,根据配置文件中的信息分别创建域input_dp和output_dp,创建发布者output_publisher、订阅者input_subscriber,并将xml配置文件中的绑定信息保存至QMap>类的map映射中;其中,input_dp是与主机A创建的pub对应的sub的域,output_dp是与主机B创建的sub对应的pub的域;

(6)根据创建的域input_dp获取其内置主题为DCPSPublication的datareader,并设置回调函数;

(7)在步骤(6)中的回调函数内,根据步骤(5)保存的配置文件的绑定信息创建代理datareader和datawriter;

(8)在代理datareader回调函数中,首先获取主机A以步骤(1)中定义的数据类型发布的数据,然后获取user_data策略中代理datawriter指针,再通过代理datawriter把获取到的主机A发布的数据发送至主机B。

2.根据权利要求1所述的一种基于DDS的跨网段通信方法,其特征在于:步骤(1)中,所述数据类型为使主机A发布的与主机B订阅的相同的数据类型,用于实现主机A、B的相互通信。

3.根据权利要求1所述的一种基于DDS的跨网段通信方法,其特征在于:步骤(1)中,所述定义主机A与主机B之间通信的数据类型为:定义一个结构体,所述结构体中可以根据实际通信需求定义不同数据类型成员变量。

4.根据权利要求1所述的一种基于DDS的跨网段通信方法,其特征在于:所述步骤(5)包括:

(5.1)读取xml配置文件,将xml配置文件中的绑定信息保存至QMap>类的map映射中,其中包括input_info和output_info;

(5.2)根据读取的xml配置信息分别创建域input_dp和output_dp,创建发布者output_publisher、订阅者input_subscriber,并将创建的域、发布者、订阅者连同主题信息分别保存到input_map和output_map中;其中,input_map用于保存input_dp、input_subscriber、主题信息、QoS信息;output_map用于保存output_dp、output_publisher、主题信息、QoS信息;

(5.3)将步骤(5.2)中创建的域、以及xml配置文件中的域信息保存到QVector中,目的进行域的统一管理。

5.根据权利要求1所述的一种基于DDS的跨网段通信方法,其特征在于:所述步骤(6)为:根据input_dp获取内置subscriber,由内置subscriber获得内置主题为DCPSPublication的内置datareader,并设置内置datareader的回调函数。

6.根据权利要求5所述的一种基于DDS的跨网段通信方法,其特征在于:所述步骤(7)包括:

(7.1)当主机A的datawriter开始写数据,即开始发布数据,在步骤(6)中的回调函数中根据内置datareader获得其所在的域参与者dp,即input_dp;

(7.2)根据步骤(7.1)中的input_dp在input_map中找到对应的主题信息、QoS配置信息,即input_info;

(7.3)匹配主题,将步骤(7.2)中获得的input_info中的主题信息与通过内置datareader读取的主机A发布的数据的主题相匹配;

(7.4)根据主题匹配情况判断代理datareader是否创建;如果已经创建则直接退出创建代理datareader和datawriter的程序;如果没有创建,则根据主机A发布的数据类型注册数据类型,创建与主机A发布的主题相同的主题;

(7.5)根据保存的配置绑定信息,判断QoS配置情况,确定需要拷贝的QoS;

(7.5.1)判断配置信息input_info中copy_writer_qos:如果copy_writer_qos等于1,拷贝发布端datawriter的qos到代理datareader、代理datawriter;如果copy_writer_qos不等于1,拷贝output_info中datawriter_qos到代理datawriter,拷贝input_info中datareader_qos到代理datareader;

(7.6)根据步骤(7.5)中QoS配置判断,分别设置代理datareader和代理datawriter的QoS;

(7.7)根据output_info中的pub信息、步骤(7.4)中创建的主题及步骤(7.6)中设置的代理datawriter的QoS,创建代理datawriter;

(7.8)根据input_info中的sub信息、步骤(7.4)中创建的主题及步骤(7.6)中设置的代理datareader的QoS,创建代理datareader,并设置回调函数。