一种树表结合驱动特定平台通讯协议源代码自动生成方法

文档序号:6548020阅读:228来源:国知局
一种树表结合驱动特定平台通讯协议源代码自动生成方法
【专利摘要】本发明公开了一种树表结合驱动特定平台通讯协议源代码自动生成方法,包括数据帧建模管理模块、源代码自动生成模块、代码仿真检验模块和开发包构建模块。与现有源代码自动生成方法相比,本发明首先采用树形结构结合二维表格描述数据帧格式,完成对数据帧的建模。以此实现数据包的通讯层代码组织,然后调用相关配置,基于相关规则驱动自动生成c++/c#等语言平台的通讯数据帧编码与解码源代码,从而实现数据帧描述表格的修改直接驱动通讯代码自动生成,实现自动生成代码的测试检验,方便应用程序集成调用,可大大减少了通讯协议自身修改导致的代码修改与联合调试的工作周期,以及由代码修改引起系统错误发生的情况。
【专利说明】一种树表结合驱动特定平台通讯协议源代码自动生成方法
【技术领域】
[0001]本发明涉及一种应用程序中协议源代码实现技术,尤其涉及一种树表结合驱动特定平台通讯协议源代码自动生成方法。
【背景技术】
[0002]传统的通讯协议源程序自动生成技术大多基于ASN.1、SDL或TTCN等数据帧建模语言技术实现的,对于企业中应用软件开发人员来说,这些数据帧建模语言存在一定的学习曲线,导致目前在企业分布式应用程序中代码自动生成技术应用并不广泛,大多通讯程序仍然依靠软件开发人员直接解读相关指定的通讯协议原始文档来手动编程,从数学的角度来说,由于采用自然语言描述的通讯协议规范文档缺乏一定的严谨性,加之部分软件开发人员对执行通讯协议规范重要程度不够,因此很多应用系统最终都无法满足相关通讯协议标准规范的要求,或部分满足。另外在应用系统研制过程中随着相关需求变化,往往会带来大量通讯层协议的修改,也会导致通讯代码修改、联合调试等工作的反复,这些机械而重复的修改与通讯调试工作占用了软件开发人员宝贵的研发精力,而且人工修改代码容易导致系统出错。这些因素综合起来导致企业各分布式应用系统互联互通测试周期长、协调难度大,对企业应用互操作一体化建设带来了较大的难度与成本。

【发明内容】

[0003]本发明的目的就在于提供一种结合目前大多数企业应用软件开发人员比较习惯应用二维表格来描述分布式应用程序中涉及的通讯协议用树与表格联合描述通讯协议,并基于其驱动特定平台的源代码自动生成方法与技术,并解决上述问题的基于树形结构结合表格驱动的特定平台通讯协议源代码自动生成方法。
[0004]为了实现上述目的,本发明采用的技术方案是:一种树表结合驱动特定平台通讯协议源代码自动生成方法,包括数据帧建模管理模块、源代码自动生成模块、代码仿真检验模块和开发包构建模块,
[0005]数据帧建模管理模块对于任何一个数据帧,均建立一个数据帧工程,然后通过数据帧建模管理工具,采用树与表结构结合的方式实现对数据帧分段管理、段内数据结构管理与数据帧校验位管理;
[0006]源代码自动生成模块,首先采用数据业务视图、数据结构视图与数据流视图三层来构建数据包的数据结构,以此实现数据包的通讯层代码组织,然后调用相关配置,基于相关规则驱动自动生成c++/c#等语言平台的通讯数据帧编码与解码源代码,从而实现数据帧描述表格的修改直接驱动通讯代码自动生成;
[0007]代码仿真检验模块,该模块在源代码自动生成模块自动生成编解码源代码基础上,同时生成一组入口与调用代码,然后调用第三方编译程序,生成源代码仿真程序,配合相关通讯测试用例数据,实现自动生成代码的测试检验;
[0008]开发包构建模块,该模块主要实现对经过代码仿真检验模块仿真检验合格的源代码封装为可被其他应用调用的开发包;
[0009]作为优选,所述源代码自动生成模块分为数据结构源代码生成和编解码的源代码生成,所述数据结构源代码生成分为数据业务层数据类生成、数据结构层数据类生成和数据流层数据类生成:所述编解码的源代码生成分为编码函数源代码生成和解码函数源代码生成;
[0010]作为优选,所述数据业务层数据类生成过程,首先从数据帧建模管理模块构建数据帧形式化描述的树状图,然后构建相关数据结构信息,首先采用深度优先的原则标记出整棵树中其子节点为数据结构节点的数据分段节点,同时生成其数据类信息,然后根据树节点由深到浅一层一层的生成其数据类信息;
[0011]数据结构层数据类生成过程,数据结构层的数据类信息分为两种情况,第一种情况如果所有分段均为固定长度,则数据类采用一维平面结构,首先从数据帧建模管理模块构建数据帧形式化描述的树状图,采用深度优先的原则,由根节点到数据结构节点经过的所有分段节点缩写名采用分割符号串接后生成最终数据类的属性名;第二种情况如果所有分段存在非固定长度,则采用多层结构,其数据类结构生成方法采用非固定长度的数组形式确定,其长度可以在运行时确定;
[0012]数据流层数据类生成过程,主要为BYTE格式数组,其长度可以在运行时确定;
[0013]作为优选,编码函数源代码生成过程,该编码函数的输入为数据业务层数据类对象,输出为数据流信息,对于非固定长度数据帧根据数据业务层数据类对象相关数组个数确定数据流运行时长度与部分数据结构层数据类对象运行时长度,并将具体长度信息写入长度确定位中,在确定长度基础上,首先根据数据结构节点的编码代码确定每个数据结构层数据类对象中属性的编码过程,然后将数据结构层数据类对象按照树节点的组织顺序写入数据流中,完成最终数据流组装,同时根据设置确定是否在每个变换环节加入日志记录代码;
[0014]解码函数源代码生成过程,该编码函数的输入为数据流信息,输出为数据业务层数据类对象,对于非固定长度数据帧根据数据业务层数据类对象相关数组个数确定数据流运行时长度与部分数据结构层数据类对象运行时长度,进行指定帧的长度确定位,然后将数据流信息分段写入数据结构层数据类对象属性,然后将数据结构层数据对象属性按照结构一一对应的解码并赋值给数据业务层数据类对象属性,完成解码过程,同时根据设置确定是否在每个变换环节加入日志记录代码。
[0015]与现有技术相比,本发明的优点在于:本发明首先采用树形结构结合二维表格描述数据帧格式,完成对数据帧的建模。在代码自动生成过程中,将数据通讯分为接收端与发送端,两端均分为数据业务视图、数据结构视图与数据流视图三层来构建数据包的数据结构,以此实现数据包的通讯层代码组织,然后调用相关配置,基于相关规则驱动自动生成c++/c#等语言平台的通讯数据帧编码与解码源代码,从而实现数据帧描述表格的修改直接驱动通讯代码自动生成。在生成编解码程序基础上,同时生成一组入口与调用代码,然后调用第三方编译程序,生成源代码仿真程序,配合相关通讯测试用例数据,实现自动生成代码的测试检验,在代码自动生成并仿真检验通过后,调用相关第三方编译程序生成特定平台的动态链接库文件(如windows平台下的dll文件),方便应用程序集成调用。本发明可大大减少了通讯协议自身修改导致的代码修改与联合调试的工作周期,以及由代码修改引起系统错误发生的情况。
【专利附图】

【附图说明】
[0016]图1为本发明系统结构框图;
[0017]图2为某分布式系统的多设备状态监视数据帧组成结构图;
[0018]图3为仿真运行分析模块消息序列图生成流程图;
[0019]图4为数据帧开发包构建流程图;
[0020]图5为编码与解码仿真程序运行结构流程图。
【具体实施方式】
[0021]实施例:下面将对本发明作进一步说明,一种基于树形结构结合表格驱动的特定平台通讯协议源代码自动生成方法,具体包括:数据帧建模管理模块、源代码自动生成模块、代码仿真检验模块和开发包构建模块,如图1所示;
[0022]一、数据帧建模管理模块:
[0023]对于任何一个数据帧,均需要建立一个数据帧工程,然后通过数据帧建模管理工具,采用自顶向下、逐层细化的方式对其描述,本模块采用树与表结构结合的方式实现对数据帧结构的,具体包括:数据帧分段管理、段内数据结构管理与数据帧校验位管理。
[0024]I)数据帧分段管理
[0025]按照设计人员理解习惯将数据帧分为几个抽象段,每个段包含的特征信息如下:分段编号、分段英文名称、分段中文名称、分段缩写英文名、长度是否固定、是否为数组形式、数组长度,上述抽象段组合后构成一个完整数据帧,抽象段可以层层嵌套,直至最终数据结构为止,数据帧分段类似树结构的中间节点,数据节点类似树结构的叶子。
[0026]2)段内数据结构管理
[0027]段内数据结构一般米用一个表格来表不,每一行信息代表一个段内属性信息,每一列代表一个属性信息的特征信息,特征信息主要包括:属性编号、属性英文名称、属性中文名称、属性缩写英文名、长度是否固定、是否为数组形式、数组长度、数据类型、映射字节长度、取值范围、缺省值、是否业务层属性、描述信息、编码代码、解码代码、长度确定位标识(填写分段或者属性名称)。其中基本数据类型主要包括:uint8、uintl6、uint32、int8、intl6、int32、byte、bool、enum、float、double 和 string,其语义同 C# 语义相同。
[0028]一般数据帧采用两层描述方式,更加简单的数据帧甚至可以忽略分段信息,将数据帧就分为一段,直接采用段内数据结构一层结构描述。
[0029]3)数据帧校验位管理
[0030]在编辑完成数据帧分段信息与段内数据结构信息基础上,设计人员需要指出哪个段属于数据帧校验位所在分段,以及该段中哪个属性属于校验位,包括校验位的计算方法(如CRC校验,需要指定计算覆盖的范围和赋值方式等信息)。
[0031]以图2中数据帧来说,该环节主要完成对设备状态监视数据帧的抽象段建模,该数据帧包括三个抽象段:报文头,报文内容和报文尾,三者共同组成整个数据帧,抽象段信息描述如表I所示,报文头段内数据结构对属性:报文标识、报文长度、信源标识、信宿标识、报文序号、报文发送时刻做详细的信息编辑,报文内容段内数据结构对属性:设备类型、设备数量、设备状态做详细的信息编辑,报文尾段内数据结构对属性:报尾预留与CRC校验位做详细的信息编辑,由于内容较多,在此不再一一赘述。
[0032]表1设备状态监视数据帧分段信息描述表
【权利要求】
1.一种树表结合驱动特定平台通讯协议源代码自动生成方法,其特征在于:包括数据帧建模管理模块、源代码自动生成模块、代码仿真检验模块和开发包构建模块, 数据帧建模管理模块对于任何一个数据帧,均建立一个数据帧工程,然后通过数据帧建模管理工具,采用树与表结构结合的方式实现对数据帧分段管理、段内数据结构管理与数据帧校验位管理; 源代码自动生成模块,首先采用数据业务视图、数据结构视图与数据流视图三层来构建数据包的数据结构,以此实现数据包的通讯层代码组织,然后调用相关配置,基于相关规则驱动自动生成C++/C#等语言平台的通讯数据帧编码与解码源代码,从而实现数据帧描述表格的修改直接驱动通讯代码自动生成; 代码仿真检验模块,该模块在源代码自动生成模块自动生成编解码源代码基础上,同时生成一组入口与调用代码,然后调用第三方编译程序,生成源代码仿真程序,配合相关通讯测试用例数据,实现自动生成代码的测试检验; 开发包构建模块,该模块主要实现对经过代码仿真检验模块仿真检验合格的源代码封装为可被其他应用调用的开发包。
2.根据权利要求1所述的一种树表结合驱动特定平台通讯协议源代码自动生成方法,其特征在于:所述源代码自动生成模块分为数据结构源代码生成和编解码的源代码生成,所述数据结构源代码生成分为数据业务层数据类生成、数据结构层数据类生成和数据流层数据类生成:所述编解码的源代码生成分为编码函数源代码生成和解码函数源代码生成。
3.根据权利要求2所述的一种树表结合驱动特定平台通讯协议源代码自动生成方法,其特征在于: 所述数据业务层数据类生成过程,首先从数据帧建模管理模块构建数据帧形式化描述的树状图,然后构建相关数据结构信息,首先采用深度优先的原则标记出整棵树中其子节点为数据结构节点的数据分段节点,同时生成其数据类信息,然后根据树节点由深到浅一层一层的生成其数据类信息; 数据结构层数据类生成过程,数据结构层的数据类信息分为两种情况,第一种情况如果所有分段均为固定长度,则数据类采用一维平面结构,首先从数据帧建模管理模块构建数据帧形式化描述的树状图,采用深度优先的原则,由根节点到数据结构节点经过的所有分段节点缩写名采用分割符号“串接后生成最终数据类的属性名;第二种情况如果所有分段存在非固定长度,则采用多层结构,其数据类结构生成方法采用非固定长度的数组形式确定,其长度可以在运行时确定; 数据流层数据类生成过程,主要为BYTE格式数组,其长度可以在运行时确定。
4.根据权利要求2所述的一种树表结合驱动特定平台通讯协议源代码自动生成方法,其特征在于: 编码函数源代码生成过程,该编码函数的输入为数据业务层数据类对象,输出为数据流信息,对于非固定长度数据帧根据数据业务层数据类对象相关数组个数确定数据流运行时长度与部分数据结构层数据类对象运行时长度,并将具体长度信息写入长度确定位中,在确定长度基础上,首先根据数据结构节点的编码代码确定每个数据结构层数据类对象中属性的编码过程,然后将数据结构层数据类对象按照树节点的组织顺序写入数据流中,完成最终数据流组装,同时根据设置确定是否在每个变换环节加入日志记录代码;解码函数源代码生成过程,该编码函数的输入为数据流信息,输出为数据业务层数据类对象,对于非固定长度数据帧根据数据业务层数据类对象相关数组个数确定数据流运行时长度与部分数据结构层数据类对象运行时长度,进行指定帧的长度确定位,然后将数据流信息分段写入数据结构层数据类对象属性,然后将数据结构层数据对象属性按照结构一一对应的解码并赋值给数据业务层数据类对象属性,完成解码过程,同时根据设置确定是否在每个变换环节加入 日志记录代码。
【文档编号】G06F11/36GK103984555SQ201410233790
【公开日】2014年8月13日 申请日期:2014年5月29日 优先权日:2014年5月29日
【发明者】张子利, 范亚, 周保琢, 唐经天, 张波, 王诗利, 刘正敏, 宋勇 申请人:四川航天系统工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1