基于QT的模块插件化通信方法及系统与流程

专利2025-04-18  18


本发明涉及系统软件集成,具体地,涉及一种基于qt的模块插件化通信方法及系统。


背景技术:

1、在军工领域,需求具有不确定性,因此项目需要经常添加或修改ui及功能,加上项目周期短、更迭快,故项目开发需要一个可裁剪、可重用、松耦合、可同步开发的高效框架。因国产化要求,qt成为首选的开发工具。

2、qt本身提供api用于创建插件,插件需要集成在主程序中运行。功能相对独立的模块可以生成为插件,主程序按需加载、调用、卸载插件。

3、通常情况下,插件本身是解耦的,插件与插件之间不应该互相调用,而是由主程序调用插件进行数据处理。但是,实际情况是存在插件与插件之间数据共享的场景,这时就需要考虑高效、便捷、统一的插件之间通信的方法。

4、目前常用的插件间通信方法是,把数据由插件a经主程序中转传递给插件b。这种方法需要开发者自行实现抽象接口和抽象类,以及主程序的插件管理与数据转发。这种方法编码工作量大,协同开发困难,代码可重用性低。


技术实现思路

1、针对现有技术中的缺陷,本发明的目的是提供一种基于qt的模块插件化通信方法及系统。

2、根据本发明提供的一种基于qt的模块插件化通信系统,包括:

3、udp通信模块:为软件提供基于网卡的报文通信功能;

4、模型数据处理模块:为软件提供全生命周期的模型数据;

5、插件管理模块:能够加载不同类型的插件;

6、插件模块:用户根据业务进行编码实现,并生成插件。

7、优选地,在所述udp通信模块中:

8、udp通信模块底层采用udp协议传输数据,用户通过xml文件进行可视化配置;

9、network模块配置当前插件udp通信的ip和接收端口及其监听的报文类型;

10、mapping模块配置当前插件的发射端和接收端,发射端包括发射的数据格式、目的ip和端口,接收端包括收到数据后的解析规则;mapping模块将model模块和packet模块的数据做映射;

11、packet模块为插件之间传输的报文的格式,包括报文头和数据段;

12、所述udp通信模块满足以下要求:

13、支持xml文件描述通用报文定义,数据类型包括uint、int、double、bool;

14、通用报文定义满足以下要求:字段支持默认值设置;支持字节对齐;支持定长或不定长报文的定义;支持xml文件描述字符串报文定义,包括不定长字符串qstring;支持基于xml文件进行网络监听配置;

15、其中,网络监听配置满足以下要求:支持配置本地发送ip地址、端口号;支持报文模型双向绑定,让接收到的数据直接更新到模型,让模型中的数据直接转换成二进制流并发送出去,满足以下要求:

16、报文到模型的数据绑定:支持将接收到的数据通过xml文件描述映射到模型;

17、模型到报文的数据绑定:支持将模型中的数据通过xml文件直接映射到报文模型描述中并通过网络配置发送;

18、支持模型填充默认值发送;

19、数据收发支持分包处理。

20、优选地,在所述模型数据处理模块中:

21、取代c程序语言中数据结构,支持xml文件进行建模,并支持数据存储;

22、所述模型数据处理模块满足以下要求:

23、支持基本数据类型建模,包括char、int、uint、double、bool;

24、支持专有数据类型包括quint8、qint8、bool、double;支持不定长字符串qstring;

25、支持数据类型建模,包括date、time、datetime、rect;支持数据类型包括qdatetime、qdate、qtime;

26、支持基本容器数据类型建模:支持容器复杂类型包括:std::list、std::vector、std::map;

27、支持数据类型之间的相互组合、嵌套,通过组合嵌套支持更复杂的业务模型;

28、支持模型数据存储,提供全生命周期的模型数据。

29、优选地,在所述插件管理模块中:

30、对数据进行完整性校验以及转发,其中的数据指定义和业务相关的内容,为需要在两个或者多个插件之间相互传递的数据;

31、所述插件管理模块满足以下要求:

32、支持本插件被其他插件引用调用;支持管理后台服务插件;支持管理带界面的插件;支持与插件之间进行数据交互;支持插件任意布局;支持插件快照配置,程序下次启动时能恢复到用户上次退出时的状态;

33、所述插件模块自定义数据模型xml文件;插件的加载与布局基于qt5现有的低阶api,采用动态加载方式进行加载;

34、使用udp通信,使得不同机器上的插件进行交互,前后端分离;

35、插件的数据交互为udp通信,基于xml格式的业务数据解析,以及业务数据与报文之间的格式转换。

36、优选地,在所述插件模块中:

37、自定义数据模型文件;由开发者按照约定模型格式进行创建与生成,关于xml格式配置文件的内容,要求如下:

38、支持xml文件model模块对系统中的业务进行建模,正确配置此文件将保证系统的灵活性;xml中节点要求如下:

39、xml根节点包含名称属性,表示模型名称;

40、根节点包含至少一个属性节点,由多个属性和模型节点,通过属性和模型节点描述数据模型;

41、属性节点描述数据模型的每个子项,包含以下属性:节点名称、数据类型、默认值或模型引用;

42、模型节点抽象数据模型结构,模型节点最少0个,最多有无限个;模型节点包含多个属性节点,或包含多个模型节点形成递归嵌套关系;模型节点包含以下属性:节点名称和键;

43、支持xml文件packet模块对数据包报文进行建模;xml中节点要求如下:

44、报文属性包括:id、名称、字节对齐和报文头id;

45、报文子节点为字段,字段为数据包具体的数据结构,按照数据包的字段顺序定义;字段包含属性:属性名、类型、默认值;

46、支持xml文件network模块将接收到的数据包和packet模块进行绑定;xml中节点要求如下:

47、udp节点属性包括:ip地址、端口;

48、报文id为udp节点的子节点,报文id为1个或多个,报文id的值为packet模块中的报文id;

49、支持xml文件mapping模块将packet模块中的报文和model模块中的节点进行绑定;xml中节点要求如下:

50、映射属性包括名称;

51、映射下配置发送端或者接收端;同一个映射下,发送端和接收端能够自由组合;

52、发送端和接收端属性包括报文id;

53、发送端和接收端下配置udp和映射节点;

54、udp属性包括ip和port;

55、映射节点下配置一个或多个映射子节点;

56、映射子节点属性包括报文属性名和模型节点名称。

57、根据本发明提供的一种基于qt的模块插件化通信方法,采用所述的基于qt的模块插件化通信系统,执行包括:

58、步骤s1:配置插件模块业务模型和实现业务编码;

59、步骤s2:配置插件管理模块内插件加载、数据完整性校验以及数据转发;

60、步骤s3:配置模型数据处理模块对业务模型的解析、存储与转发;

61、步骤s4:配置udp通信模块将业务模型数据按报文格式进行发送,以及对接收到的报文进行解析。

62、优选地,在所述步骤s1中:

63、所述业务模型由开发者定义xml格式的数据结构,用于数据模型的生成;定义xml格式的报文配置以及报文和数据模型的映射关系,用于同一程序内的不同插件之间或者不同程序间的不同插件之间进行数据共享;定义xml格式的网络配置,确定发送端和接收端的地址信息;

64、需要配置业务模型和实现业务编码,业务编码根据实际业务需求进行编码,开发者按照规则对业务模型进行配置,具体配置如下:

65、开发者根据业务模型定义model模块,其内容为需要在软件全生命周期存在的数据结构,用于在软件全生命周期中,不同插件之间进行数据共享和访问;软件全生命周期指主程序运行时间内;

66、开发者根据实际应用使用场景定义packet模块,其内容为数据报文协议格式,用于确定udp报文发送时对报文的填充和udp报文接收时对报文的解析;

67、开发者根据实际应用场景定义network模块,其内容为作为接收端的本机ip地址和端口号,以及对接收到的报文进行解析,所需的报文格式对应的报文id;

68、开发者根据业务模型和实际应用场景定义mapping模块,其内容分为两部分:

69、发送端映射:定义本机发送的报文的接收端的目的ip地址和端口号;定义模型节点名称与报文属性名的绑定关系,二者绑定后,在发送报文时,将模型节点名称的值赋值给报文属性名,通过udp通信模块发送到指定目的ip地址和端口的接收端;模型节点名称来源于model模块,报文属性名来源于packet模块;

70、接收端映射:接收端指本机,定义本机udp监听的ip和端口,以及报文id;定义报文属性名和模型节点名称的绑定关系,二者绑定后,在接收到指定报文id的报文时,将报文属性名的值赋值给模型节点名称,用于更新前述模型数据处理模块中存储的全生命周期数据结构,以供所有插件进行同步更新和访问;报文属性名来源于packet模块,模型节点名称来源于model模块。

71、优选地,在所述步骤s2中:

72、所述插件加载包括对插件的加载、接口调用以及卸载;所述数据完整性校验,为对插件进行包括界面、数据、配置文件的完整性检查;所述数据转发为将已处理的模型数据转发给插件模块,或者是将插件模块的待处理的数据转发给模型数据处理模块;

73、需要配置插件管理模块,实现对不同类型插件的加载,该模块启动过程需要对插件包括界面、数据、配置文件的完整性检查,错误的插件不会被加载;

74、实现在同一屏幕内对插件进行任意动态分隔布局并且无需重启应用程序;能够使插件被其他插件引用调用;能够管理后台服务插件;能够与插件之间进行数据交互;能够使插件进行任意布局;能够对插件进行快照配置,以便程序下次启动时能恢复到用户上次退出时的状态;

75、插件的加载与布局基于qt5现有的低阶api,采用动态加载方式进行加载;使用udp通信,使得不同机器上的插件进行交互,做到前后端分离;

76、插件的数据交互为udp通信,基于xml格式的业务数据解析,以及业务数据与报文之间的格式转换;

77、快照配置是指暂停该插件的进程,保持插件内数据缓存,暂停该插件与其他插件的数据交互;

78、任意布局为窗口能够上下左右分屏或者缩放;将已处理的模型数据转发给插件模块,或者是将插件模块的待处理的数据转发给所模型数据处理模块。

79、优选地,在所述步骤s3中:

80、所述业务模型为开发者定义的xml格式的数据结构;所述存储的目的是为软件提供全生命周期的模型数据;所述转发为将已处理的模型数据转发给udp通信模块或插件管理模块;

81、需要配置模型数据处理模块,实现对业务模型的解析、存储与转发;所述业务模型为业务模型的数据结构;所述存储的目的是将模型数据进行存储,为所有插件提供全生命周期的模型数据;所述转发为将按照mapping模块映射关系进行处理的已处理的模型数据,以报文形式转发给udp通信模块,或者以模型数据形式转发给插件管理模块;

82、业务数据转换为model模块里的数据结构后,通过mapping模块映射到packet模块里的报文,再通过udp通信模块发送到指定目标插件;

83、首先存储在产生业务数据的插件中,数据发送到目标插件后,目标插件根据需要进行存储,源插件根据需求可持续存储或者删除;

84、存储格式为model模块里定义的数据结构;

85、生命周期的模型数据将该业务数据持续的以model模块里定义的格式进行存储,一直到插件结束。

86、优选地,在所述步骤s4中:

87、所述报文格式为开发者定义的xml格式的报文配置;所述将业务模型数据按报文格式进行发送,指的是将报文按照定义的接收端地址进行发送;所述对接收到的报文进行解析,指的是根据本地端口和报文id的绑定关系,将接收到的报文按照报文格式进行解析,并转发给模型数据处理模块进行处理和存储,再由模型数据处理模块转发给插件管理模块,由其通知所有订阅该数据消息的插件进行数据更新;

88、配置udp通信模块,把模型数据按照报文格式进行发送,以及对接收到的报文进行解析,报文格式为的packet模块内容;

89、把模型数据按照报文格式进行发送,具体为:

90、将报文数据,按照mapping模块中的设定的目的ip地址和端口,进行报文发送;

91、所述对接收到的报文进行解析,具体为:

92、根据network模块中本地端口号绑定的报文id,找到packet模块里对应的报文格式,对接收到的报文进行解析;

93、将已解析的报文转发给模型数据处理模块

94、基于对接收到的报文进行解析操作,后续处理如下:

95、模型数据处理模块根据报文和数据模型的映射关系,将接收到的报文按照mapping模块中的格式进行解析,处理成模型数据,并存储模型数据;

96、模型数据处理模块将已处理数据转发给插件管理模块;插件管理模块在收到数据后,通知所有订阅该数据消息的插件进行数据更新。

97、与现有技术相比,本发明具有如下的有益效果:

98、1、本发明提供一种基于qt的模块插件化的通信方法,用于解决编码繁琐、协同开发困难和代码重用性低的问题。

99、2、本发明提供了一种新的qt项目开发组成结构,并将其中三个模块进行了集成,在第一次实施后,后续其他项目可以复用。

100、3、本发明提供了人性化且严格的api开发规范和标准,即model.xml、packet.xml、network.xml和mapping.xml,开发者在后续项目开发中只需按照本发明提供的规范和标准进行开发,即可降低项目开发难度,提高项目开发效率,缩短项目开发周期,减少项目开发成本。


技术特征:

1.一种基于qt的模块插件化通信系统,其特征在于,包括:

2.根据权利要求1所述的基于qt的模块插件化通信系统,其特征在于,在所述udp通信模块中:

3.根据权利要求1所述的基于qt的模块插件化通信系统,其特征在于,在所述模型数据处理模块中:

4.根据权利要求1所述的基于qt的模块插件化通信系统,其特征在于,在所述插件管理模块中:

5.根据权利要求1所述的基于qt的模块插件化通信系统,其特征在于,在所述插件模块中:

6.一种基于qt的模块插件化通信方法,其特征在于,采用权利要求1-5任一项所述的基于qt的模块插件化通信系统,执行包括:

7.根据权利要求6所述的基于qt的模块插件化通信方法,其特征在于,在所述步骤s1中:

8.根据权利要求6所述的基于qt的模块插件化通信方法,其特征在于,在所述步骤s2中:

9.根据权利要求6所述的基于qt的模块插件化通信方法,其特征在于,在所述步骤s3中:

10.根据权利要求6所述的基于qt的模块插件化通信方法,其特征在于,在所述步骤s4中:


技术总结
本发明提供了一种基于QT的模块插件化通信系统及方法,包括:UDP通信模块:为软件提供基于网卡的报文通信功能;模型数据处理模块:为软件提供全生命周期的模型数据;插件管理模块:能够加载不同类型的插件;插件模块:用户根据业务进行编码实现,并生成插件。本发明提供一种基于QT的模块插件化的通信方法,用于解决编码繁琐、协同开发困难和代码重用性低的问题。

技术研发人员:黄陆瑶,蔡运隆,张孝,陈宏焜,秦猛,朱慧芳
受保护的技术使用者:中国兵器装备集团上海电控研究所
技术研发日:
技术公布日:2024/12/17
转载请注明原文地址:https://xbbs.6miu.com/read-23576.html