CN115857899A - 一种面向异构数据包的解析软件自动构建方法 - Google Patents

一种面向异构数据包的解析软件自动构建方法 Download PDF

Info

Publication number
CN115857899A
CN115857899A CN202211437418.XA CN202211437418A CN115857899A CN 115857899 A CN115857899 A CN 115857899A CN 202211437418 A CN202211437418 A CN 202211437418A CN 115857899 A CN115857899 A CN 115857899A
Authority
CN
China
Prior art keywords
data
segment
length
combined
segmentation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211437418.XA
Other languages
English (en)
Other versions
CN115857899B (zh
Inventor
冉惟之
王雨琴
徐杨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN202211437418.XA priority Critical patent/CN115857899B/zh
Publication of CN115857899A publication Critical patent/CN115857899A/zh
Application granted granted Critical
Publication of CN115857899B publication Critical patent/CN115857899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及信息化技术领域,提供了一种面向异构数据包的解析软件自动构建方法。目的在于解决当有新的终端设备型号和数据格式接入时,如何自动构建对应终端的异构数据包的解析软件的问题。主要方案包括根据终端ID以及数据包的字节流信息,配置定义解析规则描述文件,加载并存储到解析规则描述文件数据库中;当异构终端设备接入时,软件中间件根据终端ID加载对应的数据包解析规则描述文件;软件中间件对数据包解析规则描述文件动态解析、动态调用对应数据包的字节流的数据分割函数模板、数据组合函数模板、数据转换函数模板,并依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件。

Description

一种面向异构数据包的解析软件自动构建方法
技术领域
本发明涉及信息化技术领域,提供了一种面向异构数据包的解析软件自动构建方法。
背景技术
随着集群化控制系统、无人自主设备等技术的不断发展和突破,设备动态接入和资源管理越来越引起研究者的重视,然而,由于无人系统设备功能的多样性和个体异构性,造成无人系统设备间存在着信息描述不统一、接口标准不一致、控制方法不通用等问题,难以实现以通用的设备接入方案进行异构设备动态接入。因此需要异构无人系统设备资源代理来屏蔽各类无人设备的底层异构性,解决异构无人系统设备动态接入和资源管理的问题。
在现有的实现方式中,通常是提前将异构无人系统设备的接口参数和传输方式等进行统一化表示,形成一个专用的资源代理软件或方法库。该方法从功能上屏蔽了异构无人系统设备底层的异构性,实现了设备的动态接入,但仍存在一定的缺陷。主要表现为:
1、专用资源代理软件与无人设备间存在极大的耦合性,当异构无人系统设备更新迭代时,此专用资源代理软件不能继续使用,需要对软件进行大量修改来再次屏蔽异构设备底层的异构性。
2、专用资源代理软件存在极大的冗余性。每一次的任务执行中,从未被接入的无人系统设备的资源代理也会被提前创建,造成空间浪费和工作冗余。在规模性与系统性较强的集群化控制系统中,其效率更低。
3、方法库的全面性决定了能否提供与异构无人系统设备相适应的设备接入处理方法。
为了解决现有实现方式的不足,需打破异构无人设备使用高耦合、静态式专用资源代理软件的壁垒,低耦合动态化地屏蔽无人系统底层的异构性,进而实现异构无人设备间的设备动态接入与信息集成。
现有技术1:异构感知数据的动态适配接入方法
该方法是针对异构传感器感知数据获取方式与解译方法不确定的问题,对异构传感器进行抽象,建立面向SWE数据接入的异构传感器信息模型(HSIM),描述了异构传感器在通信能力和数据表达方面的特征,并根据物理传感器和虚拟传感器的通信接口和数据表达的特征,动态配置与组合连接器模块、译码器模块,生成适配器即资源代理,实现异构感知数据的自动解析和适配接入的过程。
缺点:
动态适配器的生成依赖于传感器的实例和方法库,但是该方法库具有一定的局限性,适配器只能根据方法库中已有的一些通用性的数据解析方法和传感器与适配器创建通信链路方法来提供与多源异构传感器数据相适应的协议解析方法。如果方法库中没有对应的数据解析方法,则不能生成资源代理,进而难以实现异构感知数据的动态适配接入。
现有技术2:一种通用设备网关实现多源异构数据接入的系统及方法
提供了一种通用设备网关实现多源异构数据接入的系统及基于该系统的消息上行和指令下行的方法。其配置通用设备网关系统,将多种协议的物联网设备,包括MQTT、CoAP、TCP/IP、UDP、HTTP,经过配置与前处理,将多种数据协议转成对数字化平台的标准统一数据格式。
缺点:
通用设备网关系统是提前配置在终端设备与业务平台之间的,并且仅可处理预设好的几种数据协议对应的数据,无法满足未预设数据协议的终端接入需求。
综上所述现有技术中均是解析软件一旦发布,如果新的终端设备型号和数据格式接入,解析软件将无法正常解析,终端接入需求下不可用。
发明内容
本发明的目的在于解决当有新的终端设备型号和数据格式接入时,如何自动构建对应终端的异构数据包的解析软件的问题。
为了实现上述目的本发明采用以下技术手段:
一种面向异构数据包的解析软件自动构建方法,包括以下步骤:
步骤1、根据异构终端设备的终端ID 以及数据包的字节流信息,配置定义解析规则描述文件;
步骤2、配置定义好的解析规则描述文件设置唯一编号,加载并存储到解析规则描述文件数据库中;
步骤3、当异构终端设备接入时,软件中间件根据终端ID加载对应的数据包解析规则描述文件;
步骤4、软件中间件对数据包解析规则描述文件动态解析、动态调用对应数据包的字节流的数据分割函数模板、数据组合函数模板、数据转换函数模板,并依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件。 上述技术方案中,解析规则描述文件包括以下三个数组:
Segmentations数组:包含全部的分割规则对象;
combinedData数组:包含全部的组合规则对象
transformedData数组:全部的转换规则对象。
上述技术方案中,分割规则对象定义如下:
segmentIndex:分割段索引,作为此分割段分割规则的唯一标识;
segmentIsFixedLength:分隔段长度类型,用于描述此分割段是否为定长数据段,值为bool类型,为true则表示此数据段为定长数据段,为false则为非定长数据段;
initialPosition:初始位置,描述此分割段在原始数据段的起始位置;
segmentLength:数据段偏移量,描述分割数据段的长度;
subSegmentNumIndex:子数据段个数分割段索引,数据段为非定长数据段时,数据段长度或者子数据段个数记录在某个定长的分割数据段中,此属性用于描述此定长数据段的分割段索引segmentIndex;
subSegmentLength:子数据段比特长度,若此数据段为由若干子数据段组成的非定长数据段,此属性以比特为单位描述子数据段的长度,否则此属性值为0。
上述技术方案中,非定长数据段分为以下两种情况:
一、定长数据段记录不定长数据段的比特长度;
二、不定长数据段由若干子数据段组成,子数据段长度固定,定长数据段中记录子数据段个数。
上述技术方案中,组合规则对象定义如下:
combinedIndex:组合段索引,作为此组合段组合规则的唯一索引;
includeSegmentIndex:分割段索引数组,记录组合成此组合段的全部分割段的索引segmentIndex;
combinationNumIsFixed:若此组合段对应的分割段为不定长数据段且是由若干子数据段组成的,则值为false,否则为true;
上述技术方案中,转换规则对象定义如下:
定义转换段索引transformedIndex:作为此转换段组合规则的唯一索引;
包含组合段索引includeCombinedIndex:用于描述此转换段是对哪个组合段进行转换;
定义转换数据类型数组transformDataType:用于描述将对应组合段转换为什么类型的数据。
上述技术方案中,步骤4中:
数据分割函数模板:输入参数为原始数据包的字节流和Segmentations数组,根据Segmentations数组获取Segmentations数组中分割数据对象,得到每个分割数据对象的起始位置、数据段偏移量,输出为按照起始位置和数据段偏移量分割得到的数据段,以及此数据段的索引;
数据组合函数模板:输入参数为数据分割函数模板输出的数据段和combinedData数组,根据combinedData数组中组合数据对象结合各数据段的索引,得到组合段对应分割段是否为子数据段个数固定的数据段,输出为将几个分割数据段组合形成的新数据段;
数据转换函数模板:输入参数为数据组合函数模板中输出的新数据段和transformedData数组,根据transformedData数组中的转换规则对象确定数据段需转换成的数据类型,对应分割段是否为子数据段个数固定的数据段,输出为最终数据类型的数据。
上述技术方案中,依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件包括以下步骤:
步骤(1)按顺序读取一个数据包解析规则描述文件segmentations数组中分割数据对象;
步骤(2)判断此分割数据对象中segmentIsFixedLength的值是否为true,若是true,执行步骤(3);否则,读取分割数据对象中subSegmentNumIndex的值,获取此索引对应分割段的值设为length,接下来执行步骤(4);
步骤(3)调用数据分割函数模板,此分割数据对象中的initialPosition和segmentLength的值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9);
步骤(4)判断length的值是否大于0,若大于0,执行步骤(5);否则,执行步骤(10);
步骤(5)判断此分割数据对象中subSegmentLength的值是否为0,若是0,顺序执行;否则,设置一个标志位变量num=0,接下来执行步骤(7);
步骤(6)调用数据分割函数模板,此分割数据对象中的initialPosition和length值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9);
步骤(7)判断num是否小于length。若是,顺序执行;否则,执行步骤(10);
步骤(8)调用数据分割函数模板,此分割数据对象中的initialPosition的值加num*subSegmentLength作为起始位置参数,subSegmentLength的值作为偏移量参数,原始数据包作为输入数据,存储输出的分割数据段及其索引segmentIndex,num的值加一,执行步骤(7);
步骤(9)存储输出的分割数据段及其索引segmentIndex;
步骤(10)判断数据包解析规则描述文件segmentations数组中分割数据对象是否被全部读取。若已被全部读取,顺序执行;否则,执行步骤(1)。
步骤(11)按顺序读取一个数据包解析规则描述文件combinedData数组中组合数据对象;
步骤(12)调用数据组合函数模板,此组合数据对象中的includeSegmentIndex值作为数据段索引,combinationNumIsFixed为输入参数,分割数据段数组作为输入数据,输出组合数据段data;
步骤(13)根据此组合数据段索引combinedIndex,读取解析规则描述文件transformedData数组中includeCombinedIndex与combinedIndex值相等的转换数据对象;
步骤(14)调用数据转换函数模板,此转换数据对象中的transformDataType值作为数据转换类型参数,组合段中的combinationNumIsFixed作为输入参数,data作为输入数据;
步骤(15)判断数据包解析规则描述文件combinedData数组中组合数据对象是否被全部读取,若已被全部读取,结束;否则,执行步骤(11)。
因为本发明采用上述技术手段,因此具备以下有益效果:
一、异构数据包解析规则描述方法中采用提出的几种属性对数据包解析过程中的分割、组合、转换规则进行了完整的描述,也体现了分割、组合、转换三个解析步骤之间的对应关系,为异构数据包解析软件自动构建提供了数据包解析规则信息支持。
二、动态解析数据包解析规则描述文件,并提出基于数据分割函数、数据组合函数、数据转换函数三种原子解析函数模板,根据解析规则动态进行原子解析函数模板的组合以及参数定制,实现异构数据包解析软件的自动构建。在不可预见的终端接入时,为其自动构建数据包解析软件,解决了因未知接入需求下无法预埋解析软件而导致无法对数据包进行解析的问题。
四、本发明的方案针对字节流中存在不定长数据段的情况,普通的定长分割将无法有效的实现数据分割,为此,本发明通过对两种非定长数据段进行特殊处理,完成了数据段的动态分割。
五、当具有新的终端设备型号和数据格式需要接入时,只需提前将规则描述文件存储到解析规则描述文件数据库中即可,可不需多软件系统其他结构进行修改即可完成新的异构终端的接入。
附图说明
图1为整体框架图;
图2为数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件的流程图;
图3为雷达探测仪探测到目标信息的数据结构为例;
图4为描述文件书写形式;
图5、图6、图7为完整的雷达探测信息数据包解析规则描述文件内容。
具体实施方式
以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些具体实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员将理解,没有这些具体细节,本发明同样可以实施。
参见图1,为了实现异构数据包解析软件的自动构建,本方法在发送端和接收端之间建立一个可动态自适应代码生成和可动态加载的软件中间件。
(1)以解析规则描述文件的形式描述异构数据包的解析规则,此文件我们称之为解析规则描述文件;在异构设备接入前,需要提前定义好新的异构设备的解析股则描述文件。
(2)预定义好的解析规则描述文件设置唯一编号,加载并存储到解析规则描述文件数据库中。
(3)软件中间件根据终端ID加载对应的数据包解析规则描述文件。
(4)软件中间件对数据包解析规则描述文件动态解析、动态调用针对该异构数据包的数据分割函数模板、数据组合函数模板、数据转换函数模板,并依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件。
上述方案中,数据分割函数模板:输入参数为原始数据包的字节流和Segmentations数组,根据Segmentations数组获取Segmentations数组中分割数据对象,得到每个分割数据对象的起始位置、数据段偏移量,输出为按照起始位置和数据段偏移量分割得到的数据段,以及此数据段的索引;
数据组合函数模板:输入参数为数据分割函数模板输出的数据段和combinedData数组,根据combinedData数组中组合数据对象结合各数据段的索引,得到组合段对应分割段是否为子数据段个数固定的数据段,输出为将几个分割数据段组合形成的新数据段;
数据转换函数模板:输入参数为数据组合函数模板中输出的新数据段和transformedData数组,根据transformedData数组中的转换规则对象确定数据段需转换成的数据类型,对应分割段是否为子数据段个数固定的数据段,输出为最终数据类型的数据。
设备发送的数据包是以字节流的形式传输,在此段字节流中每段位置代表着不同的数据,在对此字节流数据包进行解析时一般将解析过程按顺序分为:分割、组合、转换三个步骤,分割是对原始数据段按照分割位置和分割段长度进行分割得到若干分割数据段,其中分割数据段分为定长数据段和不定长数据段,不定长数据段的长度记录在某个定长数据段中,分为两种情况:一种是定长数据段记录不定长数据段的比特长度,一种是不定长数据段由若干子数据段组成,子数据段长度固定,定长数据段中记录子数据段个数。组合是对指定的几个分割数据段进行组合,得到新的组合数据段,转换是将组合数据段转换为指定的数据类型。
基于上述解析过程,为了描述解析过程所需的解析规则,提出一种数据包解析规则的描述方法,按照分割、组合、转换三个步骤,分别描述三个步骤对应的规则。
使用以下属性描述每个分割段的分割规则:
segmentIndex:分割段索引,作为此分割段分割规则的唯一标识,由字母、数字、下划线组成的字符串;
segmentIsFixedLength:用于描述此分割段是否为定长数据段,值为bool类型,为true则表示此数据段为定长数据段,为false则为非定长数据段;
initialPosition:以比特为单位,描述此分割段在原始数据段的起始位置;
segmentLength:以比特为单位,描述分割数据段的长度;
subSegmentNumIndex:数据段为非定长数据段时,数据段长度或者子数据段个数记录在某个定长的分割数据段中,此属性用于描述此定长数据段的分割段索引segmentIndex;
subSegmentLength:若此数据段为由若干子数据段组成的非定长数据段,此属性以比特为单位描述子数据段的长度,否则此属性值为0;
使用以下属性描述每个组合段的组合规则:
combinedIndex:组合段索引,作为此组合段组合规则的唯一索引;
includeSegmentIndex:分割段索引数组,记录组合成此组合段的全部分割段的索引。
combinationNumIsFixed:若此组合段对应的分割段为不定长数据段且是由若干子数据段组成的,则值为false,否则为true;
使用以下属性描述对每个组合段进行转换时的转换规则:
transformedIndex:转换段索引,作为此转换段组合规则的唯一索引;
includeCombinedIndex:对应组合段索引,用于描述此转换段是对哪个组合段进行转换;
transformDataType:转换数据类型数组,用于描述将对应组合段转换为什么类型的数据。
基于以上分割、组合、转换规则的属性描述,每个分割规则、组合规则、转换规则视为一个对象,建立三个数组segmentations、combinedData、transformedData,segmentations数组中包含全部的分割规则对象,combinedData数组中包含全部的组合规则对象,transformedData数组中包含全部的转换规则对象。则这三个数组包含了全部的分割、组合、转换规则。
基于上述提出的数据包解析规则描述方法,可使用一个数据包解析规则描述文件保存下分割、组合、转换规则的相关属性信息,为后续数据包解析软件自动构建提供信息支撑。描述文件的书写形式如图4所示。
参见图3,以雷达探测仪探测到目标信息的数据结构为例,数据结构如图3所示,此数据结构解析规则如下:
分割规则:
消息ID为定长数据段,起始位置为第0比特,分割段长度为32比特;
第5-6字节留空;
IP地址为定长数据段,起始位置第48比特,长度为32比特;
端口号为定长数据段,起始位置第80比特,长度为16比特;
雷达目标数量为定长数据段,起始位置第96比特,长度为32比特;
目标信息(经度、纬度、高度)为不定长数据段,起始位置为第128比特,一个目标的经度、纬度、高度为一个子数据段,由若干子数据段组成,子数据段数量存储在雷达目标数量中,子数据段长度为96比特。
组合与转换规则:
消息ID分割段组合为一个消息ID组合段,消息ID组合段应转换为int类型;
IP地址分割段和端口号分割段组合成一个网络地址组合段,网络地址组合段应转换为string类型;
雷达目标数量分割段组合为一个雷达目标数量组合段,雷达目标数量组合段应转换为int类型;
目标信息中的每个子数据段中目标经度为float类型,目标纬度为float类型,目标高度为float类型;对此不定长数据段进行分割时是分割为若干子数据段,由每个子数据段组合成一个组合段,不定长数据段子数据段个数不固定,但是子数据段之间是相同的数据长度和转换类型,所以仅使用一个组合段规则与一个转换规则即可描述子数据段的组合与转换规则。
目标信息分割段对应一个目标信息组合段,目标信息分割段为不定长数据段且是由若干子数据段组成,每个子数据段包含三个数据,所以使用数组记录这三个数据应转换为的类型,即[float,float,float]
那么基于数据包的解析规则,举例说明在解析规则描述文件中解析规则如何描述,
例如消息ID分割规则应写为:
"segmentIndex": "RadarDetectedMsgID_seg",
"segmentIsFixedLength": true,
"initialPosition": 0,
"segmentLength": 32,
"subSegmentNumIndex": null,
"subSegmentLength": 0
目标信息分割规则应写为:
"segmentIndex": "RadarDetectedTargetInfo_seg",
"segmentIsFixedLength": false,
"initialPosition": 128,
"segmentLength": 0,
"subSegmentNumIndex":"RadarDetectedTargetNum_seg",,
"subSegmentLength": 96
目标信息转换规则应写为:
"transformedIndex": "RadarDetectedTargetInfo_transformation",
"includeCombinedIndex":"RadarDetectedTargetInfo_combination",
"transformDataType":
[
"float",
"float",
"float",
]
}
为方便本领域技术人员更好的理解本发明的技术方案,提供了完整的雷达探测信息数据包解析规则描述文件内容如图5、图6、图7所示。
作为实施例,对于依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件包括以下步骤:
步骤(1)按顺序读取一个数据包解析规则描述文件segmentations数组中分割数据对象;
步骤(2)判断此分割数据对象中segmentIsFixedLength的值是否为true,若是true,执行步骤(3);如图5中第1-4个分割数据对象的"segmentIsFixedLength":true;
否则,读取分割数据对象中subSegmentNumIndex的值,获取此索引对应分割段的值设为length,接下来执行步骤(4);如图5中第5个分割数据对象的,"segmentIsFixedLength":false,"subSegmentNumIndex":"RadarDetectedTargetNum_seg",找到第4个分割数据对象,第四个分割数据对象的initialPosition为96,对应图3中第13字节,segmentLength为32对应图3中第13字节起偏移量4个,即为第16字节,即获取图3中第13-16字节这个分割段的值;
步骤(3)、调用数据分割函数模板,此分割数据对象中的initialPosition和segmentLength的值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9),如第一个分割数据对象的"initialPosition":0,"isegmentLength":32,对应图3中第1-4字节,每个字节8bit。
步骤(4)判断length的值是否大于0,若大于0,执行步骤(5);否则,执行步骤(10);
步骤(5)判断此分割数据对象中subSegmentLength的值是否为0,若是0,顺序执行;否则,设置一个标志位变量num=0,接下来执行步骤(7);
步骤(6)调用数据分割函数模板,此分割数据对象中的initialPosition和length值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9);
步骤(7)判断num是否小于length。若是,顺序执行;否则,执行步骤(10);
步骤(8)调用数据分割函数模板,此分割数据对象中的initialPosition的值加num*subSegmentLength作为起始位置参数,subSegmentLength的值作为偏移量参数,原始数据包作为输入数据,存储输出的分割数据段及其索引segmentIndex,num的值加一,执行步骤(7);
步骤(9)存储输出的分割数据段及其索引segmentIndex;
步骤(10)判断数据包解析规则描述文件segmentations数组中分割数据对象是否被全部读取。若已被全部读取,顺序执行;否则,执行步骤(1)。
步骤(11)按顺序读取一个数据包解析规则描述文件combinedData数组中组合数据对象;
步骤(12)调用数据组合函数模板,此组合数据对象中的includeSegmentIndex值作为数据段索引,combinationNumIsFixed为输入参数,分割数据段数组作为输入数据,输出组合数据段data;
步骤(13)根据此组合数据段索引combinedIndex,读取解析规则描述文件transformedData数组中includeCombinedIndex与combinedIndex值相等的转换数据对象;
步骤(14)调用数据转换函数模板,此转换数据对象中的transformDataType值作为数据转换类型参数,组合段中的combinationNumIsFixed作为输入参数,data作为输入数据;
步骤(15)判断数据包解析规则描述文件combinedData数组中组合数据对象是否被全部读取,若已被全部读取,结束;否则,执行步骤(11)。
步骤(16)根据前述步骤的数据分割、组合、转换函数模板调用情况以及参数配置情况组合得到异构数据包的解析软件。

Claims (8)

1.一种面向异构数据包的解析软件自动构建方法,其特征在于,包括以下步骤:
步骤1、根据异构终端设备的终端ID以及数据包的字节流信息,配置定义解析规则描述文件;
步骤2、配置定义好的解析规则描述文件设置唯一编号,加载并存储到解析规则描述文件数据库中;
步骤3、当异构终端设备接入时,软件中间件根据终端ID加载对应的数据包解析规则描述文件;
步骤4、软件中间件对数据包解析规则描述文件动态解析、动态调用对应数据包的字节流的数据分割函数模板、数据组合函数模板、数据转换函数模板,并依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件。
2.根据权利要求1所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,解析规则描述文件包括以下三个数组:
Segmentations数组:包含全部的分割规则对象;
combinedData数组:包含全部的组合规则对象;
transformedData数组:全部的转换规则对象。
3.根据权利要求2所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,分割规则对象定义如下:
segmentIndex:分割段索引,作为此分割段分割规则的唯一标识;
segmentIsFixedLength:分隔段长度类型,用于描述此分割段是否为定长数据段,值为bool类型,为true则表示此数据段为定长数据段,为false则为非定长数据段;
initialPosition:初始位置,描述此分割段在原始数据段的起始位置;
segmentLength:数据段偏移量,描述分割数据段的长度;
subSegmentNumIndex:子数据段个数分割段索引,数据段为非定长数据段时,数据段长度或者子数据段个数记录在某个定长的分割数据段中,此属性用于描述此定长数据段的分割段索引segmentIndex;
subSegmentLength:子数据段比特长度,若此数据段为由若干子数据段组成的非定长数据段,此属性以比特为单位描述子数据段的长度,否则此属性值为0。
4.根据权利要求3所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,非定长数据段分为以下两种情况:
一、定长数据段记录不定长数据段的比特长度;
二、不定长数据段由若干子数据段组成,子数据段长度固定,定长数据段中记录子数据段个数。
5.根据权利要求2所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,组合规则对象定义如下:
combinedIndex:组合段索引,作为此组合段组合规则的唯一索引;
includeSegmentIndex:分割段索引数组,记录组合成此组合段的全部分割段的索引segmentIndex;
combinationNumIsFixed:若此组合段对应的分割段为不定长数据段且是由若干子数据段组成的,则值为false,否则为true。
6.根据权利要求2所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,转换规则对象定义如下:
定义转换段索引transformedIndex:作为此转换段组合规则的唯一索引;
包含组合段索引includeCombinedIndex:用于描述此转换段是对哪个组合段进行转换;
定义转换数据类型数组transformDataType:用于描述将对应组合段转换为什么类型的数据。
7.根据权利要求2所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,步骤4中:
数据分割函数模板:输入参数为原始数据包的字节流和Segmentations数组,根据Segmentations数组获取Segmentations数组中分割数据对象,得到每个分割数据对象的起始位置、数据段偏移量,输出为按照起始位置和数据段偏移量分割得到的数据段,以及此数据段的索引;
数据组合函数模板:输入参数为数据分割函数模板输出的数据段和combinedData数组,根据combinedData数组中组合数据对象结合各数据段的索引,得到组合段对应分割段是否为子数据段个数固定的数据段,输出为将几个分割数据段组合形成的新数据段;
数据转换函数模板:输入参数为数据组合函数模板中输出的新数据段和transformedData数组,根据transfomedData数组中的转换规则对象确定数据段需转换成的数据类型,对应分割段是否为子数据段个数固定的数据段,输出为最终数据类型的数据。
8.根据权利要求1-7任一所述的一种面向异构数据包的解析软件自动构建方法,其特征在于,依据数据包解析规则进行动态参数定制、函数组合来自动构建面向该异构数据包的解析软件包括以下步骤:
步骤(1)按顺序读取一个数据包解析规则描述文件segmentations数组中分割数据对象;
步骤(2)判断此分割数据对象中segmentIsFixedLength的值是否为true,若是true,执行步骤(3);否则,读取分割数据对象中subSegmentNumIndex的值,获取此索引对应分割段的值设为length,接下来执行步骤(4);
步骤(3)调用数据分割函数模板,此分割数据对象中的initialPosition和segmentLength的值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9);
步骤(4)判断length的值是否大于0,若大于0,执行步骤(5);否则,执行步骤(10);
步骤(5)判断此分割数据对象中subSegmentLength的值是否为0,若是0,顺序执行;否则,设置一个标志位变量num=0,接下来执行步骤(7);
步骤(6)调用数据分割函数模板,此分割数据对象中的initialPosition和length值分别作为起始位置、偏移量参数,原始数据包作为输入数据,接下来执行步骤(9);
步骤(7)判断num是否小于length,若是,顺序执行;否则,执行步骤(10);
步骤(8)调用数据分割函数模板,此分割数据对象中的initialPosition的值加num*subSegmentLength作为起始位置参数,subSegmentLength的值作为偏移量参数,原始数据包作为输入数据,存储输出的分割数据段及其索引segmentIndex,num的值加一,执行步骤(7);
步骤(9)存储输出的分割数据段及其索引segmentIndex;
步骤(10)判断数据包解析规则描述文件segmentations数组中分割数据对象是否被全部读取,若已被全部读取,顺序执行;否则,执行步骤(1);
步骤(11)按顺序读取一个数据包解析规则描述文件combinedData数组中组合数据对象;
步骤(12)调用数据组合函数模板,此组合数据对象中的includeSegmentIndex值作为数据段索引,combinationNumIsFixed为输入参数,分割数据段数组作为输入数据,输出组合数据段data;
步骤(13)根据此组合数据段索引combinedIndex,读取解析规则描述文件transformedData数组中includeCombinedIndex与combinedIndex值相等的转换数据对象;
步骤(14)调用数据转换函数模板,此转换数据对象中的transfomDataType值作为数据转换类型参数,组合段中的combinationNumIsFixed作为输入参数,data作为输入数据;
步骤(15)判断数据包解析规则描述文件combinedData数组中组合数据对象是否被全部读取,若已被全部读取,结束;否则,执行步骤(11)。
步骤(16)根据前述步骤的数据分割、组合、转换函数模板调用情况以及参数配置情况组合得到异构数据包的解析软件。
CN202211437418.XA 2022-11-16 2022-11-16 一种面向异构数据包的解析软件自动构建方法 Active CN115857899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211437418.XA CN115857899B (zh) 2022-11-16 2022-11-16 一种面向异构数据包的解析软件自动构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211437418.XA CN115857899B (zh) 2022-11-16 2022-11-16 一种面向异构数据包的解析软件自动构建方法

Publications (2)

Publication Number Publication Date
CN115857899A true CN115857899A (zh) 2023-03-28
CN115857899B CN115857899B (zh) 2023-12-15

Family

ID=85663841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211437418.XA Active CN115857899B (zh) 2022-11-16 2022-11-16 一种面向异构数据包的解析软件自动构建方法

Country Status (1)

Country Link
CN (1) CN115857899B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229695A (zh) * 2017-05-23 2017-10-03 深圳大学 多平台航空电子大数据系统及方法
CN112905559A (zh) * 2021-02-01 2021-06-04 四川观想科技股份有限公司 一种多源异构数据采集系统及采集方法
CN113709007A (zh) * 2021-08-16 2021-11-26 山东勤成健康科技股份有限公司 一种异构网络的接入方法和装置
CN114048352A (zh) * 2021-10-30 2022-02-15 西南电子技术研究所(中国电子科技集团公司第十研究所) Xml文件转换不定长结构体的方法
WO2022077222A1 (zh) * 2020-10-13 2022-04-21 深圳晶泰科技有限公司 一种有向无环图式自动任务流的通用描述语言数据系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229695A (zh) * 2017-05-23 2017-10-03 深圳大学 多平台航空电子大数据系统及方法
WO2022077222A1 (zh) * 2020-10-13 2022-04-21 深圳晶泰科技有限公司 一种有向无环图式自动任务流的通用描述语言数据系统
CN112905559A (zh) * 2021-02-01 2021-06-04 四川观想科技股份有限公司 一种多源异构数据采集系统及采集方法
CN113709007A (zh) * 2021-08-16 2021-11-26 山东勤成健康科技股份有限公司 一种异构网络的接入方法和装置
CN114048352A (zh) * 2021-10-30 2022-02-15 西南电子技术研究所(中国电子科技集团公司第十研究所) Xml文件转换不定长结构体的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WEIZHI RAN: "Behavior-based Genetic Fuzzy Control System for Multiple USVs Cooperative Target Protection", 2019 3RD INTERNATIONAL SYMPOSIUM ON AUTONOMOUS SYSTEMS (ISAS), pages 181 - 186 *

Also Published As

Publication number Publication date
CN115857899B (zh) 2023-12-15

Similar Documents

Publication Publication Date Title
EP0726003B1 (en) Object-oriented network protocol configuration system
CN110324169B (zh) 一种接口管理的方法和装置
CN111294235B (zh) 数据处理方法、装置、网关及可读存储介质
CN101848239B (zh) 一种高时效性的分布式服务集成调用系统
CN109861998B (zh) 一种基于北斗短报文协议的插件式动态解析系统及方法
CN113177034A (zh) 一种跨平台统一的分布式图数据处理方法
US11252241B2 (en) System and method for provisioning protocol agnostic interface to internet of things application frameworks
CN113596017B (zh) 一种协议解析方法、装置、软网关和存储介质
CN111338717B (zh) 接口调用方法、应用程序升级方法及服务器和客户端
CN115857899A (zh) 一种面向异构数据包的解析软件自动构建方法
CN116156012B (zh) 通用的异构物联网设备标准化接入和数据解析系统与方法
CN112817539A (zh) 一种工业数据存储方法、系统、电子设备及存储介质
CN1160971C (zh) 路由器操作维护与配置命令的命令存储和命令解释方法
CN115002236B (zh) 一种数据协议可视化配置的边缘软网关
CN113765872B (zh) 一种自适应数据格式转换适配的方法和系统
CN111447279B (zh) 服务器及接口解析服务包生成方法
CN109373524B (zh) 空调接入云端的协议转换方法、系统及空调系统
CN114157732A (zh) 一种大中型固定翼无人机遥测数据解析方法及系统
CN108737525A (zh) 一种基于REST架构的Web服务系统
CN111147510A (zh) 一种基于soa反射工厂架构的数据采集系统及方法
CN114499759B (zh) 报文生成方法、装置、电子设备及存储介质
CN117235052B (zh) 一种数据库语句处理方法和装置
CN107580152B (zh) 语音增值业务系统及其通信方法
CN118042026A (zh) 一种基于python的数据链消息报文解析方法及装置
JP3367055B2 (ja) データ転送方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant