CN112511551A - 面向多种类型数据流的通信应用层协议解析方法及系统 - Google Patents
面向多种类型数据流的通信应用层协议解析方法及系统 Download PDFInfo
- Publication number
- CN112511551A CN112511551A CN202011420515.9A CN202011420515A CN112511551A CN 112511551 A CN112511551 A CN 112511551A CN 202011420515 A CN202011420515 A CN 202011420515A CN 112511551 A CN112511551 A CN 112511551A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- type
- target data
- matching
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种面向多种类型数据流的通信应用层协议解析方法及系统,所述方法包括:根据通信应用层协议定义解析语法,使用以可读字符串为格式的解析语法描述通信应用层协议,解析语法由多个最小匹配规则的组成;加载解析语法,将定义的解析语法由字符串映射为计算机程序片段;执行解析,获取源数据流,从第一个最小匹配规则开始执行,执行完第一个最小匹配规则,更新起始位置,再执行下一个最小匹配规则,直至执行完所有最小匹配规则,输出解析的目标数据和标签;所述系统包括:选择单元、解析语法加载单元、解析语法保存单元、获取单元、解析语法执行单元、显示单元和目标数据保存单元。本发明提升了数据可读性和调试分析效率。
Description
技术领域
本发明涉及计算机通信领域,具体涉及一种面向多种类型数据流的通信应用层协议解析方法及系统。
背景技术
格式化数据流广泛应用于计算机数字通信中,包括字符流和二进制数流。字符流可读性强,在与人交互性强的场景下应用广泛;二进制数流占用带宽小、实时性高,在工业场景下优势更加突出。
涉及到控制器与控制器或者传感器与控制器通信功能的开发流程一般为:1、确定硬件层协议,2、确定驱动层协议,3、获取应用层协议,4、根据协议编写程序。硬件层协议和驱动层协议已高度标准化,应用层协议定义了原始数据流到目标数据的映射方式,过程一般为先查询原始数据流中的目标数据片段,再将目标数据片段按格式拼接转换成目标数据。按查询原始数据流中目标数据片段的方式可分为内容式和位置式,内容式为查询符合某一特征的内容获取数据片段,位置式为查询目标数据片段在数据流中的绝对位置获取数据片段。应用层协议常常高度定制化,这导致了软件开发工作繁杂琐碎。
文献【丁晶,陈晓岚,吴萍.基于正则表达式的深度包检测算法[J].计算机应用,2007,27(9):2184-2186.】介绍到:正则表达式描述了一种字符串的匹配模式,可以用来检查一个串是否含有某个子串,将匹配的子串做替换或者从某个串中提取某个符合某个条件的子串等。这表明正则表达式可以完成解析通信应用层协议的工作,对于开发者,不需要将通信应用层协议直接映射为编程代码,而是将其直接映射到简短易读的正则表达式匹配规则上,可以有效地减少代码数量,提升开发效率。但正则表达式只针对字符型数据,无法直接应用于二进制型数据上。
目前有许多常规的串口、CAN调试助手软件,其基本功能是读取字符或二进制数流中的原始数据并显示在屏幕上,可以完成串口、CAN报文的分析功能,有助于开发者调试。这种串口、CAN调试助手软件无法解析隐含在原始数据中的目标数据。开发者无法便捷地获取对数据的直观体验,调试效率有待提高。
针对这一问题,部分传感器供应商等提供了针对其产品定制化的调试助手,这样的调试助手可以解析应用层协议,因此可以便捷地实现数据可视化,但往往存在操作系统不兼容的问题,通用性较差。
德国Vector公司发布一种DBC文件格式用于解析CAN协议,DBC文件由可读字符串组成。有些CAN调试助手可以加载DBC文件实现通信应用层的解析。DBC文件只能描述位置式协议,基于DBC的文件格式无法描述内容式协议,且只能够处理二进制数流。
公开号为201810289074.X的专利申请《一种基于正则表达式的DBC文件解析及报文分析方法》用正则表达式做匹配的方法解析DBC文件和CAN帧,正则表达式无法直接处理二进制数流,该方法先将二进制数据流转成字符流再对字符流进行操作,而基于数据解析本质这种转化是不必要的。且由于该方法基于DBC文件,同样存在着只能够支持位置式应用层协议和只能够处理二进制数流的问题,无法推广到更一般地面向多种类型数据流的应用层协议解析上。
发明内容
本发明的目的在于提供一种面向多种类型数据流的通信应用层协议解析方法及系统,该方法支持多种类型源数据流,可解析的通信应用层协议更加广泛。
实现本发明目的的技术方案为:
一种面向多种类型数据流的通信应用层协议解析方法,包括以下步骤:
根据通信应用层协议定义解析语法,使用以可读字符串为格式的解析语法描述通信应用层协议,解析语法由多个最小匹配规则组成;
加载解析语法,将定义的解析语法由字符串映射为计算机程序片段;
执行解析语法,获取源数据流,从第一个最小匹配规则开始执行,执行完第一个最小匹配规则,更新起始位置,再执行下一个最小匹配规则,直至执行完所有最小匹配规则,输出解析的目标数据和标签。
进一步的,所述最小匹配规则依次包括一个匹配单元、若干个提取单元和转换单元,提取单元和转换单元成对出现。
进一步的,所述匹配单元用于描述目标数据片段的位置,其语法为:描述源数据流类型,包括字符流和二进制数流;描述匹配规则,包括内容式和位置式,内容式用元素集和重复次数说明符的集合表示,元素集为一组字符或二位十六进制数的集合,位置式表示匹配片段位于源数据流的绝对位置。
进一步的,所述提取单元用于在所述匹配单元的基础上提取目标数据片段,其语法为:描述执行提取操作的最小数据单元类型,包括字符型、二位十六进制数型和布尔数型;描述执行提取操作的起始位,起始位为匹配单元的首位或匹配结果的尾后移一位;描述提取规则,包括内容式和位置式,内容式用元素集和重复次数说明符的集合表示,元素集为一组字符、二位十六进制数或布尔数的集合,位置式中的位置表示以执行提取操作的起始位为零位的偏移位置。
进一步的,所述转换单元用于将提取出的数据片段拼接转换成目标格式的数据,其语法为:描述目标数据类型,包括字符串、整型数据、布尔型数据、单精度浮点型数据、双精度浮点型数据,其中浮点型数据可设置内存拷贝模式;描述目标数据的标签,用于唯一标记一个提取数据的名称;描述零位偏差和比例偏差,零位偏差和比例偏差对整型和浮点型目标数据有效,二者可同时出现或同时省略。
进一步的,所述映射为计算机程序片段后,对于匹配单元和提取单元,还各自包括有限状态机网络,有限状态机网络由元素集与重复次数集合生成。
进一步的,所述执行最小匹配规则具体为:
执行匹配单元,判断匹配规则,内容式时通过有限状态机网络从起始位置进行匹配获取匹配结果,位置式时通过直接访问绝对位置获取匹配结果,匹配结果为匹配数据的首位置和尾位置,将匹配结果输入提取单元;
执行提取单元,接收匹配结果,由标志位判断执行提取操作的首位数据是匹配数据的首位还是尾位后移一位,从执行提取操作的首位数据开始,先按目标数据片段类型将源数据流转换成对应类型的提取数据流,对提取数据流按内容式或位置式进行数据提取,提取到目标数据片段,将目标数据片段和目标数据片段在源数据流的最后位置输入至转换单元;
执行转换单元,得到目标数据和标签。
进一步的,所述执行每个最小匹配规则后,输出所有转换单元的键值映射结果,同时将目标数据片段最大位置后移一位赋给起始位置。
一种面向多种类型数据流的通信应用层协议解析系统,包括:
选择单元,用于选择通信应用层协议;
解析语法加载单元,用于加载根据当前通信应用层协议定义的解析语法;
解析语法保存单元,用于保存加载的当前通信应用层协议的解析语法;
获取单元,用于获取源数据流;
解析语法执行单元,用于对源数据流通过解析语法进行解析,得到目标数据和标签;
显示单元,包括目标数据显示单元和标签显示单元,目标数据显示单元包括字符串型数据显示单元、整型和浮点型数据显示单元以及布尔型数据显示单元,标签显示单元用于显示解析语法执行的结果;
目标数据保存单元,用于保存解析语法执行单元解析的目标数据。
进一步的,解析语法加载单元通过输入或者导入文本的方式加载解析语法;所述字符串型数据显示单元包括字符型数据下拉菜单和显示列表框;所述整型和浮点型数据显示单元包括Y轴数据下拉菜单、X轴数据下拉菜单、数据截取时间长度输入框和数据显示二维图,数据显示二维图为Y-time型或Y-X型;所述布尔型数据显示单元包括尔型数据下拉菜单和布尔型数据指示灯,指示灯为绿色表示该数据布尔值为1,为红色表示该数据布尔值为0;目标数据保存单元保存文件格式为表格xlsx文档,保存内容格式为:第一行为目标数据的名称,剩余行为目标数据的内容。
与现有技术相比,本发明的显著优点为:
(1)本发明的方法支持多种类型源数据流,支持内容式和位置式匹配规则,可以应用到串口等其他通信手段的应用层协议的快速解析中,可解析的通信应用层协议更加广泛;
(2)与背景技术中提到的《一种基于正则表达式的DBC文件解析及报文分析方法》相比,本发明的方法通过扩展正则表达式匹配语法使之能够对二进制型数据流进行解析,而非先将二进制型数据流转成字符流,再对字符流进行解析,省略了直接转换源数据流类型的步骤;
(3)本发明可以有效地提升数据可读性,提升了调试分析效率;
(4)本发明的系统可以选择通信应用层协议,并且实现目标数据的快速可视化。
附图说明
图1是本发明方法的流程示意图。
图2是本发明系统实施例的主界面示意图。
图3是本发明实施例中字符串型数据显示界面示意图。
图4是本发明实施例中整型和浮点型数据显示界面示意图。
图5是本发明实施例中布尔型数据显示界面示意图。
具体实施例
为使本发明的目的、技术方案和优点更加清楚,下结合附图对本发明的实施方式作进一步说明。
结合图1,基于正则表达式,提出一种面向多种类型数据流的通信应用层协议解析方法,包括以下步骤:
根据通信应用层协议定义解析语法,使用以可读字符串为格式的解析语法描述通信应用层协议,解析语法由多个最小匹配规则的组成;
加载解析语法,将定义的解析语法由字符串映射为计算机程序片段;
执行解析语法,获取源数据流,从第1个最小匹配规则开始执行,执行完第一个最小匹配规则,更新起始位置,再执行下一个最小匹配规则,直至执行完所有最小匹配规则,输出解析的目标数据和标签。
定义解析语法具体为:
使用以可读字符串为格式的解析语法描述通信应用层协议。一个解析语法由多个最小匹配规则的组成,相邻最小匹配规则由控制字符/分隔。
最小匹配规则至少包括三个单元:匹配单元、提取单元和转换单元,不同单元之间用控制字符{}分隔。最小匹配规则有且只有一个匹配单元,提取单元和转换单元成对出现,至少一对,排列顺序为匹配单元、提取单元1、转换单元1、提取单元2、转换单元2……。
匹配单元用于描述目标数据片段的位置。其语法为:先用控制字符\c,\x描述匹配源数据流类型,其中\c表示源数据流是字符型数据,最小数据单元是char,\x表示二进制型,最小数据单元类型是u_int8_t;再描述匹配规则,包括内容式和位置式,内容式用元素集和重复次数说明符的集合表示,对于字符型源数据流,其元素集和重复次数说明符格式与常规正则表达式类似,如ab*c{1,4},表示匹配a一次,匹配b零到无限次,匹配c一到四次,对于二进制型数据流,元素集用二位十六进制数表示,如f1f2*f3{1,4},表示匹配0xf1一次,匹配0xf2零到无限次,匹配0xf3一到四次,位置式通过控制字符\<描述,格式为\<m>,表示位于源数据流的第m位数据。
提取单元用于在匹配单元的基础上提取目标数据片段,其语法为:先描述提取最小数据单元类型,用\c,\x、\b描述,其中\c表示以字符为单元提取数据,\x表示以二位十六进制数为单元提取数据,\b表示表示以布尔数为单元提取数据;再描述提取单元的执行起始位,用控制字符\h描述,添加\h时,表示匹配单元匹配结果的首位,未添加\h时,表示匹配单元匹配结果的尾后移一位;最后描述提取规则,包括内容式和位置式,内容式下对于字符型提取最小数据单元类型,元素集为可读字符,对于二位十六进制数提取最小数据单元类型,元素集用二位十六进制数字表示,可以添加空格表示分隔,对于布尔数型提取最小数据单元类型,元素集用0和1表示。位置式表示以执行提取操作起始位为零位的偏移位置,格式为\<n>、\<lmn>、\<n-m>,分别表示以提取单元执行起始位为零位提取第n位数据、提取第l第m和第n位数据、提取第n到第m位之间的数据,最小数据单元类型为字符型和二位十六进制数型下提取的数据单位是字节,布尔数型下提取的数据是单位比特。
转换单元用于将提取出的数据片段拼接转换成目标格式的数据,其语法为:先描述目标数据类型控制字符,包括\c、\d、\b、\f、\lf,其中\c表示目标数据为字符串,\d表示目标数据是整型数据,\b表示目标数据是布尔型数据,\f表示目标数据是单精度浮点型数据,\lf表示目标数据是双精度浮点型数据。其中浮点型数据可设置内存拷贝模式,内存拷贝模式表示将数据片段通过内存拷贝的方式直接转换成浮点型数据,非内存拷贝模式表示将数据片段先转换成整型再转换成浮点型数据,其中\f和\lf可增加控制字符m,m表示内存拷贝模式,如\f表示将数据片段先转换成整型再转化成浮点型数据,\fm表示将数据片段通过内存拷贝的方式直接转换成浮点型数据;再描述目标数据的标签,标签为一个字符串,用于唯一标记一个提取结果的名称,一个正则表达式中标签不能出现重复;最后描述零位偏差和比例偏差,零位偏差和比例偏差对整型和浮点型目标数据有效,零位偏差和比例偏差同时出现,也可同时省略。
控制字符及其含义汇总为表1。
表1控制字符及其含义
加载解析语法具体为:
每个最小匹配规则下维护一个匹配单元,一个或多个提取单元和转换单元,提取单元和转换单元成对出现。
匹配单元有如下字段:源数据流类型、匹配规则、元素集合与重复次数vector、匹配绝对位置、有限状态机网络。其中源数据流类型包括字符型和二制型,匹配规则包括内容式和位置式,内容式下元素集与重复次数vector有效,元素集与重复次数用于描述一个元素集和这个集可以出现的次数。元素集与重复次数vector生成有限状态机网络,位置式下匹配绝对位置有效,匹配绝对位置用于描述匹配的数据位于源数据流中的绝对位置。
提取单元有如下字段:最小数据单元类型、执行提取操作起始标志位、元素集与重复次数vector、提取数据片段位置vector、有限状态机网络。其中最小数据单元类型包括字符型、二位十六进制数型和布尔型,执行提取操作起始标志位表示执行提取操作的起始位置,有两种,一是从匹配结果的首位,二是匹配结果的尾后移一位,提取类型包括内容式和位置式,内容式下元素集与重复次数vector有效,元素集与重复次数vector生成有限状态机网络,位置式下匹配位置vector有效,匹配位置vector用于描述目标数据片段位于源数据流中的位置,其位置时以执行提取操作的首位为零位的偏移位置。
转换单元有如下字段:目标数据类型、内存拷贝标志位、标签、零位偏差和比例偏差。目标数据类型包括整型、布尔型、字符串型、单精度浮点型和双精度浮点型。内存拷贝标志位在目标数据为浮点型时有效,表示类型转换是直接内存拷贝的方式,与之相对的是先转成整型再转成浮点型地方式。标签用于唯一标志一个解析数据结果。零位偏差和比例偏差对整型和浮点型目标数据有效,若解析语法中零位偏差和比例偏差省略,此时分别赋默认值0和1。
执行解析具体为:
获取源数据流,初始化起始位置为0,执行第1个最小匹配规则。
先执行匹配单元,匹配单元中的源数据流类型与真实源数据流对应,判断匹配规则,内容式时通过有限状态机从起始位置进行匹配获取匹配结果,位置式时通过直接访问绝对位置获取匹配结果,将匹配数据的首位置和尾位置输入提取单元。
再执行提取单元,获取匹配数据的首位置和尾位置,由标志位判断执行提取操作的起始位,一种是匹配数据的首位,一种是尾位后移一位,由执行提取操作的首位数据开始,先按目标数据片段类型将源数据流转换成对应类型的提取数据流,按内容式或位置式对提取数据流进行数据提取,可以提取到目标数据片段。将目标数据片段和目标数据片段在源数据流的最后位置输入转换单元。
再执行转换单元,将目标数据片段按格式拼接成转换成目标数据,字符型目标数据片段可以转换成字符型、整型、布尔型、浮点型目标数据,二位十六进制数型目标数据片段可以转换成字符型、整型、浮点型目标数据,二进制型目标数据片段可以转换成布尔型、整型、浮点型目标数据,二位十六进制数型和二进制型目标数据片段转换成浮点数型的方式有两种,一种是先转成整型,再通过类型转换转换成浮点型,一种是内存拷贝的方式直接转换成浮点型,通过内存拷贝标志位决定。整型和浮点型数据再经过零位偏差和比例偏差处理,输出最终的目标数据和标签,目标数据和标签以map的格式存在。
每个最小匹配结果可以存在多个提取单元和转换单元对,一个最小匹配结果执行完成后,可以获得目标数据片段在源数据流中的最大位置,将该位置后移一位赋给起始位置,在将起始位置输入到下一个最小匹配规则中,在下一个最小匹配规则中的匹配单元中生效,且只对内容式匹配单元有效,表示起始位置之前的数据已经经过处理,对位置式匹配单元无效,保留了位置式定义了数据在源数据流中的绝对位置的特性。
每个转换单元执行完毕会输出以map为格式的数据,所有的目标数据通过多个map键值映射表维护,包括map<string,int>、map<string,float>、map<string,bool>、map<string,double>、map<string,string>,由于C++支持函数重载,可通过定义函数get(T&value,string lable)访问目标数据,通过目标数据的类型和名称访问。
基于所述的通信应用层协议解析方法,提出一种面向多种类型数据流的通信应用层协议解析系统,包括:
选择单元,用于选择通信应用层协议;
解析语法加载单元,用于加载定义好的解析语法,解析语法加载单元通过输入或者导入文本的方式加载解析语法;
解析语法保存单元,用于保存加载的当前通信应用层协议的解析语法;
获取单元,用于获取源数据流;
解析语法执行单元,用于解析源数据流的目标数据和标签;
显示单元,包括目标数据显示单元和标签显示单元,目标数据显示单元包括字符串型数据显示单元、整型和浮点型数据显示单元以及布尔型数据显示单元,所述字符串型数据显示单元包括字符型数据下拉菜单和显示列表框;所述整型和浮点型数据显示单元包括Y轴数据下拉菜单、X轴数据下拉菜单、数据截取时间长度输入框和数据显示二维图,数据显示二维图为Y-time型或Y-X型;所述布尔型数据显示单元包括尔型数据下拉菜单和布尔型数据指示灯,指示灯为绿色表示该数据布尔值为1,为红色表示该数据布尔值为0;标签显示单元用于显示解析语法执行的结果是否正确;
目标数据保存单元,用于保存解析后的目标数据,保存文件格式为表格文档xlsx,保存内容格式为:第一行为目标数据的名称,剩余行为目标数据的内容。
下面结合实施例进一步说明所述的多种类型数据流的通信应用层解析方法,实施例的方法中与具体实施方式中相同的部分不再累述。
实施例1
该实施例的一种基于正则表达式面向多种类型数据流的通信应用层解析方法,通信应用层协议为GPGGA协议,NMEA(海用电子设备制定的标准格式)的GPGGA报文的协议为:字段0:$GPGGA,语句ID;字段1:UTC时间;字段2:纬度;字段3:纬度N或S;字段4:经度;字段5:经度E或W;字段6:GPS状态;字段7:正在使用的卫星数量;字段8:HDOP;字段9:海拔高度;字段10:地球椭球面相对大地水准面的高度;字段11:差分时间;字段12:差分站ID号;字段13:校验值,字段之间用,号或*号分隔。如某个GPGGA报文为$GPGGA,064537.11,3149.3421221,N,12056.4267113,E,4,08,1.2,7.144,M,7.193,M,1.0,0029*4F。针对此协议可使用解析语法/{\c$GPGGA,}{[0-9\.]*}{\lfutc_time}/{\c,}{[0-9\.\-]*}{\lflatitude}/{\c,}{[NS]}{\cNorS}/{\c,}{[0-9\.]*}{\lflongitude}/{\c,}{[EW]}{\c EorW}/{\c,}{[0-9]}{\dFS}/{\c,}{[0-9]*}{\dNoSV}/{\c,}{[0-9\.\-]*}{\lf HDOP}/{\c,}{[0-9\.\-]*}{\lfmsl}/{\c,}{M}{\cm1}/{\c,}{[0-9\.\-]*}{\lf Altref}/{\c,}{M}{\cm2}/{\c,}{[0-9\.\-]*}{\lfDiffAge}/{\c,}{[0-9]*}{\d DiffStation}/{\c*}{[0-9a-fA-F]*}{\ccs}/解析。
实施例2
该实施例的一种基于正则表达式面向多种类型数据流的通信应用层解析方法,通信应用层协议为CAN协议,CAN协议的CAN帧协议如表2、表3和表4,可使用解析语法/{\\x\<0>}{\b\h\<0,1>}{\dManOrNavi}/{\x\<0>}{\b\h\<2-4>}{\dSteerMode}/{\x\<1>}{\b\h\<0>}{\b RelayMotor}/{\x\<1>}{\b\h\<1>}{\bRelayPreCharging}/{\x\<1>}{\b\h\<2>}{\b RelayDCDC}/{\x\<1>}{\b\h\<3>}{\bRelayAirConditioner}/{\x\<1>}{\b\h\<4>}{\b RelayMajor}/{\x\<1>}{\b\h\<7>}{\bRelayHigh}/{\x\<2>}{\x\h\<0,1>}{\lfSpeedCar150.0005}/{\x\<4>}{\x\h\<0,1>}{\lfSpeedLeftFront150.0005}/{\x\<6>}{\x\h\<0,1>}{\lfSpeedRightRear150.0005}/解析。
表2某帧CAN协议
表3字节0位定义
表4字节1位定义
实施例3
该实施例的一种基于正则表达式面向多种类型数据流的通信应用层解析方法,通信应用层为惯导的部分协议,惯导的部分协议为:0x800x200x0c,后4位存储一个单精度浮点数俯仰角速度,后5到8位存储一个单精度浮点数翻滚角速度,后9到12位存储一个单精度浮点数横摆角速度,可使用解析语法/{\x80200c}{\x\<1-4>}{\fmpitch}{\x\<5-8>}{\fmroll}{\x\<9-12>}{\fmyaw}/解析。
实施例4
基于具体实施方式所述的通信应用层协议解析系统,该实施例以软件实现所述系统作进一步的介绍,包括:
如图2所述,窗口主体包括串口CAN切换按钮1,常规串口、CAN调试助手控制台和数据显示窗口2,保存当前应用层协议解析语法按钮3,执行当前解析语法按钮4,执行解析语法是否正确标签5,加载解析语法按钮6,显示字符串型数据按钮7,显示整型和浮点型数据按钮8,保存目标数据按钮9,显示布尔型数据按钮10,解析语法输入框11,当前解析语法下获取的目标数据列表12。
操作常规串口、CAN调试助手控制台获取源数据流后,通过操作右侧按钮或输入框实现快速图形化显示功能,解析语法的输入方式有两种,一通过输入框11输入;二通过按下按钮6导入以文本为格式的解析语法文件。解析语法输入完成后可通过按下按钮4解析,若解析语法错误,在标签5处显示Failed!;若解析语法正确,在标签5处显示OK!。正确解析语法后会在列表12处显示所有目标数据。目标数据可通过按钮9保存,保存文件格式为表格文档xlsx,保存内容格式为第一行为目标数据的名称,剩余行为目标数据的内容。
字符串型数据、整型和浮点型数据、布尔型数据有不同的显示方案,如下:
按下按钮7后会弹出字符串型数据显示窗口,如图3,窗口内容为加载字符型数据下拉菜单14、字符型数据显示列表框13。在14中选择一个数据,会在13中新增一行显示该数据的名称和内容。
按下按钮8后会弹出整型和浮点型数据显示窗口,如图4,窗口内容为加载Y轴数据下拉菜单15、加载X轴数据下拉菜单16、数据截取时间长度输入框17、数据显示二维图18。图形化显示Y-time型和Y-X型。Y-time型横坐标为时间,纵坐标为目标数据,目标数据可以有多个,输入框17可以调整横轴时间长度的范围。Y-X型横坐标为目标数据x,纵坐标为目标数据y,x、y分别通过下拉菜单15和16输入,x、y均有值时为Y-X型,x无值时为Y-time型。
按下按钮10后会弹出布尔型数据显示窗口,如图5,窗口内容为加载布尔型数据下拉菜单19、显示布尔型数据指示灯20。通过下拉菜单添加一个指示灯,每个指示灯右侧为其数据名称,指示灯为绿色表示该数据布尔值为1,为红色表示该数据布尔值为0。
Claims (10)
1.一种面向多种类型数据流的通信应用层协议解析方法,其特征在于,包括以下步骤:
根据通信应用层协议定义解析语法,使用以可读字符串为格式的解析语法描述通信应用层协议,解析语法由多个最小匹配规则组成;
加载解析语法,将定义的解析语法由字符串映射为计算机程序片段;
执行解析语法,获取源数据流,从第一个最小匹配规则开始执行,执行完第一个最小匹配规则,更新起始位置,再执行下一个最小匹配规则,直至执行完所有最小匹配规则,输出解析的目标数据和标签。
2.根据权利要求1所述的通信应用层协议解析方法,其特征在于,所述最小匹配规则依次包括一个匹配单元、若干个提取单元和转换单元,提取单元和转换单元成对出现。
3.根据权利要求2所述的通信应用层协议解析方法,其特征在于,所述匹配单元用于描述目标数据片段的位置,其语法为:描述源数据流类型,包括字符流和二进制数流;描述匹配规则,包括内容式和位置式,内容式用元素集和重复次数说明符的集合表示,元素集为一组字符或二位十六进制数的集合,位置式表示匹配片段位于源数据流的绝对位置。
4.根据权利要求3所述的通信应用层协议解析方法,其特征在于,所述提取单元用于在所述匹配单元的基础上提取目标数据片段,其语法为:描述执行提取操作的最小数据单元类型,包括字符型、二位十六进制数型和布尔数型;描述执行提取操作的起始位,起始位为匹配单元的首位或匹配结果的尾后移一位;描述提取规则,包括内容式和位置式,内容式用元素集和重复次数说明符的集合表示,元素集为一组字符、二位十六进制数或布尔数的集合,位置式中的位置表示以执行提取操作的起始位为零位的偏移位置。
5.根据权利要求4所述的通信应用层协议解析方法,其特征在于,所述转换单元用于将提取出的数据片段拼接转换成目标格式的数据,其语法为:描述目标数据类型,包括字符串、整型数据、布尔型数据、单精度浮点型数据、双精度浮点型数据,其中浮点型数据可设置内存拷贝模式;描述目标数据的标签,用于唯一标记一个提取数据的名称;描述零位偏差和比例偏差,零位偏差和比例偏差对整型和浮点型目标数据有效,二者可同时出现或同时省略。
6.根据权利要求5所述的通信应用层协议解析方法,其特征在于,所述映射为计算机程序片段后,对于匹配单元和提取单元,还各自包括有限状态机网络,有限状态机网络由元素集与重复次数集合生成。
7.根据权利要求6所述的通信应用层协议解析方法,其特征在于,所述执行最小匹配规则具体为:
执行匹配单元,判断匹配规则,内容式时通过有限状态机网络从起始位置进行匹配获取匹配结果,位置式时通过直接访问绝对位置获取匹配结果,匹配结果为匹配数据的首位置和尾位置,将匹配结果输入提取单元;
执行提取单元,接收匹配结果,由标志位判断执行提取操作的首位数据是匹配数据的首位还是尾位后移一位,从执行提取操作的首位数据开始,先按目标数据片段类型将源数据流转换成对应类型的提取数据流,对提取数据流按内容式或位置式进行数据提取,提取到目标数据片段,将目标数据片段和目标数据片段在源数据流的最后位置输入至转换单元;
执行转换单元,得到目标数据和标签。
8.根据权利要求2所述的通信应用层协议解析方法,其特征在于,所述执行每个最小匹配规则后,输出所有转换单元的键值映射结果,同时将目标数据片段最大位置后移一位赋给起始位置。
9.一种面向多种类型数据流的通信应用层协议解析系统,其特征在于,包括:
选择单元,用于选择通信应用层协议;
解析语法加载单元,用于加载根据当前通信应用层协议定义的解析语法;
解析语法保存单元,用于保存加载的当前通信应用层协议的解析语法;
获取单元,用于获取源数据流;
解析语法执行单元,用于对源数据流通过解析语法进行解析,得到目标数据和标签;
显示单元,包括目标数据显示单元和标签显示单元,目标数据显示单元包括字符串型数据显示单元、整型和浮点型数据显示单元以及布尔型数据显示单元,标签显示单元用于显示解析语法执行的结果;
目标数据保存单元,用于保存解析语法执行单元解析的目标数据。
10.根据权利要求9所述的通信应用层协议解析系统,其特征在于,解析语法加载单元通过输入或者导入文本的方式加载解析语法;所述字符串型数据显示单元包括字符型数据下拉菜单和显示列表框;所述整型和浮点型数据显示单元包括Y轴数据下拉菜单、X轴数据下拉菜单、数据截取时间长度输入框和数据显示二维图,数据显示二维图为Y-time型或Y-X型;所述布尔型数据显示单元包括尔型数据下拉菜单和布尔型数据指示灯,指示灯为绿色表示该数据布尔值为1,为红色表示该数据布尔值为0;目标数据保存单元保存文件格式为表格xlsx文档,保存内容格式为:第一行为目标数据的名称,剩余行为目标数据的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420515.9A CN112511551B (zh) | 2020-12-08 | 2020-12-08 | 面向多种类型数据流的通信应用层协议解析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420515.9A CN112511551B (zh) | 2020-12-08 | 2020-12-08 | 面向多种类型数据流的通信应用层协议解析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112511551A true CN112511551A (zh) | 2021-03-16 |
CN112511551B CN112511551B (zh) | 2022-03-22 |
Family
ID=74971259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011420515.9A Active CN112511551B (zh) | 2020-12-08 | 2020-12-08 | 面向多种类型数据流的通信应用层协议解析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112511551B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114760369A (zh) * | 2022-04-14 | 2022-07-15 | 曙光网络科技有限公司 | 一种协议元数据提取方法、装置、设备及存储介质 |
CN115549862A (zh) * | 2022-12-05 | 2022-12-30 | 大方智造(天津)科技有限公司 | 基于动态解析的mes系统并发性能测试数据接收方法 |
WO2024086973A1 (zh) * | 2022-10-24 | 2024-05-02 | 华为技术有限公司 | 数据处理方法、装置以及智能驾驶设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080072216A1 (en) * | 2005-03-30 | 2008-03-20 | Baohua Zhao | Method and device for ANBF string pattern matching and parsing |
CN102143148A (zh) * | 2010-11-29 | 2011-08-03 | 华为技术有限公司 | 用于通用协议解析的参数获取和通用协议解析方法及装置 |
CN106713357A (zh) * | 2017-01-24 | 2017-05-24 | 南京仁谷系统集成有限公司 | 一种通用的网络协议解析方法 |
CN108933784A (zh) * | 2018-06-26 | 2018-12-04 | 北京威努特技术有限公司 | 一种工控协议解码规则的表述及优化解码方法 |
CN111741019A (zh) * | 2020-07-28 | 2020-10-02 | 常州昊云工控科技有限公司 | 一种基于字段描述的通信协议解析方法和系统 |
-
2020
- 2020-12-08 CN CN202011420515.9A patent/CN112511551B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080072216A1 (en) * | 2005-03-30 | 2008-03-20 | Baohua Zhao | Method and device for ANBF string pattern matching and parsing |
CN102143148A (zh) * | 2010-11-29 | 2011-08-03 | 华为技术有限公司 | 用于通用协议解析的参数获取和通用协议解析方法及装置 |
CN106713357A (zh) * | 2017-01-24 | 2017-05-24 | 南京仁谷系统集成有限公司 | 一种通用的网络协议解析方法 |
CN108933784A (zh) * | 2018-06-26 | 2018-12-04 | 北京威努特技术有限公司 | 一种工控协议解码规则的表述及优化解码方法 |
CN111741019A (zh) * | 2020-07-28 | 2020-10-02 | 常州昊云工控科技有限公司 | 一种基于字段描述的通信协议解析方法和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114760369A (zh) * | 2022-04-14 | 2022-07-15 | 曙光网络科技有限公司 | 一种协议元数据提取方法、装置、设备及存储介质 |
CN114760369B (zh) * | 2022-04-14 | 2023-12-19 | 曙光网络科技有限公司 | 一种协议元数据提取方法、装置、设备及存储介质 |
WO2024086973A1 (zh) * | 2022-10-24 | 2024-05-02 | 华为技术有限公司 | 数据处理方法、装置以及智能驾驶设备 |
CN115549862A (zh) * | 2022-12-05 | 2022-12-30 | 大方智造(天津)科技有限公司 | 基于动态解析的mes系统并发性能测试数据接收方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112511551B (zh) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112511551B (zh) | 面向多种类型数据流的通信应用层协议解析方法及系统 | |
US8271873B2 (en) | Automatically detecting layout of bidirectional (BIDI) text | |
CN107015948B (zh) | 一种日志信息格式化方法及系统 | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN113778449A (zh) | 航空电子接口数据适配转换系统 | |
CN114090671A (zh) | 数据导入方法、装置、电子设备及存储介质 | |
CN112416331A (zh) | 页面的适配方法、装置、电子设备及计算机可读存储介质 | |
US8656371B2 (en) | System and method of report representation | |
CN117033309A (zh) | 一种数据转换方法、装置、电子设备及可读存储介质 | |
CN109614592B (zh) | 文本的处理方法、装置、存储介质和电子设备 | |
CN111414107A (zh) | 可缩放矢量图形处理方法及系统 | |
CN112540958B (zh) | 文件处理方法、装置、设备及计算机存储介质 | |
CN112069549B (zh) | 一种在Bootstrap-table插件导出表格时图片下载方法及系统 | |
CN114462381A (zh) | 数据处理方法、装置、设备及存储介质 | |
US7298292B2 (en) | Method and apparatus for generating character set | |
CN111273913A (zh) | 一种输出规范表示的应用程序接口数据的方法及装置 | |
CN116909627B (zh) | 一种可执行程序解析方法、装置、电子设备和存储介质 | |
CN113821278B (zh) | 调用图像尺寸方法、装置、电子设备及存储介质 | |
Peruginelli et al. | Character sets: towards a standard solution? | |
CN118042026A (zh) | 一种基于python的数据链消息报文解析方法及装置 | |
KR102011843B1 (ko) | 데이터 조합형식 변환방법, 장치 및 프로그램 | |
US8144730B2 (en) | Automated tactical datalink translator | |
CN117492831A (zh) | 字节码指令序列分析方法、装置、电子设备、存储介质 | |
CN117891457A (zh) | 一种基于qt的通用离线遥测数据解析实现方法和装置 | |
CN114330332A (zh) | 表单数据的处理方法、装置、电子设备及存储介质 |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 222001 No.18 Shenghu Road, Lianyungang City, Jiangsu Province Patentee after: The 716th Research Institute of China Shipbuilding Corp. Patentee after: JIANGSU JARI TECHNOLOGY GROUP Co.,Ltd. Address before: 222001 No.18 Shenghu Road, Lianyungang City, Jiangsu Province Patentee before: 716TH RESEARCH INSTITUTE OF CHINA SHIPBUILDING INDUSTRY Corp. Patentee before: JIANGSU JARI TECHNOLOGY GROUP Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |