一种打解包程序生成方法及装置
技术领域
本申请涉及***测试技术领域,特别是涉及一种打解包程序生成方法及装置。
背景技术
在***测试领域中,被测***往往由多个相互交联的设备组成,我们称这些设备为参试设备。被测***中的各个参试设备之间需要进行通信,为了使各个参试设备之间的通讯信息被对方识别,被测***中的各个参试设备之间的接口类型、通讯逻辑、通讯方式、通讯协议和/或数据规范等通讯参数应当是统一的,被测***中主要通过ICD(InterfaceControl Document,接口控制文件)中的报文来对上述各个通讯参数进行统一。
测试***主要通过打解包程序对各个参试设备之间传输的信息进行报文和数据的相互转换,现有技术打解包程序在开发过程中,首先需要获取被测***的ICD,然后才可以根据该被测***的ICD,手动编写针对该特定被测***ICD的打解包程序,进而实现打解包功能。
因此,现有技术往往导致如下问题:
1)、需要针对不同的被测***ICD开发不同的打解包程序,导致不同的被测***无法实现通用的打解包程序。
2)、当被测***ICD变更时,与该被测***相对应的打解包程序需要根据变更后的ICD进行重新设计,不能及时适应变更。
3)、当为了保证被测***的ICD的安全性,需要对被测***ICD进行保密时,开发人员无法根据被测***ICD进行设计生成相应的打解包程序。
发明内容
有鉴于此,本申请实施例提供一种打解包程序生成方法及装置,自动生成与接收到的ICD相对应的打解包程序,使得在保证被测***ICD安全性的基础上,满足打解包程序的通用性、提高打解包程序的即时适应变更能力。
为了实现上述目的,本申请实施例提供的技术方案如下:
一种打解包程序生成方法,包括:
接收用户输入的包含有至少一条报文的ICD;
分别对该ICD中的每条报文定义位域结构体;
利用预先设置的打解包函数生成规则,分别生成与各个所述位域结构体相对应的打解包函数;
利用各个所述位域结构体,对生成的分别与各个所述位域结构体相对应的打解包函数进行编译,生成打解包程序。
优选的,所述分别对该ICD中的每条报文定义位域结构体包括:
分别为该ICD中的每条报文分配一个唯一的位域结构体名称;
分别为每条所述报文中的各个变量定义结构体成员,每条所述报文中的各个变量定义的结构体成员名称唯一,各个所述结构体成员的类型由该结构体成员所对应的变量所在报文的报文总长度决定,各个所述结构体成员的长度与该结构体成员所对应变量的变量长度相同。
优选的,还包括:分别对每条所述报文中变量未占满的区域定义结构体成员。
优选的,所述预先设置的打解包函数生成规则包括:预先设置的打包函数生成规则以及预先设置的解包函数生成规则。
优选的,所述预先设置的打包函数生成规则包括:
创建与位域结构体相对应的位域结构体变量;
将接收到的待打包的各个变量值分别赋值给相应的所述位域结构体变量中的结构体成员;
将所述位域结构体变量内存拷贝到报文指针;
返回所述报文指针。
优选的,所述预先设置的解包函数生成规则包括:
创建与位域结构体相对应的位域结构体变量;
将接收到的待解包报文的报文内存拷贝到位域结构体变量中;
将所述位域结构体变量中各个结构体成员的值分别赋值给与该结构体成员相对应的变量指针;
返回各个所述变量指针。
优选的,所述接收用户输入的包含有至少一条报文的ICD,包括:
接收用户通过预先设置的ICD定义界面输入的包含有至少一条报文的ICD或,
接收用户通过导入ICD的方式输入的包含有至少一条报文的ICD。
优选的,还包括:对接收到的用户输入的ICD进行存储。
优选的,还包括:通过预先设置的所述ICD定义界面对存储的ICD进行显示和/或修改。
一种打解包程序生成装置,包括:ICD接收单元、位域结构体定义单元、打解包函数生成单元以及打解包程序生成单元,其中,
所述ICD接收单元用于接收用户输入的包含有至少一条报文的ICD;
所述位域结构体定义单元与所述ICD接收单元相连接,用于分别对该ICD中的每条报文定义位域结构体;
所述打解包函数生成单元与所述位域结构体定义单元相连接,用于利用预先设置的打解包函数生成规则,分别生成与各个所述位域结构体相对应的打解包函数;
所述打解包程序生成单元的一端与所述位域结构体定义单元相连接,另一端与所述打解包函数生成单元相连接,用于利用各个所述位域结构体,对生成的分别与各个所述位域结构体相对应的打解包函数进行编译,生成打解包程序。
本发明提供一种打解包程序生成方法及装置,首先接收用户输入的包含有至少一条报文的ICD,然后分别对ICD中的每条报文定义位域结构体,并利用预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数,最后利用各个位域结构体,对生成的分别与各个位域结构体相对应的打解包函数进行编译,生成打解包程序,在该过程中通过对接收到的用户输入的ICD中的各个报文定义位域结构体,并最终根据定义的位域结构体以及预先设置的打解包函数生成规则自动生成与该ICD相对应的打解包程序,使得在保证被测***ICD安全性的基础上,满足打解包程序的通用性、提高打解包程序的即时适应变更能力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种打解包程序生成方法的流程图;
图2为本申请实施例二提供的一种分别对ICD中的每条报文定义位域结构体的方法流程图;
图3为本申请实施例三提供的一种打解包程序生成装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一:
图1为本申请实施例一提供的一种打解包程序生成方法的流程图。
如图1所示,该方法包括:
S101、接收用户输入的包含有至少一条报文的ICD。
在本申请实施例中,优选的,接收到的用户输入的ICD中包括:至少一条报文以及分别与每条报文相对应的报文总长度、每条报文中包含的变量以及分别与每个变量相对应的变量长度、变量类型、变量单位等。
在本申请实施例提供的打解包程序生成方法中,优选的,预先设置有ICD接口,用户可以利用该ICD接口,通过导入ICD的方式直接导入包含有至少一条报文的ICD,或者,在预先设置有ICD接口的基础上还预先设置有ICD定义界面,用户可以利用该ICD接口,通过手动输入的方式在ICD定义界面上输入包含有至少一条报文的ICD。
以上仅仅为本申请实施例的优选方式,发明人还可以根据自己的需求任意设置用户输入ICD的方式,在此不做限定。
S102、分别对该ICD中的每条报文定义位域结构体。
在本申请实施例中,当接收到用户输入的包含有至少一条报文的ICD后,需要分别对该ICD中的每条报文定义位域结构体,其中,优选的,分别为ICD中的每条报文定义位域结构体的过程请参见实施例二。
S103、利用预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数。
在本申请实施例中,预先设置有打解包函数生成规则,当对接收到的ICD中的每条报文定义位域结构体后,还需要利用该预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数。其中,该预先设置的打解包函数生成规则包括:预先设置的打包函数生成规则以及预先设置的解包函数生成规则。
优选的,在本申请实施例中,预先设置的打包函数生成规则为:创建与位域结构体相对应的位域结构体变量;将接收到的待打包的各个变量值分别赋值给相应的位域结构体变量中的结构体成员;将位域结构体变量内存拷贝到报文指针,并返回该报文指针。
优选的,在本申请实施例中,预先设置的解包函数生成规则为:创建与位域结构体相对应的位域结构体变量;将接收到的待解包报文的报文内存拷贝到位域结构体变量中,将位域结构体变量中各个结构体成员的值分别赋值给与该结构体成员相对应的变量指针,并返回各个变量指针。
以上仅仅是本申请实施例提供的打解包函数生成规则的优选方式,发明人还可以根据自己的需求任意设置打解包函数的生成规则,在此不做限定。
S104、利用各个位域结构体,对生成的分别与各个位域结构体相对应的打解包函数进行编译,生成打解包程序。
在本申请实施例中,当根据预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数后,还需要对生成的打解包函数进行编译才可以生成计算机可以识别的语言,即:打解包程序。
优选的,在本申请实施例中,在对打解包函数进行编译的过程中,需要利用与该打解包函数相对应的位域结构体才可以实现编译过程,其中,本申请实施例中对打解包函数进行编译的具体过程与现有技术相同,详细描述请参考现有技术,在此不作详细介绍。
进一步的,在本申请实施例提供的一种打解包程序生成方法中,还包括:
对接收到的用户输入的ICD进行存储。
进一步的,在本申请实施例提供的一种打解包程序生成方法中,还包括:
通过预先设置的ICD定义界面对存储的ICD进行显示和/或修改。
在本申请实施例中,预先设置有ICD定义界面,通过该预先设置的ICD定义界面,可以显示存储的ICD,并且用户还可以对在该ICD定义界面上显示的ICD进行修改,进而生成与修改后的ICD相对应的打解包程序。
本发明提供一种打解包程序生成方法,首先接收用户输入的包含有至少一条报文的ICD,然后分别对ICD中的每条报文定义位域结构体,并利用预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数,最后利用各个位域结构体,对生成的分别与各个位域结构体相对应的打解包函数进行编译,生成打解包程序,在该过程中通过对接收到的用户输入的ICD中的各个报文定义位域结构体,并最终根据定义的位域结构体以及预先设置的打解包函数生成规则自动生成与该ICD相对应的打解包程序,使得在保证被测***ICD安全性的基础上,满足打解包程序的通用性、提高打解包程序的即时适应变更能力。
实施例二:
图2为本申请实施例二提供的一种分别对ICD中的每条报文定义位域结构体的方法流程图。
如图2所示,该方法包括:
S201、分别为ICD中的每条报文分配一个唯一的位域结构体名称。
在本申请实施例中,当分别对ICD中的每条报文定义位域结构体的过程中,首先需要分别为该ICD中包含的每条报文分配一个唯一的位域结构体名称,优选的,该用户输入的ICD中包含的每条报文的名称唯一,分别为每条报文分配的位域结构体名称与其所对应的报文的名称相同。
S202、分别为每条报文中的各个变量定义结构体成员。
在本申请实施例中,当分别为ICD中的每条报文分配一个唯一的位域结构体名称后,还需要分别为每条报文中所包括的各个变量定义结构体成员,并且对每条报文中的各个变量定义的结构体成员名称唯一,各个结构体成员的类型由该结构体成员所对应的变量所在报文的报文总长度决定,各个结构体成员的长度与该结构体成员所对应变量的变量长度相同。
在本申请实施例中,优选的,接收到的用户输入的ICD中的每条报文的名称唯一,且每条报文中的各个变量的名称唯一,分别为每条报文中的各个变量定义的结构体成员名称,为该变量所在报文的名称与该变量名称的组合。以上仅仅是本申请实施例的优选方式,发明人还可以根据自己的需求通过其他任何方式实现为每条报文中的各个变量定义的结构体名称唯一的过程。
在本申请实施例中,优选的,当接收到的ICD中的某个报文的报文总长度小于等于8比特时,分别为该报文中的各个变量所定义的结构体成员的类型为char型;当某个报文的报文总长度大于8比特,且小于等于16比特时,分别为该报文中的各个变量所定义的结构体成员的类型为short型;当某个报文的报文总长度大于16比特,且小于等于32比特时,分别为该报文中的各个变量所定义的结构体成员的类型为long型;当某个报文的报文总长度大于32比特时,分别为该报文中的各个变量所定义的结构体成员的类型为long long型,以上仅仅是本申请实施例的优选方式,发明人还可以根据自己的需求任意设计为报文中的变量定义的结构体成员的类型与该报文的报文总长度之间的关系。
如图2所示提供的一种分别对ICD中的每条报文定义位域结构体的方法流程图中,进一步包括:
S203、分别对每条报文中变量未占满的区域定义结构体成员。
在本申请实施例中,接收到的用户发送的ICD所包括的报文中可能存在该报文中的变量未占满的区域,当某个报文中存在变量未占满的区域(即:该报文中存在空白区域)时,则分别对该报文中的各个变量未占满的区域(即:报文中的各个空白区域)定义结构体成员,其中,优选的,为变量未占满的区域定义的结构体成员名称为null-n,其中,n表示该变量未占满的区域为该报文中的第几个变量未占满的区域;为变量未占满的区域定义的结构体成员的类型由该变量未占满的区域所在报文的报文总长度决定;为变量未占满的区域定义的结构体成员的长度与该变量未占满的区域的长度相同。
本申请实施例提供一种分别对ICD中的每条报文定义位域结构体的方法,通过对分别对ICD中每条报文定义位域结构体的方法的详细描述与介绍,使得本申请提供的打解包程序生成方法中的对ICD中的每条报文定义位域结构体的方法更加清晰、完整。
实施例三:
图3为本申请实施例三提供的一种打解包程序生成装置的结构示意图。
如图3所示,该装置包括:ICD接收单元1、位域结构体定义单元2、打解包函数生成单元3以及打解包程序生成单元4,其中,ICD接收单元1、位域结构体定义单元2、打解包函数生成单元3以及打解包程序生成单元4依次相连接。
ICD接收单元1主要用于接收用户输入的包含有至少一条报文的ICD。
位域结构体定义单元2与ICD接收单元1相连接,该位域结构体定义单元2用于分别对该ICD中的每条报文定义位域结构体。
打解包函数生成单元3与位域结构体定义单元2相连接,该打解包函数生成单元3用于利用预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数。
打解包程序生成单元4的一端与位域结构体定义单元2相连接,另一端与打解包函数生成单元3相连接,该打解包程序生成单元4用于利用各个位域结构体,对生成的分别与各个位域结构体相对应的打解包函数进行编译,生成打解包程序。
本发明提供一种打解包程序生成装置,包括ICD接收单元、位域结构体定义单元、打解包函数生成单元以及打解包程序生成单元,首先通过ICD接收单元接收用户输入的包含有至少一条报文的ICD,然后通过位域结构体定义单元分别对ICD中的每条报文定义位域结构体,并通过打解包函数生成单元利用预先设置的打解包函数生成规则,分别生成与各个位域结构体相对应的打解包函数,最后通过打解包程序生成单元利用各个位域结构体,对生成的分别与各个位域结构体相对应的打解包函数进行编译,生成打解包程序,该装置通过对接收到的ICD中的各个报文定义位域结构体,并最终根据定义的位域结构体以及预先设置的打解包函数生成规则自动生成与该ICD相对应的打解包程序,使得在保证被测***ICD安全性的基础上,满足打解包程序的通用性、提高打解包程序的即时适应变更能力。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上仅是本申请的优选实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。