一种仿真系统中通用的模型数据编码和解码方法

文档序号:10593208阅读:447来源:国知局
一种仿真系统中通用的模型数据编码和解码方法
【专利摘要】本发明公开了一种仿真系统中通用模型数据的编码和解码方法。方法包括创建类型为可变长数组类型的变量port_va,读取数据映射表中未处理的数据值,根据数据类型,对数据进行相应的处理,将处理后的数据值通过编码转换为可传输字节流数据,创建类型为不透明字节块类型的变量data_opa,用可传输字节流数据将data_opa初始化,创建类型为固定结构类型的变量port_rec,将port_rec添加到port_va中,调用port_va的编码接口,编码生成满足HLA协议底层传输要求的字节流数据。本发明提供的编码或解码方法可以实现对常用的多种数据类型进行统一表示,可以增加代码的重用性和仿真模型间的互操作性。
【专利说明】
-种仿真系统中通用的模型数据编码和解码方法
技术领域
[0001] 本发明设及仿真系统领域,特别是设及一种仿真系统中通用的模型数据编码和解 码方法。
【背景技术】
[0002] 随着计算机软硬件技术的发展,日趋成熟的分布式仿真技术为航空、航天、军事、 交通、能源、经济等领域的大规模复杂系统仿真提供了高效可靠的解决方案。高级体系架构 化igh Level Architecture,简写为HLA)分布式仿真协议是由美国国防部(DoD)建模与仿 真办公室(DMSO)于上世纪九十年代中期提出来的。HLA的宗旨是解决分布式仿真系统中各 仿真成员的重用性和成员间的互操作性问题。从提出至今,HLA不断被发展完善,先后形成 了3个版本,分别是DMSO HLAl.3版本、IEEE 1516-2000版本和IE趾1516-2010版本 化LAEvolved版本),其中后两者均被IE邸接收为开放性的国际标准。HLA协议通过框架与规 贝lJ(Framework and Rules)、联邦接口规范(Federate Inte;rface Specification)和对象 模型模板(Object Model Template,OMT)规范S部分对分布式仿真系统中各仿真成员的交 互进行了全面的规范化约定,通过相应的支撑服务将仿真功能实现、仿真运行管理与底层 数据通信分离,从而保证互操作性和重用性。
[0003] HLA协议对数据类型和数据编码/解码的规范化处理,减少了仿真系统集成的时间 和风险。但是,对于不同的仿真系统,特别是复杂大型系统的仿真,往往包含大量复杂的自 定义数据类型,无法直接用化A协议中提供的数据类型进行表示,需要利用HLA提供的简单 数据类型构造相应的复杂数据结构,同样需要大量的工作实现新定义的数据的编码/解码 工作。自定义的数据类型往往针对特殊的仿真系统,不仅本身的重用性差,而且所开发的仿 真模型的重用性和互操作性也较差,从而带来重复的开发工作、不必要开发成本和开发时 间。

【发明内容】

[0004] 本发明为了进一步提高仿真系统的开发效率,增加分布式仿真系统中仿真成员的 重用性和各仿真成员之间的互操作性,本发明在HLA协议的对象模型模板规范的基础上,提 供了一种HLA分布式仿真系统中通用的模型数据编码/解码方法。
[0005] 为实现上述目的,本发明提供了如下方案:
[0006] -种仿真系统中通用的模型数据编码方法,所述编码方法包括:
[0007] 为仿真模型中每一个待传输的数据分配一个唯一的标识字符串,对模型数据进行 标识;
[000引创建类型为对象模型模板规范中预定义的可变长数组类型HLA var iable Ar ray的 变量pod_va,将所述变量pod_va中的元素类型设置为对象模型模板规范中预定义的固定 结构类型HLAf ixedRecord,所述变量pcxrt_va中的每个元素均包含第一域和第二域,将所述 第一域的数据类型设置为对象模型模板规范中预定义的宽字符串类型HLAunicodeString, 将所述第二域的数据类型设置为对象模型模板规范中预定义的不透明字节块类型 HLAopaqueData;
[0009] 读取一个未处理的数据;
[0010] 判断所述数据的数据类型,根据所述数据类型,对所述数据进行与所述数据类型 相对应的编码处理,并将处理结果转换为对象模型模板规范中预定义的可传输字节流类型 化riableLengtMa化的可传输字节流数据;
[0011] 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化的变 量data_opa,用所述可传输字节流数据对所述变量data_opa进行初始化;
[0012]创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量 poパ_rec,所述变量poパ_rec包含第一数据域和第二数据域,所述第一数据域的类型设置 为对象模型模板规范中预定义的宽字符串类型HLAunicodeString,将分配给所述数据的标 识字符串赋值给所述第一数据域;所述第二数据域的类型设置为对象模型模板规范中预定 义的不透明字节块类型HLAopaqueData,将data_opa赋值给所述第二数据域;
[0013] 将所述变量pod_rec添加到所述可变长数组变量pod_va中,作为所述可变长数 组变量P〇d_va中的一个元素;
[0014] 判断是否还有未处理的数据,若还有未处理的数据,则继续对下一个未处理的数 据进行处理,若所有数据均已处理,则调用所述变量P〇d_va的编码接口,编码生成符合HLA 协议底层传输要求的字节流数据,所述字节流数据的类型为可传输字节流类型 Var iab1eLengthData。
[0015] 可选的,判断所述数据的数据类型,根据所述数据类型,对所述数据进行与所述数 据类型相对应的编码处理,具体包括:
[0016] 识别所述数据的数据类型;
[0017] 如果所述数据类型为数组类型,则采用处理数组类型数据的方法处理所述数据;
[0018] 如果所述数据类型为结构类型,则采用处理结构类型数据的方法处理所述数据;
[0019] 如果所述数据类型为简单类型,则采用处理简单类型数据的方法处理所述数据, 所述简单数据类型包括16位整型、32位整型、64位整型、单精度浮点型、双精度浮点型、布尔 型、ASCII码字符型、化icode码字符型、字节型、ASCII码字符串和化icode码字符串。
[0020] 可选的,所述采用处理数组类型数据的方法处理所述数据,具体包括:
[0021] 创建类型为对象模型模板规范中预定义的可变长数组类型HLA var iable Ar ray的 变量encode_va,并将所述变量encode_ra中的数组元素类型设置为对象模型模板规范中预 定义的不透明字节块类型HLAopaque化化;
[0022] 读取所述数据中下一个未处理的元素;
[0023] 如果所述元素为数组类型,则执行处理数组类型数据的方法处理该数组元素;如 果为结构类型,则执行处理结构类型数据的方法处理该数组元素;如果为简单类型,则执行 处理简单类型数据的方法处理该数组元素;得到对所述元素编码转换成的可传输字节流数 据;
[0024] 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化的变 量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa;
[00巧]将所述变量ele_opa添加到所述变量encode_va中;
[0026] 判断所述数据中所有元素是否已经处理,如果未处理完,则继续处理所述数据中 的下一个元素,直到处理完毕;
[0027] 创建类型为对象模型模板规范中预定义的固定结构类型的变量data_rec,所述变 量data_rec包含第一数据域和第二数据域,将所述变量data_rec的第一数据域的类型设置 为对象模型模板规范中预定义的宽字符串类型HLAunicodeString,将所述变量data_rec的 第二数据域的类型设置为对象模型模板规范中预定义的不透明字节块类型 HLAopaqueData,将所述变量data_rec的第一数据域赋值为数组类型的标识字符串va,将述 变量encode_va赋值给所述变量data_rec的第二数据域;
[00%]调用所述变量data_rec的编码接口,编码生成可传输字节流数据。
[0029] 可选的,所述采用处理结构类型数据的方法处理所述数据,具体包括:
[0030] 创建类型为对象模型模板规范中预定义的可变长数组类型HLA var iable Ar ray的 变量encode_va,并将所述变量encode_ra数组的元素类型设置为对象模型模板规范中预定 义的不透明字节块类型HLAopaque化化;
[0031] 读取所述数据中下一个未处理的数据域;
[0032] 如果所述数据域为数组类型,则执行处理数组类型数据的方法处理该数据域;如 果为结构类型,则执行处理结构类型数据的方法处理该数据域;如果为简单类型,则执行处 理简单类型数据的方法处理该数据域;得到对所述数据域编码转换成的可传输字节流数 据;
[0033] 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化的变 量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa,并将所述变量 ele_opa添加到所述变量encode_va中;
[0034] 判断所述数据中所有数据域是否已经处理,如果未处理完,则继续处理所述数据 中的下一个数据域,直到处理完毕.
[0035] 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量 data_rec,将所述变量data_rec的第一数据域的类型设置为对象模型模板规范中预定义的 宽字符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为对象模 型模板规范中预定义的不透明字节块类型HLAopaqueData,将所述变量data_rec的第一数 据域赋值为结构类型的标识字符串St,将所述变量611(3〇(16_則赋值给所述变量data_rec的 第二数据域;
[0036] 调用所述变量data_rec的编码接口,编码生成可传输字节流数据。
[0037] 可选的,所述采用处理简单类型数据的方法处理所述数据,具体包括:
[0038] 根据所述数据所属的简单类型,调用对象模型模板规范预定义的相应简单类型的 编码接口,将简单类型数据转化成可传输字节流数据,所述可传输字节流数据的类型为对 象模型模板规范中预定义的可传输字节流类型;
[0039] 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化的变 量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa;
[0040] 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量 data_rec,将所述变量data_rec的第一数据域的类型设置为对象模型模板规范中预定义的 宽字符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为对象模 型模板规范中预定义的不透明字节块类型HLAopaqueData,将所述变量data_rec的第一数 据域赋值为所述数据所属类型的类型标识字符串,将所述变量data_rec的第二数据域的值 设置为所述变量ele_opa,所述简单类型包括的数据类型的类型标识字符串为:16位整型的 类型标识字符串为i2,32位整型的类型标识字符串为i4,64位整型的类型标识字符串为i8, 单精度浮点型的类型标识字符串为f4,双精度浮点型的类型标识字符串为f8,布尔型的类 型标识字符串为bl ,ASCII码字符型的类型标识字符串为ac,化icode码字符型的类型标识 字符串为UC,字节型的类型标识字符串为bt,ASCII码字符串的类型标识字符串为as, 化icode码字符串的类型标识字符串为us;
[0041 ]调用所述变量data_rec的编码接口,编码生成可传输字节流数据。
[0042] -种仿真系统中通用的模型数据解码方法,所述解码方法包括:
[0043] 创建类型为对象模型模板规范中预定义的可变长数组类型HLA var iable Ar ray的 数组变量p〇d_va,将所述数组变量pod_va中的元素类型设置为对象模型模板规范中预定 义的固定结构类型HLAf ixedRecord,所述数组变量pod_va中的每个元素均包含第一数据 域和第二数据域,将所述第一数据域的类型设置为对象模型模板规范中预定义的宽字符串 类型HLAunicodeString,将所述第二数据域的类型设置为对象模型模板规范中预定义的不 透明字节块类型HLAopaque化化;
[0044] 调用所述数组变量pod_va的解码接口,将待解码的可传输字节流数据作为解码 接口的输入;
[0045] 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量 data_rec,将所述变量data_rec的第一数据域设置为对象模型模板规范中预定义的宽字符 串类型HLAunicodeString,将所述变量data_rec的第二数据域设置为对象模型模板规范中 预定义的不透明字节块类型HLAopaque化化;
[0046] 获取所述数组变量pod_va中一个未处理的数据元素,将该元素赋值给所述变量 data_rec;
[0047] 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化的变 量d曰te_op3;
[0048] 对所述元素进行解码,所述解码步骤包括:
[0049] 读取所述变量data_rec的第二数据域的数据,并将所述数据赋值给所述变量 d曰te_op3;
[0050] 将所述变量data_opa中存放的字节数据提取出来,并存放到类型为可传输字节流 数据类型化1'1曰13161^6]1旨1:111)曰1:曰的变量(1曰1曰_¥1(1中;
[0051 ]创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量 trans_rec,将所述变量trans_rec第一个数据域的类型设置为对象模型模板规范中预定义 的宽字符串类型HLAunicodeString;
[0化2] 调用trans_rec的解码接口,并W所述变量data_vld作为输入;
[0053] 读取所述变量trans_rec的第一数据域的字符串,赋值给变量type_st;r,所述变量 type_st;r的数据类型为对象模型模板规范中预定义的宽字符串类型HLAunicodeString;
[0054] 判断所述变量type_st;r的值,根据所述变量type_s1:;r的值对所述变量data_vld中 的数据采用与所述变量type_st;r的值相应的解码方式进行解码;
[0055] 判断所述变量pod_va的所有元素是否已经解码完全,如果否,则继续解码所述变 量pcxrt_va中的下一个元素,否则,结束解码。
[0056] 可选的,所述判断所述变量type_s化的值,根据所述变量type_sh的值对所述变 量data_vld中的数据采用与所述变量type_st;r的值相应的解码方式进行解码,具体包括:
[0057] 识别所述变量type_st;r的值;
[005引如果所述变量type_str的值为va,则采用数组类型数据解码方法对所述变量 data_vld进行解码;
[0059] 如果所述变量type_str的值为St,则采用结构类型数据解码方法对所述变量 data_vld进行解码;
[0060] 如果所述变量type_str的值为简单数据类型的标识,则采用简单类型数据解码方 法对所述变量data_vld进行解码。
[0061] 可选的,所述采用数组类型数据解码方法对所述变量data_vld进行解码,具体包 括:
[0062] 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块类型 HLAopaqueDa1:a 的可变长数组类型 HLAvariableArray;
[0063] 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入;
[0064] 获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变量 trans_rec的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素为 不透明字节块类型HLAopaque化化的可变长数组类型HLAvar iab 1 eArray;
[0065] 读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节块类型 HLAopaqueDa1:a 的变量 ele_opa 中;
[0066] 采用所述解码步骤对所述变量ele_opa进行解码;
[0067] 将所述解码返回的值添加到类型为可变长数组类型化AvariableArray的变量 dec_ele_va中,完成一个元素的解码;
[0068] 判断所述变量data_va的所有元素是否已经处理完毕,如果否,则继续处理下一个 未处理的元素,直到所述变量data_va中的所有元素处理完毕;
[0069] 读取所述变量data_rec的第一数据域与所述变量dec_ele_va中的数据值,完成所 述获取的所述数组变量pcxrt_va中的一个元素的解码。
[0070] 可选的,所述采用结构类型数据解码方法对所述变量data_vld进行解码,具体包 括:
[0071] 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块类型 HLAopaqueDa1:a 的可变长数组类型 HLAvariableArray;
[0072] 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入;
[0073] 获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变量 trans_rec的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素为 不透明字节块类型HLAopaque化化的可变长数组类型HLAvar iab 1 eArray;
[0074] 读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节块类型 HLAopaqueDa1:a 的变量 ele_opa 中;
[0075] 采用所述解码步骤对所述变量ele_opa进行解码;
[0076] 将所述解码返回的值添加到类型为固定结构类型化AfixedRecord的变量dec_ ele_rec中,完成一个元素的解码;
[0077] 判断所述变量data_va的所有元素是否已经处理完毕,如果否,则继续处理下一个 未处理的元素,直到所述变量data_va中的所有元素处理完毕;
[0078] 读取所述变量data_rec的第一数据域与所述变量dec_ele_rec中的数据值,完成 所述获取的所述数组变量P〇d_va中的一个数据元素的解码。
[0079] 可选的,所述采用简单类型数据解码方法对所述变量data_vld进行解码,具体包 括:
[0080] 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块 HLAopaqueDa1:a 类型;
[0081 ] 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入;
[0082]获取所述变量trans_rec的第二数据域的值,赋值给类型为不透明字节块类型 HLAopaqueDa1:a 的变量 dec_opa;
[008引将所述变量dec_opa存放的字节数据赋值给类型为可传输字节流类型 化;riableLengthDa1:a 的变量 dec_vld 中;
[0084] 创建与所述变量type_st;r中的值的类型相同的变量dec_bsc;
[0085] 调用所述变量dec_bsc的解码接口,将所述变量dec_vld作为输入;
[0086] 读取所述变量data_rec的第一数据域与所述变量dec_bsc,完成所获取的数组变 量pod_va中的数据元素的解码工作。
[0087] 根据本发明提供的具体实施例,本发明公开了 W下技术效果:本发明提供的编码/ 解码方法,可W实现对常用的多种数据类型,包括整型、浮点型、字符型、字符串型、数组型 和结构型等进行统一表示;可W对数组中包含数组、数组中包含结构、结构中包含结构和结 构中包含数组的复杂数据实现递归编码和解码;克服了现有技术中一种数据类型对应一套 编码、解码的代码所带来的工作量大、代码重用性低的问题,增加代码的重用性和仿真模型 间的互操作性,有效避免重互工作,缩短开发周期,降低开发成本;从根本上避免了由于编 码/解码问题造成联邦成员间的数据交互失败,缩短分布式仿真系统集成测试时间,降低系 统开发风险和成本。
【附图说明】
[0088] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可W根据运些附图 获得其他的附图。
[0089] 图1为本发明实施例HLA分布式仿真系统中通用模型数据的编码方法示意图;
[0090] 图2为本发明实施例HLA分布式仿真系统中通用模型数据的解码方法示意图。
【具体实施方式】
[0091] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0092] 本发明的目的是提供一种HLA分布式仿真系统中通用的模型数据编码/解码方法, 能够降低系统开发的风险和成本,增加代码的重用性和仿真模型间的互操作性,有效避免 重互工作。
[0093] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
[0094] 图1为本发明实施例HLA分布式仿真系统中通用的模型数据编码方法示意图,如图 1所示,本申请提供的HLA分布式仿真系统中通用的模型数据编码方法包括:
[00M]步骤101:为仿真模型中每一个待传输的数据分配一个唯一的标识字符串,对模型 数据进行标识;
[0096] 步骤102:创建类型为对象模型模板规范中预定义的可变长数组类型 HLA VariableArray的变量pod_va,将所述变量pod_va中的元素类型设置为对象模型模板 规范中预定义的固定结构类型化Af ixedRecord,所述变量pod_va中的每个元素均包含第 一域和第二域,将所述第一域的数据类型设置为对象模型模板规范中预定义的宽字符串类 型HLAunicodeString,将所述第二域的数据类型设置为对象模型模板规范中预定义的不透 明字节块类型HLAopaque化化;;
[0097] 步骤103:读取一个未处理的数据;
[0098] 步骤104:判断所述数据的数据类型,根据所述数据类型,对所述数据进行与所述 数据类型相对应的编码处理,并将处理结果转换为对象模型模板规范中预定义的可传输字 节流类型化riableLengtM)a化的可传输字节流数据;
[0099] 步骤105:创建类型为对象模型模板规范中预定义的不透明字节块类型 HLAopaque化ta的变量data_opa,用所述可传输字节流数据对所述变量da^_opa进行初始 化;
[0100 ]步骤1 0 6 :创建类型为对象模型模板规范中预定义的固定结构类型 HLAf ixedRecord的变量pod_rec,所述变量pod_rec包含第一数据域和第二数据域,所述 第一数据域的类型设置为对象模型模板规范中预定义的宽字符串类型HLAunicodeString, 将分配给所述数据的标识字符串赋值给所述第一数据域;所述第二数据域的类型设置为对 象模型模板规范中预定义的不透明字节块类型HLAopaque化ta,将data_opa赋值给所述第 二数据域;
[0101] 步骤107:将所述变量pod_rec添加到所述可变长数组变量pod_va中,作为所述 可变长数组变量P〇d_va中的一个元素素;
[0102] 步骤108:判断是否还有未处理的数据,若还有未处理的数据,则继续对下一个未 处理的数据进行处理,若所有数据均已处理,则调用所述变量P〇d_va的编码接口,编码生 成符合HLA协议底层传输要求的字节流数据,所述字节流数据的类型为对象模型模板OMT规 范中预定义的可传输字节流类型化riableLengtM)a化。
[0103] 在步骤103中,识别所述数据的数据类型,如果所述数据类型为数组类型,则采用 子编码过程1来对所示数据进行处理,如果所述数据类型为结构类型,则采用子编码过程2 来对所示数据进行处理,如果所述数据类型为简单类型,则采用子编码过程3来对所示数据 进行处理。
[0104] 子编码过程1具体包括:
[0105] 步骤Al,创建类型为对象模型模板规范中预定义的可变长数组类型 HLA VariableArray的变量encode_va,并将所述变量encode_va中的数组元素类型设置为对 象模型模板规范中预定义的不透明字节块类型HLAopaque化化。
[0106] 步骤BI,读取所处理数组数据中下一个未处理的元素。
[0107] 步骤Cl,如果步骤Bl中取出的元素为数组类型,则执行编码子过程IW处理数组类 型数据的方法处理该数组元素;如果为结构类型,则执行编码子过程2 W处理结构类型数据 的方法处理该数组元素;如果为简单类型,则执行编码子过程1W处理简单类型数据的方法 处理该数组元素;从而将步骤3中所处理的数组元素通过编码转换为OMT规范中预定义的可 传输字节流数据(化r iab 1 eLengthDa1:a)。
[0108] 步骤Dl,创建类型为对象模型模板规范中预定义的不透明字节块类型 HLAopaque化化的变量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_ op曰O
[0109] 步骤El:将所述变量ele_opa添加到所述变量encode_va中。
[0110] 步骤Fl,判断所处理数组数据中所有元素是否已经处理。如果未处理完,则转到步 骤Bl继续处理所处理数组数据中的下一个元素;否则,转到下一步。
[0111] 步骤Gl,创建类型为对象模型模板规范中预定义的固定结构类型的变量data, rec,所述变量data_rec包含第一数据域和第二数据域,将所述变量data_rec的第一数据域 的类型设置为对象模型模板规范中预定义的宽字符串类型HLAunicodeString,将所述变量 data_rec的第二数据域的类型设置为对象模型模板规范中预定义的不透明字节块类型 HLAopaqueData,将所述变量data_rec的第一数据域赋值为数组类型的标识字符串va,将述 变量encode_va赋值给所述变量data_rec的第二数据域。
[0112] 步骤化,调用所述变量data_rec的编码接口,编码生成可传输字节流数据。
[0113] 子编码过程2具体包括:
[0114] 步骤A2,创建类型为对象模型模板规范中预定义的可变长数组类型 HLA VariableArray的变量encode_va,并将所述变量encode_va数组的元素类型设置为对象 模型模板规范中预定义的不透明字节块类型HLAopaque化化。
[0115] 步骤B2,读取被处理结构数据中下一个未处理的数据域。
[0116] 步骤C2,如果所述数据域为数组类型,则执行处理数组类型数据的方法处理该数 据域;如果为结构类型,则执行处理结构类型数据的方法处理该数据域;如果为简单类型, 则执行处理简单类型数据的方法处理该数据域;得到对所述数据域编码转换成的可传输字 节流数据。
[0117] 步骤D2,创建类型为对象模型模板规范中预定义的不透明字节块类型 HLAopaque化化的变量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_ opa,并将所述变量e 1 e_opa添加到所述变量encode_va中。
[0118] 步骤E2,判断结构数据中所有的数据域是否已经处理,如果未处理完,则转到步骤 B2继续处理下一个数据域的处理;否则,转到下一步。
[0119] 步骤F2,创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord 的变量data_rec,将所述变量data_rec的第一数据域的类型设置为对象模型模板规范中预 定义的宽字符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为 对象模型模板规范中预定义的不透明字节块类型HLAopaque化ta,将所述变量data_rec的 第一数据域赋值为结构类型的标识字符串St,将所述变量611(3〇(16_則赋值给所述变量data_ rec的第二数据域。
[0120] 步骤G2,调用步骤F中data_rec的编码接口,编码生成化riableLengtMa化类型的 可传输字节流数据,完成结构类型数据的编码处理。
[0121] 子编码过程3具体包括:
[0122] 步骤A3,根据所述数据所属的简单类型,调用对象模型模板规范预定义的相应简 单类型的编码接口,将简单类型数据转化成可传输字节流数据,所述可传输字节流数据的 类型为对象模型模板规范中预定义的可传输字节流类型。
[0123] 步骤B3,创建类型为对象模型模板规范中预定义的不透明字节块类型 HLAopaque化化的变量ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_ ops;
[0124] 步骤C3,创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord 的变量data_rec,将所述变量data_rec的第一数据域的类型设置为对象模型模板规范中预 定义的宽字符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为 对象模型模板规范中预定义的不透明字节块类型HLAopaque化ta,将所述变量data_rec的 第一数据域赋值为所述数据所属类型的类型标识字符串,将所述变量data_rec的第二数据 域的值设置为所述变量ele_opa,所述简单类型包括的数据类型的类型标识字符串为:16位 整型的类型标识字符串为i2,32位整型的类型标识字符串为i4,64位整型的类型标识字符 串为18,单精度浮点型的类型标识字符串为f4,双精度浮点型的类型标识字符串为巧,布尔 型的类型标识字符串为bl,ASCII码字符型的类型标识字符串为ac,Unicode码字符型的类 型标识字符串为UC,字节型的类型标识字符串为bt ,ASCII码字符串的类型标识字符串为 as,化icode码字符串的类型标识字符串为US;,具体如下:
[0125]
[0126]
[0127] 第二个数据域的类型设置为HLAopaqueData,值设置为步骤B3定义的ele_opa。
[0128] 步骤D3,调用步骤C3中data_rec的编码接口,编码生成可传输可传输字节流字节 流化riableLengtMa化形式的字节流数据,完成简单类型数据的编码处理。
[0129] 图2为本发明实施例HLA分布式仿真系统中通用模型数据的解码方法示意图,如图 2所示,本发明提供的HLA分布式仿真系统中通用的模型数据解码方法包括:
[0130] 步骤20 1 :创建类型为对象模型模板规范中预定义的可变长数组类型 HLAvar i ab 1 eArray的数组变量pod_va,将所述数组变量pod_va中的元素类型设置为对象 模型模板规范中预定义的固定结构类型HLAf ixedRecord,所述数组变量pod_va中的每个 元素均包含第一数据域和第二数据域,将所述第一数据域的类型设置为对象模型模板规范 中预定义的宽字符串类型HLAunicodeString,将所述第二数据域的类型设置为对象模型模 板规范中预定义的不透明字节块类型HLAopaque化化;
[0131] 步骤202:调用所述数组变量pod_va的解码接口,将待解码的可传输字节流数据 作为解码接口的输入;
[0132] 步骤2 0 3 :创建类型为对象模型模板规范中预定义的固定结构类型 HLAfixedRecord的变量data_rec,将所述变量data_rec的第一数据域设置为对象模型模板 规范中预定义的宽字符串类型HLAunicodeString,将所述变量data_rec的第二数据域设置 为对象模型模板规范中预定义的不透明字节块类型HLAopaque化化;
[0133] 步骤204:获取所述数组变量pod_va中一个未处理的数据元素,将该元素赋值给 所述变量data_rec;
[0134] 步骤205:创建类型为对象模型模板规范中预定义的不透明字节块类型 HLAopaqueDa1:a 的变量 data_opa;
[0135] 步骤206:读取所述变量data_rec的第二数据域的数据,并将所述数据赋值给所述 变量 data_opa;
[0136] 步骤207:将所述变量data_opa中存放的字节数据提取出来,并存放到类型为可传 输字节流数据类型化riableLengtM)a化的变量data_vld中;
[0137] 步骤2 0 8 :创建类型为对象模型模板规范中预定义的固定结构类型 HLAf ixedRecord的变量trans_rec,将所述变量trans_rec第一个数据域的类型设置为对象 模型模板规范中预定义的宽字符串类型HLAunicodeString;
[0138] 步骤209:调用trans_rec的解码接口,并W所述变量data_vld作为输入,对所述变 量data_vld存放的字节流数据进行不完全解码;运次解码目的在于获知所述变量data_vld 中存放的字节流数据所对应的原始数据的类型标识字符串,W便后续根据类型标识字符串 进行相应的完全解码;
[0139]步骤210:读取所述变量trans_rec的第一数据域的字符串,赋值给变量type_s化, 所述变量type_str的数据类型为对象模型模板规范中预定义的宽字符串类型 HLAunicodeString;
[0140]步骤211:判断所述变量type_st;r的值,根据所述变量type_s化的值对所述变量 data_vld中的数据采用与所述变量type_s化的值相应的解码方式进行第二次解码,完成所 述变量data_vld中的数据的二次完全解码;
[0141]步骤212:判断所述变量pod_va的所有元素是否已经解码完全,如果否,则继续解 码所述变量P〇d_va中的下一个元素,否则,结束解码。
[0142]在上述步骤211中,识别所述变量type_st;r的值,如果所述变量type_sh的值为 va,则采用数组类型数据解码方法对所述变量type_st;r的值进行解码;如果所述变量type_ S化的值为八,则采用结构类型数据解码方法对所述变量type_str的值进行解码;如果所述 变量type_str的值为简单数据类型的标识,则采用简单类型数据解码方法对所述变量 type_st;r的值进行解码。
[0143] 数组类型数据解码方法具体包括:
[0144] 步骤A4,将所述变量化ans_rec的第二数据域设置为数据元素为不透明字节块类 型 HLAopaqueDa1:a 的可变长数组类型 HLAvariableArray。
[0145] 步骤B4,调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入。
[0146] 步骤C4,获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变 量trans_rec的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素 为不透明字节块类型HLAopaque化化的可变长数组类型HLAvar iab 1 eArray。
[0147] 步骤D4,读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节 块类型HLAopaque化ta的变量ele_opa中;对ele_opa进行由步骤105开始的处理。经过多次 迭代,可W完成步骤A4中data_va的一个元素的解码。
[0148] 步骤F4,将所述解码返回的值添加到类型为可变长数组类型HLAvariableArray的 变量dec_ele_va中,完成一个元素的解码。
[0149] 步骤G4,判断步骤C4中data_va的所有元素是否已经处理,如果否,转到步骤D4继 续处理下一个未处理的元素;否者进入下一步。
[0150] 步骤H4,读取所述变量data_rec的第一数据域与所述变量dec_ele_va中的数据 值,完成所述获取的所述数组变量P〇d_va中的一个元素的解码。
[0151 ]结构类型数据解码方法具体包括:
[0152] 步骤A5,将所述变量化ans_rec的第二数据域设置为数据元素为不透明字节块类 型 HLAopaqueDa1:a 的可变长数组类型 HLAvariableArray;
[0153] 步骤B5,调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入。
[0154] 步骤巧,获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变 量trans_rec的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素 为不透明字节块类型HLAopaque化化的可变长数组类型HLAvar iab 1 eArray。
[01巧]步骤D5,读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节 块类型HLAopaque化化的变量ele_opa中。
[0156] 步骤E5,采用所述解码步骤对所述变量e le_opa进行解码。
[0157] 步骤F5,将所述解码返回的值添加到类型为固定结构类型HLAfixedRecord的变量 dec_ele_rec中,完成一个元素的解码。
[0158] 步骤G5,判断步骤D5中data_va中的所有元素是否已经处理,如果否,转到步骤E5; 否则,进入下一步;
[0159] 步骤册,读取所述变量data_rec的第一数据域与所述变量dec_ele_rec中的数据 值,完成所述获取的所述数组变量P〇d_va中的一个数据元素的解码。
[0160] 简单类型数据解码方法,具体包括:
[0161] 步骤A6,将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块 HLAopaqueDa1:a 类型。
[0162] 步骤B6,调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入。
[0163] 步骤C6,获取所述变量trans_rec的第二数据域的值,赋值给类型为不透明字节块 类型 HLAopaqueDa1:a 的变量 dec_opa。
[0164] 步骤D6,将所述变量dec_opa存放的字节数据赋值给类型为可传输字节流类型 化;riableLengthDa1:a 的变量 dec_vld 中。
[0165] 步骤E6,包I建与所述变量type_st;r中的值的类型相同的变量dec_bsc。
[0166] 步骤F6,调用所述变量dec_bsc的解码接口,将所述变量dec_vld作为输入。
[0167]步骤G7:读取所述变量data_rec的第一数据域与所述变量dec_bsc,完成所获取的 数组变量p〇d_va中的数据元素的解码工作。
[0168]本发明提供的编码/解码方法,可W实现对常用的多种数据类型,包括整型、浮点 型、字符型、字符串型、数组型和结构型等进行统一表示;可W对数组中包含数组、数组中包 含结构、结构中包含结构和结构中包含数组的复杂数据实现递归编码和解码;克服了现有 技术中一种数据类型对应一套编码、解码的代码所带来的工作量大、代码重用性第的问题, 增加代码的重用性和仿真模型间的互操作性,有效避免重互工作,缩短开发周期,降低开发 成本;从根本上避免了由于编码/解码问题造成联邦成员间的数据交互失败,缩短分布式仿 真系统集成测试时间,降低系统开发风险和成本。
[0169] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他 实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统 而言,由于其与实施例公开的方法相对应,所W描述的比较简单,相关之处参见方法部分说 明即可。
[0170] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,W上实施例的说 明只是用于帮助理解本发明的方法及其核屯、思想;同时,对于本领域的一般技术人员,依据 本发明的思想,在【具体实施方式】及应用范围上均会有改变之处。综上所述,本说明书内容不 应理解为对本发明的限制。
【主权项】
1. 一种仿真系统中通用的模型数据编码方法,其特征在于,所述编码方法包括: 为仿真模型中每一个待传输的数据分配一个唯一的标识字符串,对模型数据进行标 识; 创建类型为对象模型模板规范中预定义的可变长数组类型HLAvariableArray的变量 port_va,将所述变量port_va中的元素类型设置为对象模型模板规范中预定义的固定结构 类型HLAf ixedRecord,所述变量port_va中的每个元素均包含第一域和第二域,将所述第一 域的数据类型设置为对象模型模板规范中预定义的宽字符串类型HLAunicodeString,将所 述第二域的数据类型设置为对象模型模板规范中预定义的不透明字节块类型 HLAopaqueData; 读取一个未处理的数据; 判断所述数据的数据类型,根据所述数据类型,对所述数据进行与所述数据类型相对 应的编码处理,并将处理结果转换为对象模型模板规范中预定义的可传输字节流类型 VariableLengthData的可传输字节流数据; 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData的变量 data_opa,用所述可传输字节流数据对所述变量data_opa进行初始化; 创建类型为对象模型模板规范中预定义的固定结构类型HLAf ixedRecord的变量port_ rec,所述变量port_rec包含第一数据域和第二数据域,所述第一数据域的类型设置为对象 模型模板规范中预定义的宽字符串类型HLAunicodeString,将分配给所述数据的标识字符 串赋值给所述第一数据域;所述第二数据域的类型设置为对象模型模板规范中预定义的不 透明字节块类型HLAopaqueData,将data_opa赋值给所述第二数据域; 将所述变量P〇rt_rec添加到所述可变长数组变量port_va中,作为所述可变长数组变 量port_va中的一个元素; 判断是否还有未处理的数据,若还有未处理的数据,则继续对下一个未处理的数据进 行处理,若所有数据均已处理,则调用所述变量P〇rt_va的编码接口,编码生成符合HLA协议 底层传输要求的字节流数据,所述字节流数据的类型为可传输字节流类型 VariableLengthData02. 根据权利要求1所述的编码方法,其特征在于,判断所述数据的数据类型,根据所述 数据类型,对所述数据进行与所述数据类型相对应的编码处理,具体包括: 识别所述数据的数据类型; 如果所述数据类型为数组类型,则采用处理数组类型数据的方法处理所述数据; 如果所述数据类型为结构类型,则采用处理结构类型数据的方法处理所述数据; 如果所述数据类型为简单类型,则采用处理简单类型数据的方法处理所述数据,所述 简单数据类型包括16位整型、32位整型、64位整型、单精度浮点型、双精度浮点型、布尔型、 ASCII码字符型、Unicode码字符型、字节型、ASCII码字符串和Unicode码字符串。3. 根据权利要求2所述的编码方法,其特征在于,所述采用处理数组类型数据的方法处 理所述数据,具体包括: 创建类型为对象模型模板规范中预定义的可变长数组类型HLAvariableArray的变量 encode_va,并将所述变量encode_va中的数组元素类型设置为对象模型模板规范中预定义 的不透明字节块类型HLAopaqueData; 读取所述数据中下一个未处理的元素; 如果所述元素为数组类型,则执行处理数组类型数据的方法处理该数组元素;如果为 结构类型,则执行处理结构类型数据的方法处理该数组元素;如果为简单类型,则执行处理 简单类型数据的方法处理该数组元素;得到对所述元素编码转换成的可传输字节流数据; 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData的变量 ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa; 将所述变量e I e_opa添加到所述变量encode_va中; 判断所述数据中所有元素是否已经处理,如果未处理完,则继续处理所述数据中的下 一个元素,直到处理完毕; 创建类型为对象模型模板规范中预定义的固定结构类型的变量data_reC,所述变量 data_reC包含第一数据域和第二数据域,将所述变量data_reC的第一数据域的类型设置为 对象模型模板规范中预定义的宽字符串类型HLAunicodeString,将所述变量data_rec的第 二数据域的类型设置为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData, 将所述变量data_rec的第一数据域赋值为数组类型的标识字符串va,将述变量encode_va 赋值给所述变量data_rec的第二数据域; 调用所述变量data_reC的编码接口,编码生成可传输字节流数据。4. 根据权利要求2所述的编码方法,其特征在于,所述采用处理结构类型数据的方法处 理所述数据,具体包括: 创建类型为对象模型模板规范中预定义的可变长数组类型HLAvariableArray的变量 encode_va,并将所述变量encode_va数组的元素类型设置为对象模型模板规范中预定义的 不透明字节块类型HLAopaqueData; 读取所述数据中下一个未处理的数据域; 如果所述数据域为数组类型,则执行处理数组类型数据的方法处理该数据域;如果为 结构类型,则执行处理结构类型数据的方法处理该数据域;如果为简单类型,则执行处理简 单类型数据的方法处理该数据域;得到对所述数据域编码转换成的可传输字节流数据; 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData的变量 ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa,并将所述变量 ele_opa添加到所述变量encode_va中; 判断所述数据中所有数据域是否已经处理,如果未处理完,则继续处理所述数据中的 下一个数据域,直到处理完毕; 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量data_ rec,将所述变量data_reC的第一数据域的类型设置为对象模型模板规范中预定义的宽字 符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为对象模型模 板规范中预定义的不透明字节块类型HLAopaqueData,将所述变量data_rec的第一数据域 赋值为结构类型的标识字符串st,将所述变量encode_va赋值给所述变量data_rec的第二 数据域; 调用所述变量data_reC的编码接口,编码生成可传输字节流数据。5. 根据权利要求2所述的编码方法,其特征在于,所述采用处理简单类型数据的方法处 理所述数据,具体包括: 根据所述数据所属的简单类型,调用对象模型模板规范预定义的相应简单类型的编码 接口,将简单类型数据转化成可传输字节流数据,所述可传输字节流数据的类型为对象模 型模板规范中预定义的可传输字节流类型; 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData的变量 ele_opa,将所述字节流数据中存放的字节数据赋值给所述变量ele_opa; 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量data_ rec,将所述变量data_reC的第一数据域的类型设置为对象模型模板规范中预定义的宽字 符串类型HLAunicodeString,将所述变量data_rec的第二数据域的类型设置为对象模型模 板规范中预定义的不透明字节块类型HLAopaqueData,将所述变量data_rec的第一数据域 赋值为所述数据所属类型的类型标识字符串,将所述变量data_ reC的第二数据域的值设置 为所述变量ele_opa,所述简单类型包括的数据类型的类型标识字符串为:16位整型的类型 标识字符串为i 2,32位整型的类型标识字符串为i4,64位整型的类型标识字符串为i8,单精 度浮点型的类型标识字符串为f4,双精度浮点型的类型标识字符串为f8,布尔型的类型标 识字符串为bl ,ASCII码字符型的类型标识字符串为ac ,Unicode码字符型的类型标识字符 串为uc,字节型的类型标识字符串为bt,ASCII码字符串的类型标识字符串为as ,Unicode码 字符串的类型标识字符串为us; 调用所述变量data_reC的编码接口,编码生成可传输字节流数据。6.-种仿真系统中通用的模型数据解码方法,所述解码方法包括: 创建类型为对象模型模板规范中预定义的可变长数组类型HLAvariableArray的数组 变量port_va,将所述数组变量p〇rt_va中的元素类型设置为对象模型模板规范中预定义的 固定结构类型HLAf ixedRecord,所述数组变量port_va中的每个元素均包含第一数据域和 第二数据域,将所述第一数据域的类型设置为对象模型模板规范中预定义的宽字符串类型 HLAunicodeString,将所述第二数据域的类型设置为对象模型模板规范中预定义的不透明 字节块类型HLAopaqueData; 调用所述数组变量P〇rt_va的解码接口,将待解码的可传输字节流数据作为解码接口 的输入; 创建类型为对象模型模板规范中预定义的固定结构类型HLAfixedRecord的变量data_ rec,将所述变量data_reC的第一数据域设置为对象模型模板规范中预定义的宽字符串类 型HLAunicodeString,将所述变量data_rec的第二数据域设置为对象模型模板规范中预定 义的不透明字节块类型HLAopaqueData; 获取所述数组变量P〇rt_va中一个未处理的数据元素,将该元素赋值给所述变量data_ rec ; 创建类型为对象模型模板规范中预定义的不透明字节块类型HLAopaqueData的变量 data-opa; 对所述元素进行解码,所述解码步骤包括: 读取所述变量data_reC的第二数据域的数据,并将所述数据赋值给所述变量data_ opa; 将所述变量data_opa中存放的字节数据提取出来,并存放到类型为可传输字节流数据 类型 Variab IeLengthData 的变量 data_vld 中; 创建类型为对象模型模板规范中预定义的固定结构类型HLAf ixedRecord的变量 trans_rec,将所述变量trans_rec第一个数据域的类型设置为对象模型模板规范中预定义 的宽字符串类型HLAunicodeString; 调用trans_rec的解码接口,并以所述变量data_vld作为输入; 读取所述变量trans_rec的第一数据域的字符串,赋值给变量type_str,所述变量 type_str的数据类型为对象模型模板规范中预定义的宽字符串类型HLAunicodeString; 判断所述变量type_str的值,根据所述变量type_str的值对所述变量data_vld中的数 据采用与所述变量type_Str的值相应的解码方式进行解码; 判断所述变量P〇rt_va的所有元素是否已经解码完全,如果否,则继续解码所述变量 port_va中的下一个元素,否则,结束解码。7. 根据权利要求6所述的解码方法,其特征在于,所述判断所述变量type_str的值,根 据所述变量type_str的值对所述变量data_vld中的数据采用与所述变量type_str的值相 应的解码方式进行解码,具体包括: 识别所述变量type_str的值; 如果所述变量type_str的值为va,则采用数组类型数据解码方法对所述变量data_vld 进行解码; 如果所述变量type_str的值为st,则采用结构类型数据解码方法对所述变量data_vld 进行解码; 如果所述变量type_Str的值为简单数据类型的标识,则采用简单类型数据解码方法对 所述变量data_vld进行解码。8. 根据权利要求7所述的解码方法,其特征在于,所述采用数组类型数据解码方法对所 述变量data_vld进行解码,具体包括: 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块类型 HLAopaqueData 的可变长数组类型 HLAvariab IeArray; 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入; 获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变量trans_rec 的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素为不透明字 节块类型HLAopaqueData的可变长数组类型HLAvar iab I eArray; 读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节块类型 HLAopaqueData 的变量 el e_opa 中; 采用所述解码步骤对所述变量ele_opa进行解码; 将所述解码返回的值添加到类型为可变长数组类型HLAvar iab IeArray的变量dec_ ele_va中,完成一个元素的解码; 判断所述变量data_va的所有元素是否已经处理完毕,如果否,则继续处理下一个未处 理的元素,直到所述变量data_va中的所有元素处理完毕; 读取所述变量data_rec的第一数据域与所述变量dec_ele_va中的数据值,完成所述获 取的所述数组变量P〇r t_va中的一个元素的解码。9. 根据权利要求7所述的解码方法,其特征在于,所述采用结构类型数据解码方法对所 述变量data_vld进行解码,具体包括: 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块类型 HLAopaqueData 的可变长数组类型 HLAvariab IeArray; 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入; 获取所述变量trans_rec的第二数据域的值,赋值给变量data_va,所述变量trans_rec 的第二数据域的值是由解码返回的,所述变量data_va的数据类型为数据元素为不透明字 节块类型HLAopaqueData的可变长数组类型HLAvar iab I eArray; 读取所述变量data_va中下一个未处理的元素,存放在类型为不透明字节块类型 HLAopaqueData 的变量 el e_opa 中; 采用所述解码步骤对所述变量ele_opa进行解码; 将所述解码返回的值添加到类型为固定结构类型HLAf ixedRecord的变量dec_ele_rec 中,完成一个元素的解码; 判断所述变量data_va的所有元素是否已经处理完毕,如果否,则继续处理下一个未处 理的元素,直到所述变量data_va中的所有元素处理完毕; 读取所述变量data_rec的第一数据域与所述变量dec_ele_rec中的数据值,完成所述 获取的所述数组变量P〇rt_va中的一个数据元素的解码。10.根据权利要求7所述的解码方法,其特征在于,所述采用简单类型数据解码方法对 所述变量data_vld进行解码,具体包括: 将所述变量trans_rec的第二数据域设置为数据元素为不透明字节块HLAopaqueData 类型; 调用所述变量trans_rec的解码接口,将所述变量data_vld作为输入; 获取所述变量trans_rec的第二数据域的值,赋值给类型为不透明字节块类型 HLAopaqueData 的变量 dec_opa; 将所述变量d e c _ 〇 p a存放的字节数据赋值给类型为可传输字节流类型 VariableLengthData 的变量 dec_vld 中; 创建与所述变量type_str中的值的类型相同的变量dec_bsc; 调用所述变量dec_bsc的解码接口,将所述变量dec_vld作为输入; 读取所述变量data_rec的第一数据域与所述变量dec_bSC,完成所获取的数组变量 por t_va中的数据元素的解码工作。
【文档编号】G05B17/02GK105955066SQ201610371561
【公开日】2016年9月21日
【申请日】2016年5月30日
【发明人】李震, 余银, 刘向东, 谢松, 路平立
【申请人】北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1