首页 / 专利库 / 人工智能 / N元标识符 / 一种通讯数据流的通用数据解析平台及方法

一种通讯数据流的通用数据解析平台及方法

阅读:1016发布:2020-06-06

专利汇可以提供一种通讯数据流的通用数据解析平台及方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种通讯数据流的通用数据解析平台及方法。该平台包括源数据封装包模 块 、参数化配置列表模块和报文通用处理系统。方法为:首先创建具体的报文数据格式,得到报文数据 帧 格式;用C++语言为“特征块”定义特征块结构体;根据参数化配置列表填充特征块结构体、特征块的相对 位置 与字节数,确定解析时序,并选择特征块输出格式;然后对源数据封装包进行解析;接着删除该条报文,将 迭代 器从遍历M条报文变为遍历M‑1条报文,以此类推,直至迭代器只需遍历一次即可检索到所需属性的特征报文,完成解析。本发明简化了系统复杂度,统一规范了系统各分系统数据解析的操作方法,操作简单、提高了系统通讯数据流的处理效率。,下面是一种通讯数据流的通用数据解析平台及方法专利的具体信息内容。

1.一种通讯数据流的通用数据解析平台,其特征在于,包括源数据封装包、参数化配置列表和报文通用处理系统;
所述源数据封装包,用于将系统监听口监听所得的数据,以二进制码形式基于TLV规范编码格式封装成包,并以.bin格式文件存入指定缓冲区;
所述参数化配置列表,用于根据预先设定的参数,对源数据封装包中的不同类型具体报文内容进行正则表达式匹配,获取匹配规则对应的状态编号和内容的位置信息;根据预先设定的通用参数化配置列表,获取与状态编号对应的通用规则,并根据通用规则和位置信息及缓存的待解析报文,输出需要的字段,等待解析;
所述报文通用处理系统,包括报文通用性解析模,用于解析储存在报文参数化配置列表中的全局数组。
2.根据权利要求1所述的通讯数据流的通用数据解析平台,其特征在于,所述的TLV规范编码格式,具体如下:
每个TLV规范编码格式的基本的源数据元包括三个域:
“T”指Tag,是该源数据元的唯一标识,描述Value的数据类型,在TLV嵌套时用于描述消息的类型;Tag由一个或多个字节组成;该自定义TLV编码中,Tag描述不同报文具体报文标识符;
“L”指Length,描述Value的长度,自定义TLV编码中,Length描述Value部分所占字节的个数;编码格式分为两类:定长方式和不定长方式,其中定长方式又包括短形式与长形式;
“V”指Value,描述该条源数据的具体内容;Value由一个或多个值组成。
3.根据权利要求2所述的通讯数据流的通用数据解析平台,其特征在于,所述的TLV编码中Length的两类编码格式中,短形式与长形式具体如下:
定长方式中,短形式是指Value类型长度不超过127,Length只需要一个8位,其字节第7位为0的字节来表示;
定长方式中,长形式是指Value类型长度大于127时,Length需要多个字节来描述,这时第一个字节的第7位置为1,0~6位用来描述Length值占用的字节数,然后将Length值转为BYTE后附在第一个字节后。
4.根据权利要求1所述的通讯数据流的通用数据解析平台,其特征在于,所述的缓冲区,具体如下:
所述缓冲区是一种关联式容器Map,该容器Map中每一个元素由一个键值和一个数据值组成;该容器Map使用红黑树的平衡二叉树数据结构,将源数据封装包按一条一条的报文数据存入每一个元素的数据值中;该容器Map具有删除元素的特点,将原先报文解析查找的复杂度从M*N变为Log(M)。
5.根据权利要求1所述的通讯数据流的通用数据解析平台,其特征在于,所述的参数化配置列表,具体如下:
所述参数化配置列表,基于“黑盒子”思想,预先将不同报文具体内容参数化存入配置文件.ini中,若用户指令为载入配置文件指令,则可同时载入N个报文的参数化配置列表,每一个参数化配置列表即代表一种报文;
所述参数化配置列表由节、键、值组成,预先按统一格式编写,其中节按具体报文内容从0至n依次填写;键按通用格式编写,该通用格式对应代码中的结构体;值是键对应的具体内容。
6.根据权利要求5所述的通讯数据流的通用数据解析平台,其特征在于,所述的通用格式,具体如下:
标题:用于表示该报文报头符Tag,并作为生成文件名;
描述:为该报文协议具体的内容Value;
关联:为该INI文件关联到源数据封装包中该条报文具体的字节位置;
特征属性:为通用报文格式,包括该条报文的某个具体内容的位置、该条报文的长度、输入的类型、输出的格式、有无分辨率
7.一种通讯数据流的通用数据解析方法,其特征在于,包括以下步骤:
步骤1、定义一种由“特征块”为基本单位组成的通用数据格式,依据抽象的数据格式描述创建具体的报文数据格式,得到报文数据格式;通用数据格式由标识块、数据块和校验块组成,其中,标志块是报文种类的标识Tag,是该类报文第一个字节;校验块是用于判别该类报文是否需要解析;
步骤2、用C++语言为“特征块”定义特征块结构体;特征块结构体包括特征块字节数的变量、特征块属性的变量和为特征结构体选择输出格式的变量;
步骤3、读取步骤1中定义的通用数据格式,根据参数化配置列表填充步骤2中定义的特征块结构体、特征块的相对位置与字节数,确定解析时序,并通过读取参数化配置列表为特征块选择输出格式;
步骤4、对源数据封装包进行解析,源数据封装包是字节流,解析时,首先从预先编写的参数化配置列表中读出位置偏量,位置偏量是当前数据帧字节数与当前特征数据块的位置之差;然后根据迭代器iterator循环遍历容器Map中所有报文,根据特征特征数据块中的标识块Tag确定所需解析的报文;接着根据当前特征数据块的属性从相应报文数据流中的该数据块进行字节解析,当该数据块解析完毕后,将数据进行步骤3中的条件选择语句,选择合适的输出格式进行输出;最后设置数据块偏移,进行下一数据块的解析,直至该条报文解析完毕;
步骤5、该条报文解析完毕后,通过容器Map的删除元素erase()函数删除该条报文,将迭代器从遍历M条报文变为遍历M-1条报文,以此类推,直至迭代器只需遍历一次即可检索到所需属性的特征报文,最后进行步骤1~步骤4完成解析。

说明书全文

一种通讯数据流的通用数据解析平台及方法

技术领域

[0001] 本发明涉及通信技术领域,特别是一种通讯数据流的通用数据解析平台及方法。

背景技术

[0002] 数据分析系统是参与装备试验的重要工具,试验指挥人员利用数据录取系统提供的信息掌握整个试验态势,及时对试验进程做出正确的指挥决策;试验结果分析人员利用解析试验数据进行战技性能测试;参试装备设计人员利用采集系统提供的试验全过程数据,挖掘有效信息,发现问题、提高装备总体性能。
[0003] 目前在试验数据处理方面,主要采用人工判读报文、手动计算的方式,效率低下、试验和系统性能评估工作耗时冗长。

发明内容

[0004] 本发明的目的在于提供一种处理效率高、通用性强的通讯数据流的通用数据解析平台及方法。
[0005] 实现本发明目的的技术解决方案为:一种通讯数据流的通用数据解析平台,包括源数据封装包、参数化配置列表和报文通用处理系统;
[0006] 所述源数据封装包,用于将系统监听口监听所得的数据,以二进制码形式基于TLV规范编码格式封装成包,并以.bin格式文件存入指定缓冲区;
[0007] 所述参数化配置列表,用于根据预先设定的参数,对源数据封装包中的不同类型具体报文内容进行正则表达式匹配,获取匹配规则对应的状态编号和内容的位置信息;根据预先设定的通用参数化配置列表,获取与状态编号对应的通用规则,并根据通用规则和位置信息及缓存的待解析报文,输出需要的字段,等待解析;
[0008] 所述报文通用处理系统,包括报文通用性解析模,用于解析储存在报文参数化配置列表中的全局数组。
[0009] 进一步地,所述的TLV规范编码格式,具体如下:
[0010] 每个TLV规范编码格式的基本的源数据元包括三个域:
[0011] “T”指Tag,是该源数据元的唯一标识,描述Value的数据类型,在TLV嵌套时用于描述消息的类型;Tag由一个或多个字节组成;该自定义TLV编码中,Tag描述不同报文具体报文标识符;
[0012] “L”指Length,描述Value的长度,自定义TLV编码中,Length描述Value部分所占字节的个数;编码格式分为两类:定长方式和不定长方式,其中定长方式又包括短形式与长形式;
[0013] “V”指Value,描述该条源数据的具体内容;Value由一个或多个值组成。
[0014] 进一步地,所述的TLV编码中Length的两类编码格式中,短形式与长形式具体如下:
[0015] 定长方式中,短形式是指Value类型长度不超过127,Length只需要一个8位,其字节第7位为0的字节来表示;
[0016] 定长方式中,长形式是指Value类型长度大于127时,Length需要多个字节来描述,这时第一个字节的第7位置为1,0~6位用来描述Length值占用的字节数,然后将Length值转为BYTE后附在第一个字节后。
[0017] 进一步地,所述的缓冲区,具体如下:
[0018] 所述缓冲区是一种关联式容器Map,该容器Map中每一个元素由一个键值和一个数据值组成;该容器Map使用红黑树的平衡二叉树数据结构,将源数据封装包按一条一条的报文数据存入每一个元素的数据值中;该容器Map具有删除元素的特点,将原先报文解析查找的复杂度从M*N变为Log(M)。
[0019] 进一步地,所述的参数化配置列表,具体如下:
[0020] 所述参数化配置列表,基于“黑盒子”思想,预先将不同报文具体内容参数化存入配置文件.ini中,若用户指令为载入配置文件指令,则可同时载入N个报文的参数化配置列表,每一个参数化配置列表即代表一种报文;
[0021] 所述参数化配置列表由节、键、值组成,预先按统一格式编写,其中节按具体报文内容从0至n依次填写;键按通用格式编写,该通用格式对应代码中的结构体;值是键对应的具体内容。
[0022] 进一步地,所述的通用格式,具体如下:
[0023] 标题:用于表示该报文报头符Tag,并作为生成文件名;
[0024] 描述:为该报文协议具体的内容Value;
[0025] 关联:为该INI文件关联到源数据封装包中该条报文具体的字节位置;
[0026] 特征属性:为通用报文格式,包括该条报文的某个具体内容的位置、该条报文的长度、输入的类型、输出的格式、有无分辨率
[0027] 一种通讯数据流的通用数据解析方法,包括以下步骤:
[0028] 步骤1、定义一种由“特征块”为基本单位组成的通用数据格式,依据抽象的数据格式描述创建具体的报文数据格式,得到报文数据格式;通用数据格式由标识块、数据块和校验块组成,其中,标志块是报文种类的标识Tag,是该类报文第一个字节;校验块是用于判别该类报文是否需要解析;
[0029] 步骤2、用C++语言为“特征块”定义特征块结构体;特征块结构体包括特征块字节数的变量、特征块属性的变量和为特征结构体选择输出格式的变量;
[0030] 步骤3、读取步骤1中定义的通用数据格式,根据参数化配置列表填充步骤2中定义的特征块结构体、特征块的相对位置与字节数,确定解析时序,并通过读取参数化配置列表为特征块选择输出格式;
[0031] 步骤4、对源数据封装包进行解析,源数据封装包是字节流,解析时,首先从预先编写的参数化配置列表中读出位置偏量,位置偏量是当前数据帧字节数与当前特征数据块的位置之差;然后根据迭代器iterator循环遍历容器Map中所有报文,根据特征特征数据块中的标识块Tag确定所需解析的报文;接着根据当前特征数据块的属性从相应报文数据流中的该数据块进行字节解析,当该数据块解析完毕后,将数据进行步骤3中的条件选择语句,选择合适的输出格式进行输出;最后设置数据块偏移,进行下一数据块的解析,直至该条报文解析完毕;
[0032] 步骤5、该条报文解析完毕后,通过容器Map的删除元素erase()函数删除该条报文,将迭代器从遍历M条报文变为遍历M-1条报文,以此类推,直至迭代器只需遍历一次即可检索到所需属性的特征报文,最后进行步骤1~步骤4完成解析。
[0033] 本发明与现有技术相比,其显著优点为:(1)简化了系统复杂度,统一规范了系统各分系统数据解析的操作方法,简化了操作步骤,提高了系统通讯数据流的处理效率;(2)通过数据结构中容器的模型,将基于TLV规范编码的源数据封装包按键值对的形式一条一条载入内存池,存取数据更加高效快速;(3)通过读取参数化配置列表中特征属性块来选择容器Map的迭代器在内存池中循环遍历,一旦该条报文解析完成则安全删除该条报文,提高了解析速度。附图说明
[0034] 图1为本发明通讯数据流的通用数据解析平台的结构示意图。
[0035] 图2为本发明通讯数据流的通用数据解析方法的流程示意图。
[0036] 图3为本发明实例中源数据封装包TLV规范编码格式示意图。
[0037] 图4为本发明实例中载入源数据封装包模块处理流程示意图。
[0038] 图5为本发明实例中参数化配置列表特征属性通用格式示意图。
[0039] 图6为本发明实例中载入参数化配置列表模块处理流程示意图。
[0040] 图7为本发明实例中解析模块处理流程示意图。

具体实施方式

[0041] 本发明通讯数据流的通用数据解析平台,包括源数据封装包、参数化配置列表和报文通用处理系统;
[0042] 所述源数据封装包,用于将系统监听口监听所得的数据,以二进制码形式基于TLV规范编码格式封装成包,并以.bin格式文件存入指定缓冲区;
[0043] 所述参数化配置列表,用于根据预先设定的参数,对源数据封装包中的不同类型具体报文内容进行正则表达式匹配,获取匹配规则对应的状态编号和内容的位置信息;根据预先设定的通用参数化配置列表,获取与状态编号对应的通用规则,并根据通用规则和位置信息及缓存的待解析报文,输出需要的字段,等待解析;
[0044] 所述报文通用处理系统,包括报文通用性解析模块,用于解析储存在报文参数化配置列表中的全局数组。
[0045] 进一步地,所述的TLV规范编码格式,具体如下:
[0046] 每个TLV规范编码格式的基本的源数据元包括三个域:
[0047] “T”指Tag,是该源数据元的唯一标识,描述Value的数据类型,在TLV嵌套时用于描述消息的类型;Tag由一个或多个字节组成;该自定义TLV编码中,Tag描述不同报文具体报文标识符;
[0048] “L”指Length,描述Value的长度,自定义TLV编码中,Length描述Value部分所占字节的个数;编码格式分为两类:定长方式和不定长方式,其中定长方式又包括短形式与长形式;
[0049] “V”指Value,描述该条源数据的具体内容;Value由一个或多个值组成。
[0050] 进一步地,所述的TLV编码中Length的两类编码格式中,短形式与长形式具体如下:
[0051] 定长方式中,短形式是指Value类型长度不超过127,Length只需要一个8位,其字节第7位为0的字节来表示;
[0052] 定长方式中,长形式是指Value类型长度大于127时,Length需要多个字节来描述,这时第一个字节的第7位置为1,0~6位用来描述Length值占用的字节数,然后将Length值转为BYTE后附在第一个字节后。
[0053] 进一步地,所述的缓冲区,具体如下:
[0054] 所述缓冲区是一种关联式容器Map,该容器Map中每一个元素由一个键值和一个数据值组成;该容器Map使用红黑树的平衡二叉树数据结构,将源数据封装包按一条一条的报文数据存入每一个元素的数据值中;该容器Map具有删除元素的特点,将原先报文解析查找的复杂度从M*N变为Log(M)。
[0055] 进一步地,所述的参数化配置列表,具体如下:
[0056] 所述参数化配置列表,基于“黑盒子”思想,预先将不同报文具体内容参数化存入配置文件.ini中,若用户指令为载入配置文件指令,则可同时载入N个报文的参数化配置列表,每一个参数化配置列表即代表一种报文;
[0057] 所述参数化配置列表由节、键、值组成,预先按统一格式编写,其中节按具体报文内容从0至n依次填写;键按通用格式编写,该通用格式对应代码中的结构体;值是键对应的具体内容。
[0058] 进一步地,所述的通用格式,具体如下:
[0059] 标题:用于表示该报文报头符Tag,并作为生成文件名;
[0060] 描述:为该报文协议具体的内容Value;
[0061] 关联:为该INI文件关联到源数据封装包中该条报文具体的字节位置;
[0062] 特征属性:为通用报文格式,包括该条报文的某个具体内容的位置、该条报文的长度、输入的类型、输出的格式、有无分辨率。
[0063] 本发明通讯数据流的通用数据解析方法,包括以下步骤:
[0064] 步骤1、定义一种由“特征块”为基本单位组成的通用数据格式,依据抽象的数据格式描述创建具体的报文数据格式,得到报文数据帧格式;通用数据格式由标识块、数据块和校验块组成,其中,标志块是报文种类的标识Tag,是该类报文第一个字节;校验块是用于判别该类报文是否需要解析;
[0065] 步骤2、用C++语言为“特征块”定义特征块结构体;特征块结构体包括特征块字节数的变量、特征块属性的变量和为特征结构体选择输出格式的变量;
[0066] 步骤3、读取步骤1中定义的通用数据格式,根据参数化配置列表填充步骤2中定义的特征块结构体、特征块的相对位置与字节数,确定解析时序,并通过读取参数化配置列表为特征块选择输出格式;
[0067] 步骤4、对源数据封装包进行解析,源数据封装包是字节流,解析时,首先从预先编写的参数化配置列表中读出位置偏量,位置偏量是当前数据帧字节数与当前特征数据块的位置之差;然后根据迭代器iterator循环遍历容器Map中所有报文,根据特征特征数据块中的标识块Tag确定所需解析的报文;接着根据当前特征数据块的属性从相应报文数据流中的该数据块进行字节解析,当该数据块解析完毕后,将数据进行步骤3中的条件选择语句,选择合适的输出格式进行输出;最后设置数据块偏移,进行下一数据块的解析,直至该条报文解析完毕;
[0068] 步骤5、该条报文解析完毕后,通过容器Map的删除元素erase()函数删除该条报文,将迭代器从遍历M条报文变为遍历M-1条报文,以此类推,直至迭代器只需遍历一次即可检索到所需属性的特征报文,最后进行步骤1~步骤4完成解析。
[0069] 下面结合附图及具体实施例对本发明作进一步详细的说明。
[0070] 实施例1
[0071] 结合图1,本发明通讯数据流的通用数据解析平台,包括源数据封装包模块、参数化配置列表模块和报文通用处理系统。
[0072] 结合图2,本发明一种通讯数据流的通用数据解析方法,包括以下步骤:包括特征块的数量、报文的报头符、特征块的标识符、报文的名称、特征块内容、特征块的名称、特征块的位置,特征块的长度,特征块的输入类型,特征块的输出格式以及是否有分辨率[0073] 步骤1、定义一种由“特征块”为基本单位组成的通用数据格式,依据抽象的数据格式描述创建具体的报文数据格式,得到报文数据帧格式;通用数据格式由标识块、数据块和校验块组成,其中,标志块是报文种类的标识Tag,是该类报文第一个字节;校验块是用于判别该类报文是否需要解析;
[0074] 步骤2、用C++语言为“特征块”定义特征块结构体;特征块结构体包括特征块字节数的变量、特征块属性的变量和为特征结构体选择输出格式的变量;
[0075] 步骤3、读取步骤1中定义的通用数据格式,根据参数化配置列表填充步骤2中定义的特征块结构体、特征数据块的相对位置与字节数,确定解析时序,并通过读取参数化配置列表为特征数据块选择输出格式;
[0076] 步骤4、对源数据封装包进行解析,源数据封装包是字节流,解析时,首先从预先编写的参数化配置列表中读出位置偏量,位置偏量是当前数据帧字节数与当前特征数据块的位置之差;然后根据迭代器iterator循环遍历容器Map中所有报文,根据特征特征数据块中的标识块Tag确定所需解析的报文;接着根据当前特征数据块的属性从相应报文数据流中的该数据块进行字节解析,当该数据块解析完毕后,将数据进行步骤3中的条件选择语句,选择合适的输出格式进行输出;最后设置数据块偏移,进行下一数据块的解析,直至该条报文解析完毕;
[0077] 步骤5、该条报文解析完毕后,通过容器Map的删除元素erase()函数删除该条报文,将迭代器从遍历M条报文变为遍历M-1条报文,以此类推,直至迭代器只需遍历一次即可检索到所需属性的特征报文,最后进行步骤1~步骤4完成解析。
[0078] 图2为本发明实例中系统通用数据处理方法的流程示意图。在实际应用中,数据定义的格式可能不同,本发明基于TLV规范编码自定义了一种编码格式。以源数据封装包TLV规范编码格式为例,结合图3,本发明参考数据TLV编码格式规范自定义此格式,将某一类系统报文的具体某一条报文以Tag、Length、Value格式嵌套存储,Tag表示该条报文的报头符,Length表示该条报文的长度,Value表示该条报文的内容;在Value中又不断嵌套了该条报文具体内的特征块符Tag、特征块长度Length以及特征块内容Value,解析时也必须按照此规范格式顺序解码。
[0079] 结合图4,载入源数据封装包时,利用数据结构中容器Map的类模板数据格式按键值对的形式一条一条报文存入,每一条报文严格按照Tag、Length、Value字节顺序组成。
[0080] 具体代码编写参考如下所示:
[0081]
[0082] 结合图5的参数化配置列表格式,将不同类型报文参数化且按统一的格式编写,其特征属性内容包括特征块的数量、报文的报头符、特征块的标识符、报文的名称、特征块内容、特征块的名称、特征块的位置、特征块的长度、特征块的输入类型、特征块的输出格式以及是否有分辨率、报文中内容的字节位置、存入的数据类型以及输出的数据格式等。将其循环存入全局数组中,其全局数组对应的“特征块”以C++语言定义于程序中。
[0083] 具体代码编写参考如下所示:
[0084]
[0085] 结合图6,为参数化配置列表载入模块,首先将报文内容参数化预处理,将特征块的数量、报文报头符、特征块标识符、报文名称、特征块内容、某一特征块名称、某一特征块位置、某一特征块长度、某一特征块输入类型、某一特征块输出格式、是否有分辨率编写进入参数化配置列表,然后按此格式依次存入全局数组FileBuffer[]中。
[0086] 结合图7,为解析流程,首先从全局数组FileBuffer[]中依次读出不同类型具体报文的参数化内容,利用迭代器Iterator循环遍历容器Map,若遍历的报文报头符Tag匹配不成功,则继续遍历下一条报文,直到容器全部遍历结束;若遍历的报头符Tag匹配成功,则根据通用特征结构体顺序读取FileBuffer[]内容,根据具体特征属性内容,按特征块的Length取出该特征块放入缓存区,然后根据参数化配置列表属性选择基础数据类型和选择输出格式,判断有无分辨,若有分辨率则实际的解析数据=解析数据*分辨率,若无,则直接解析;该条报文解析完毕后,从容器Map中删除该条报文,继续迭代器的下一次遍历匹配,直至将容器内存池中的所有报文解析完毕;最后将解析结果写入特定文件输出。
[0087] 综上所述,本发明简化了系统复杂度,统一规范了系统各分系统数据解析的操作方法,操作简单、提高了系统通讯数据流的处理效率。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈