CN105072130B - 一种asn.1解码器代码自动生成方法 - Google Patents

一种asn.1解码器代码自动生成方法 Download PDF

Info

Publication number
CN105072130B
CN105072130B CN201510536410.2A CN201510536410A CN105072130B CN 105072130 B CN105072130 B CN 105072130B CN 201510536410 A CN201510536410 A CN 201510536410A CN 105072130 B CN105072130 B CN 105072130B
Authority
CN
China
Prior art keywords
asn
data
type
code
data structure
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.)
Active
Application number
CN201510536410.2A
Other languages
English (en)
Other versions
CN105072130A (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.)
Guangzhou Huiruisitong Technology Co Ltd
Original Assignee
Guangzhou Huiruisitong Information Technology Co Ltd
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 Guangzhou Huiruisitong Information Technology Co Ltd filed Critical Guangzhou Huiruisitong Information Technology Co Ltd
Priority to CN201510536410.2A priority Critical patent/CN105072130B/zh
Publication of CN105072130A publication Critical patent/CN105072130A/zh
Application granted granted Critical
Publication of CN105072130B publication Critical patent/CN105072130B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种ASN.1解码器代码自动生成方法,首先读取ASN.1文件输入,处理ASN.1文件中无用的注释信息和多余空白符,解析得到每一个ASN.1数据类型和结构类型描述,对这些数据类型和结构类型进行识别,生成相应的数据结构定义,并添加注释信息,写入头文件中,然后通过解析头文件,得到数据结构定义,进而生成对应的源代码,并写入源文件中,从而完成ASN.1解码器代码的生成。本发明不需要开发人员手工编码,降低了开发周期,能够准确高效完成ASN.1解码器的代码开发工作。

Description

一种ASN.1解码器代码自动生成方法
技术领域
本发明涉及通信技术领域,尤其是指一种ASN.1(Abstract Syntax NotationOne,抽象语法标记)解码器代码自动生成方法。
背景技术
ASN.1(抽象语法标记)是描述在网络上传输信息格式的标准方法。ASN.1推进了结构化数据的传输,尤其是在网络中应用程序之间的结构化数据传输,它以一种独立于计算机架构、编程语言和编码规则的方式来描述数据结构。由于ASN.1能清楚简洁的表示协议中要传输的各种信息,它广泛应用于各类协议标准。3GPP的LTE系统采用ASN.1来描述空中接口的层3的RRC消息。
目前对ASN.1文件的处理,多数围绕编码和解码进行。相关技术中,开发人员通常需要手工编写代码,将ASN.1定义的数据结构人工转换成可编译的程序。但由于ASN.1定义的数据结构数量庞大,内容复杂,人工实现的工作量十分巨大,且延长了开发周期。
公开号CN200510135665.4号中国专利提供了一种基于ASN.1定义的PDU编解码代码自动生成的实现方法,公开了一种通过扫描和分析用户自定义头文件来生成PDU编解码代码的方法。该专利需要用户自定义头文件。
公开号CN201210028841.4号中国专利公开了一种ASN.1文件的处理方法及装置,该方法包括:对ASN.1文件进行解析以生成数据记录、结构定义链表和转换链表;根据数据记录、结构定义链表和转换链表生成数据定义代码。该专利实施过程中需要先生成数据记录、结构定义链表和转换链表等中间过程内容。
如何在无需手工编码情况下,简洁、准确、高效的自动生成ASN.1解码器代码是本技术领域需要解决的问题。
发明内容
本发明的目的在于克服现有技术的缺点与不足,针对现有处理ASN.1文件的技术中存在着需人工编码、工作量大、引入缺陷风险大、实现复杂的问题,提供一种ASN.1解码器代码自动生成方法,不需要开发人员手工编码,降低了开发周期,能够准确高效完成ASN.1解码器的代码开发工作。
为实现上述目的,本发明所提供的技术方案为:一种ASN.1解码器代码自动生成方法,首先读取ASN.1文件输入,处理ASN.1文件中无用的注释信息和多余空白符,解析得到每一个ASN.1数据类型和结构类型描述,对这些数据类型和结构类型进行识别,生成相应的数据结构定义,并添加注释信息,写入头文件中,然后通过解析头文件,得到数据结构定义,进而生成对应的源代码,并写入源文件中,从而完成ASN.1解码器代码的生成。
本发明所述的ASN.1解码器代码自动生成方法,包括以下步骤:
1)将ASN.1文件读入缓冲区保存,创建头文件和源文件,用于保存源代码;
2)从缓冲区中按行读取ASN.1文件,当读取到文件结束符时表明生成头文件过程结束,转入下面步骤7);否则过滤注释和多余空白符,直到得到一个完整的ASN.1数据或结构类型描述;
3)解析步骤2)中获得的数据或结构类型描述,当为数据类型时进入下面步骤4),当为结构类型时则进入下面步骤5);
4)识别当前ASN.1描述的数据类型,生成相应的编程语言数据结构定义,并添加类型和数据记录注释,接着转入下面步骤6);
5)识别当前ASN.1描述的结构类型,生成相应的编程语言数据结构定义,并添加类型和数据记录注释,接着转入下面步骤6);
6)将当前生成的数据结构以追加模式写入头文件,接着重复步骤2)至步骤6),处理下一个ASN.1数据或结构类型;
7)头文件生成结束,将头文件读入缓冲区;
8)从缓冲区中按行读取头文件,当读取到文件结束符时转入下面步骤11);否则直到得到一个完整的数据结构;
9)解析步骤8)得到的数据结构,识别结构类型,解析类型成员和注释信息,生成相应编程语言代码;
10)将步骤9)生成的代码以追加模式写入源代码文件,接着重复步骤8)至步骤10),处理下一个数据结构定义;
11)ASN.1解码器代码生成结束。
在步骤5)中,根据步骤3)得到的结构类型,解析其具体类型和各结构成员,如果是嵌套的混合结构,可采用图的深度优先遍历算法递归的解析每一层嵌套,对每一层嵌套,每当解析出一个成员结构就根据类型生成对应的数据结构成员,并在生成的数据结构成员后添加ASN.1类型和数据注释,直到完整的遍历ASN.1结构类型描述,此时完成对结构类型的解析和数据结构定义的生成,接着再转入下面步骤6)。
在步骤9)中,步骤8)获得了一个完整的数据结构定义,包含注释信息,需要对它进行解析,先判断是否为多层嵌套的数据结构定义,如果是单层的,则通过关键字匹配识别,判断数据结构定义是哪一种类型;如果是枚举型,则通过解析成员结构和注释信息,生成枚举型代码;如果是联合体,则生成联合体型代码;如果是结构体,则生成结构体型代码;如果数据结构定义是为多层嵌套的混合型结构,则需要与上述生成数据结构定义一样,递归的处理,生成混合型代码。
本发明与现有技术相比,具有如下优点与有益效果:
1、本发明解决了现有技术中需手工编写代码的问题,避免了人为引入缺陷的风险,提高了开发效率和产品的稳定性。
2、本发明采用解析ASN.1文件生成头文件,解析头文件生成源代码的方法,简单直观,易于实现。
3、本发明不需要用户自定义头文件,根据输入的ASN.1文件即可完成解码器代码的自动生成,用户只需提供所需的ASN.1文件输入,其它无需用户参与,特别适用于通信领域对ASN.1解码器的快速、高效、准确的开发要求。
附图说明
图1为本发明读取ASN.1文件,自动生成头文件处理流程图。
图2为本发明读取头文件,自动生成解码器代码处理流程图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本实施例所述的ASN.1解码器代码自动生成方法为一种读取ASN.1文件,自动生成ASN.1解码器代码的方法。该方法通过解析ASN.1文件,识别ASN.1数据和结构类型,生成带注释信息的头文件,并通过解析头文件,识别数据结构定义,生成ASN.1解码器代码。其具体过程为:首先读取ASN.1文件输入,处理ASN.1文件中无用的注释信息和多余空白符,解析得到每一个ASN.1数据类型和结构类型描述,对这些数据类型和结构类型进行识别,生成相应的数据结构定义,并添加注释信息,写入头文件中,然后通过解析头文件,得到数据结构定义,进而生成对应的源代码,并写入源文件中,从而完成ASN.1解码器代码的生成。
如图1和图2所示,本实施例上述的ASN.1解码器代码自动生成方法,包括以下步骤:
1)首先以只读方式打开ASN.1文件,将文件读入缓冲区保存,创建头文件和源文件。
2)从缓冲区中按行读取ASN.1文件。判断当前行是否是文件结束行,如果是,则转入下面步骤7);否则对每一行做去注释和多余空白符的处理,因为注释和多余空白符对解析过程没有帮助,直到获得一个完整的ASN.1数据或结构类型描述。
3)通过关键字匹配方式解析步骤2)获得的ASN.1数据或结构类型描述,或为数据类型,或为结构类型,当是数据类型时转入下面步骤4)处理,当是结构类型时则转入步骤5)处理。
4)根据步骤3)得到的数据类型,解析其具体类型,记录数据;根据类型生成对应的数据结构定义,并在生成的数据成员后添加ASN.1类型和数据注释,然后转入下面步骤6)。
5)根据步骤3)得到的结构类型,解析其具体类型和各结构成员。如果是嵌套的混合结构,可采用图的深度优先遍历算法递归的解析每一层嵌套,对每一层嵌套,每当解析出一个成员结构就根据类型生成对应的数据结构成员,并在生成的数据结构成员后添加ASN.1类型和数据注释,直到完整的遍历ASN.1结构类型描述,此时完成对结构类型的解析和数据结构定义的生成,接着转入下面步骤6)。
6)将从前面步骤生成的数据结构定义以追加的模式写入前面创建的头文件中,接着处理下一个ASN.1数据或结构类型,重复步骤2)至步骤6)。
7)此时头文件生成结束,将头文件作为下一步的输入,将其读入缓冲区保存。
8)在读到文件结束符前从缓冲区中按行读取头文件,当前行是文件结束行时转入下面步骤11),否则一直读取头文件行,直到判断当前读取的头文件内容为一个完整的数据结构定义。
9)前面步骤8)获得了一个完整的数据结构定义,包含注释信息,需要对它进行解析。先判断是否为多层嵌套的数据结构定义,如果是单层的,则通过关键字匹配识别,判断数据结构定义是哪一种类型。如果是枚举型,则通过解析成员结构和注释信息,生成枚举型代码。如果是联合体,则生成联合体型代码。如果是结构体,则生成结构体型代码。如果数据结构定义是为多层嵌套的混合型结构,则需要与前述生成数据结构定义一样,递归的处理,生成混合型代码。
10)将前述生成的代码以追加的模式写入创建的源文件中,接着处理下一个数据结构定义,重复步骤8)至步骤10)。
11)至此完成ASN.1解码器代码生成。
综上所述,本发明方法在读取ASN.1文件输入,不需要手工编码的情况下,完成ASN.1解码器代码的自动生成。这相比于现有技术,本发明方法通过解析ASN.1文件,自动生成带注释的头文件,通过解析头文件,自动生成ASN.1解码器代码,目标编程语言可根据用户需求定制,生成的源码可直接用于项目中,实现过程更简单,实用性强,特别适用于通信领域对ASN.1解码器的快速、高效、准确的开发要求,值得推广。
以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

Claims (3)

1.一种ASN.1解码器代码自动生成方法,其特征在于:首先读取ASN.1文件输入,处理ASN.1文件中无用的注释信息和多余空白符,解析得到每一个ASN.1数据类型和结构类型描述,对这些数据类型和结构类型进行识别,生成相应的数据结构定义,并添加注释信息,写入头文件中,然后通过解析头文件,得到数据结构定义,进而生成对应的源代码,并写入源文件中,从而完成ASN.1解码器代码的生成。
2.根据权利要求1所述的一种ASN.1解码器代码自动生成方法,其特征在于,包括以下步骤:
1)将ASN.1文件读入缓冲区保存,创建头文件和源文件,用于保存源代码;
2)从缓冲区中按行读取ASN.1文件,当读取到文件结束符时表明生成头文件过程结束,转入下面步骤7);否则过滤注释和多余空白符,直到得到一个完整的ASN.1数据或结构类型描述;
3)解析步骤2)中获得的数据或结构类型描述,当为数据类型时进入下面步骤4),当为结构类型时则进入下面步骤5);
4)识别当前ASN.1描述的数据类型,生成相应的编程语言数据结构定义,并添加类型和数据记录注释,接着转入下面步骤6);
5)识别当前ASN.1描述的结构类型,生成相应的编程语言数据结构定义,并添加类型和数据记录注释,接着转入下面步骤6);
6)将当前生成的数据结构以追加模式写入头文件,接着重复步骤2)至步骤6),处理下一个ASN.1数据或结构类型;
7)头文件生成结束,将头文件读入缓冲区;
8)从缓冲区中按行读取头文件,当读取到文件结束符时转入下面步骤11);否则直到得到一个完整的数据结构;
9)解析步骤8)得到的数据结构,识别结构类型,解析类型成员和注释信息,生成相应编程语言代码;
10)将步骤9)生成的代码以追加模式写入源代码文件,接着重复步骤8)至步骤10),处理下一个数据结构定义;
11)ASN.1解码器代码生成结束。
3.根据权利要求2所述的一种ASN.1解码器代码自动生成方法,其特征在于:在步骤5)中,根据步骤3)得到的结构类型,解析其具体类型和各结构成员,如果是嵌套的混合结构,可采用图的深度优先遍历算法递归的解析每一层嵌套,对每一层嵌套,每当解析出一个成员结构就根据类型生成对应的数据结构成员,并在生成的数据结构成员后添加ASN.1类型和数据注释,直到完整的遍历ASN.1结构类型描述,此时完成对结构类型的解析和数据结构定义的生成,接着再转入下面步骤6);
在步骤9)中,步骤8)获得了一个完整的数据结构定义,包含注释信息,需要对它进行解析,先判断是否为多层嵌套的数据结构定义,如果是单层的,则通过关键字匹配识别,判断数据结构定义是哪一种类型;如果是枚举型,则通过解析成员结构和注释信息,生成枚举型代码;如果是联合体,则生成联合体型代码;如果是结构体,则生成结构体型代码;如果数据结构定义是为多层嵌套的混合型结构,则需要与上述生成数据结构定义一样,递归的处理,生成混合型代码。
CN201510536410.2A 2015-08-26 2015-08-26 一种asn.1解码器代码自动生成方法 Active CN105072130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510536410.2A CN105072130B (zh) 2015-08-26 2015-08-26 一种asn.1解码器代码自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510536410.2A CN105072130B (zh) 2015-08-26 2015-08-26 一种asn.1解码器代码自动生成方法

Publications (2)

Publication Number Publication Date
CN105072130A CN105072130A (zh) 2015-11-18
CN105072130B true CN105072130B (zh) 2018-03-06

Family

ID=54501409

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510536410.2A Active CN105072130B (zh) 2015-08-26 2015-08-26 一种asn.1解码器代码自动生成方法

Country Status (1)

Country Link
CN (1) CN105072130B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106412086B (zh) * 2016-10-31 2020-01-03 武汉斗鱼网络科技有限公司 一种利用协议描述文件自动生成通信代码的方法及系统
CN106502707B (zh) * 2016-11-14 2020-05-19 腾讯科技(深圳)有限公司 代码生成方法及装置
CN110110067A (zh) * 2018-01-08 2019-08-09 深圳市明源软件股份有限公司 一种数据库注释方法、装置及终端设备
CN110069250B (zh) * 2019-04-30 2023-03-17 联陆智能交通科技(上海)有限公司 Lte-v2x标准应用层数据编解码方法、系统及介质
CN110162480B (zh) * 2019-05-31 2023-02-24 泛升云微电子(苏州)有限公司 一种结构化诊断对象的自动化解析方法
CN113448923B (zh) * 2020-04-17 2023-09-12 北京新氧科技有限公司 文件生成方法、装置及终端
CN111638874B (zh) * 2020-05-27 2023-05-16 江西五十铃汽车有限公司 基于Matlab软件的汽车控制器编码信息写入和读取方法
CN112188211A (zh) * 2020-08-21 2021-01-05 北京新媒传信科技有限公司 一种转码实现方法和装置
CN113742294A (zh) * 2021-08-23 2021-12-03 宜通世纪科技股份有限公司 一种asn.1-per信令消息解码方法、系统、装置及介质
CN115993955B (zh) * 2023-03-23 2023-06-23 山东大学 对称密码算法的源代码生成和测试方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110077758A (ko) * 2009-12-30 2011-07-07 (주)지슨 에이에스엔.1 데이터 검증 장치
CN102332018A (zh) * 2011-09-21 2012-01-25 西安理工大学 一种Asn.1编码的快速读码方法
KR101142322B1 (ko) * 2009-03-31 2012-05-17 (재)국토연구원 Asn.1 컴파일러 장치
CN103246671A (zh) * 2012-02-09 2013-08-14 中兴通讯股份有限公司 抽象语法标记文件的处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101142322B1 (ko) * 2009-03-31 2012-05-17 (재)국토연구원 Asn.1 컴파일러 장치
KR20110077758A (ko) * 2009-12-30 2011-07-07 (주)지슨 에이에스엔.1 데이터 검증 장치
CN102332018A (zh) * 2011-09-21 2012-01-25 西安理工大学 一种Asn.1编码的快速读码方法
CN103246671A (zh) * 2012-02-09 2013-08-14 中兴通讯股份有限公司 抽象语法标记文件的处理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ASN.1编解码运行库系统的研究和设计;何西良、高益;《电子测试》;20091106(第11期);第26-42页 *
基于ASN.1的通用编解码方案的设计与实现;陈军成;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100715(第07期);第I136-97页 *

Also Published As

Publication number Publication date
CN105072130A (zh) 2015-11-18

Similar Documents

Publication Publication Date Title
CN105072130B (zh) 一种asn.1解码器代码自动生成方法
CN110933146B (zh) 一种数据转换方法、装置和服务器
CN101841515B (zh) 可变目标的协议数据单元编解码代码自动生成的实现方法
WO2018076815A1 (zh) 格式转换方法及系统
WO2020199423A1 (zh) Yang模型配置界面的自动化构建方法及系统
CN103780624B (zh) 一种面向复杂系统的通用应用层网络通信协议应用方法
WO2013029399A1 (zh) 代码生成方法及系统
CN113079198B (zh) 一种云平台接口协议转换的方法及装置
CN102325129A (zh) 一项用于测量分析仪器的自定义协议解码技术
CN110266702A (zh) 基于XML的Wireshark用协议解析方法
WO2023082926A1 (zh) 一种配置方法、装置、设备及存储介质
CN106941501A (zh) 一种数据通信方法及装置
CN106850559B (zh) 一种可扩展的网络协议解析系统及方法
CN116346961B (zh) 金融报文处理方法、装置、电子设备及存储介质
CN106293862B (zh) 一种可扩展标记语言xml数据的解析方法和装置
CN112883088B (zh) 一种数据处理方法、装置、设备及存储介质
CN105793842B (zh) 序列化消息之间的转换方法和装置
CN115794057A (zh) 命令行函数代码生成方法、装置和计算机可读存储介质
CN103631983A (zh) 一种战术数据报文模拟方法及系统
CN105005496A (zh) 一种跨语言转换网络数据包定义文件的处理系统及方法
CN103984555A (zh) 一种树表结合驱动特定平台通讯协议源代码自动生成方法
JP2009134445A (ja) ソフトウェア部品抽出支援装置
CN103246671A (zh) 抽象语法标记文件的处理方法及装置
CN104767729A (zh) 通信数据协议构造与分解系统及方法
Tervoort et al. APSL: A light weight testing tool for protocols with complex messages

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for automatically generating code of ASN.1 decoder

Effective date of registration: 20200212

Granted publication date: 20180306

Pledgee: China Co. truction Bank Corp Guangzhou Panyu branch

Pledgor: GUANGZHOU HUIRUI SITONG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2020980000240

PE01 Entry into force of the registration of the contract for pledge of patent right
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 510000 no.2-8, North Street, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Patentee after: Guangzhou huiruisitong Technology Co.,Ltd.

Address before: No.2, Nancun North Street, Nancun Town, Panyu District, Guangzhou, Guangdong 511442

Patentee before: GUANGZHOU HUIRUI SITONG INFORMATION TECHNOLOGY Co.,Ltd.

PP01 Preservation of patent right
PP01 Preservation of patent right

Effective date of registration: 20221228

Granted publication date: 20180306

PD01 Discharge of preservation of patent
PD01 Discharge of preservation of patent

Date of cancellation: 20240327

Granted publication date: 20180306