0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ASN1CASN.1编译器概述

工程师邓生 来源:哲想软件 作者:哲想软件 2022-09-21 10:03 次阅读

ASN1CASN.1编译器将ASN.1和/或XMLschema(XSD)源规范转换成C、C++C#Java源代码。

开发人员可以使用此代码将结构/对象转换为已完成的ASN.1消息,并使用任何ITU-T/ISO编码规则(BER、CER、DER、PER或XER),以及ISO/IEEE医疗设备编码规则(MDER)和NTCIP八隅体编码规则(OER)将其转换为或转换为已完成的ASN.1消息。

ASN1C还包括将XSD规范转换为ASN.1规范的工具,反之亦然。

d2fcd772-3161-11ed-ba43-dac502259ad0.png

生成的ASN1C代码由类型定义和编码/解码函数(或方法)组成,这些函数提供了一个完整的应用程序编程接口(API),用于处理ASN.1规范中包含的消息定义。

除了ASN.1编译器之外,程序包中还包含一个公共编码/解码函数的运行时库。此库包含用于编码和解码ASN.1基元(布尔值、整数等)的例程。ASN1CASN.1编译器汇编对这些函数的一系列调用,以完成对更复杂消息类型的编码或解码。

程序员要使编码器/解码器启动并运行所需要做的就是:

1、运行ASN1C为给定的ASN.1或XSD规格生成代码

2、开发一个应用程序来调用生成代码中的函数/方法

3、编译/连接应用程序、生成的代码和运行时库

为了帮助处理第2和第3项,编译器还能够生成示例阅读器和编写器程序,以及生成文件构建所有生成的代码。

ASN.1 to C/C++

C和C++版本都使用由一组低级基本C函数组成的公共基本运行时库,对基本类型进行编码和解码。代码生成主要在C语言中完成,并为所有定义的ASN.1类型提供了一套完整的CAPI函数。

C++代码生成功能添加了一组类“包装器”,用于隐藏调用编码/解码函数时的大部分细节。这些包装器提供了特定于C++的附加服务。其中包括通过构造函数自动初始化生成类型的变量,通过操作符重载更容易地分配和测试数据,以及通过事件处理机制的虚拟回调接口。

从ASN.1到JavaC#

生成的Java代码由一系列Java源文件组成——一个用于ASN.1规格中定义的每个产品(类型)。每个Java文件(至少)包含以下项目:

一个或多个公共成员数据变量,用于保存生成类型的数据。

初始化变量的构造函数。

一种编码方法。

一个解码方法。

将目标内容打印到给定输出流的打印方法。

还有一个用于Java的运行时库。它由一系列用于编码和解码ASN.1基本类型的类组成。例如,Asn1Integer类将对ASN.1INTEGER类型的变量进行编码或解码。编译器将扩展这些基类,以形成直接从基类型派生的更高级别的类型,或者组装一系列这些较低级别的对象来形成构造的类型(例如,序列)。

C#代码的生成与上面描述的Java生成非常相似。为ASN.1规范中定义的每个产品生成一个单独的C#类。它包含使用任何ASN.1编码规则对类实例进行编码和解码的构造函数和方法。

可以使用Java或C#嵌入式开发工具包来支持JavaMicroEdition (J2ME)或C#compact edition库。

Eclipse 插件

概述

ASN1C Eclipse插件允许在EclipseIDE环境中,使用ASN1C编辑、语法检查和生成Java、C#或C/C++代码。它与Java透视图集成的方式允许直接从ASN.1源代码创建Java项目。

请注意,这个插件在Eclipse4.6 (Neon)和更高版本中都是可用的。不支持早期版本的Eclipse。

下载和安装

推荐的插件安装方法是通过我们的插件更新站点:https://www.obj-sys.com/eclipse。请您遵循以下步骤:

1. 选择Help->安装新软件

2. 输入“Workwith”位置的更新站点:“https://www.obj.sys.com/eclipse”

3.可用的插件应该出现在列表中

4. 启用“ASN.1和XML解决方案”旁边的检查框,然后单击next

5. 单击下一页中的Next

6. 选择许可条款的接受,并在下一页中单击Finish

7. 单击Yes重启Eclipse

或者,可以将插件下载为.zip文件,然后安装。单击下面的链接下载该文件:

ASN1C Eclipse插件.zip文件

下载插件后,请按照以下步骤安装:

1. 选择帮助->安装新软件

2. 单击Addbutto

3.单击弹出的pag中的Archive按钮

4. 找到下载的zip文件并选择O

5. 启用“ASN.1和XML解决方案”旁边的复选框,然后单击Nex

6. 在下一个pag中单击Next

7. 选择许可条款的接受,并在下一个pag中单击Finish

8. 单击Yes重启Eclipse

开始使用插件

安装之后,必须设置ASN1C编译器可执行文件的路径:

1. 选择Windows->首选项->ASN1C编译器

2.在“编译器路径”框中,输入ASN1C编译器可执行文件的完整路径(或使用Browse)

3.单击OK退出屏幕

现在可以创建一个新项目。我们将使用ASN1CJava Employee程序作为示例。

1. 选择Windows->首选项->ASN1C编译器

2. 点击“语言”下拉列表,选择“Java”作为应用程序语言

3.点击“选择编码规则”下拉列表,选择“BER”选项

4.点击“选择要生成的函数类型”下拉列表,检查“Encode”和“Decode”选项

5.点击“基本选项”下拉列表,选择“生成示例阅读器程序”和“生成示例编写程序”选项

6. 点击“Javaoptions”下拉列表,选择“Outputcode to module name dirs (-dirs)”选项

7. 单击OK退出preferences屏幕

8. 选择文件->新->项目…

9.在“ASN1编译工具”下,选择“ASN1C编译器项目”,然后单击“下一步”

10. 将项目名称设置为“Employee”,然后单击“Next”

11.ASN.1文件现在可以使用“添加文件”按钮添加到项目中。单击此按钮,导航到ASN1Cjava/sample_ber/Employee目录,并选择Employee.asn。然后单击“Next”

12. 在下一页中单击Next(Java设置)

13.在最后一页(ASN1C编译器命令),选中“在finish上启动ASN.1编译器”选项,然后单击“finish”。ASN1C编译器现在应该尝试生成Java文件





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2903

    浏览量

    102977
  • API
    API
    +关注

    关注

    2

    文章

    1379

    浏览量

    60978
  • 编译器
    +关注

    关注

    1

    文章

    1570

    浏览量

    48598
  • 编程接口
    +关注

    关注

    1

    文章

    33

    浏览量

    7951

原文标题:Obj-sys:ASN1CASN.1 编译器

文章出处:【微信号:哲想软件,微信公众号:哲想软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 317次阅读
    QT开发学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 394次阅读
    <b class='flag-5'>编译器</b>的优化选项

    嵌入式javascript编译器的设计与实现

    电子发烧友网站提供《嵌入式javascript编译器的设计与实现.pdf》资料免费下载
    发表于 10-30 11:29 0次下载
    嵌入式javascript<b class='flag-5'>编译器</b>的设计与实现

    新版编译器的设计思路和优化方法

    小程序编译器在小程序开发、预览、发布各个阶段都需要使用,因此编译器性能会直接影响到开发者开发效率,也会影响到开发者工具的使用体验。 由于旧版的编译器(基于 webpack4)在构建大型项目时会很慢,内存占用也高,一直被开发者吐槽
    发表于 10-13 11:21 146次阅读
    新版<b class='flag-5'>编译器</b>的设计思路和优化方法

    嵌入式开发中的C语言编译器设置

    编译器的语义检查很弱小,甚至还会“掩盖”错误。现代的编译器设计是件浩瀚的工程,为了让编译器设计简单一些,目前几乎所有编译器的语义检查都比较弱小。为了获得更快的执行效率,C语言被设计的足
    发表于 10-11 12:43 273次阅读

    esp32除了用arduino编译器还可以用哪个编译器

    esp32除了用arduino编译器还可以用哪个编译器
    发表于 09-25 06:13

    Keil修改ARM编译器及配置方法

    Keil MDK自 V5.36 版本之后,默认就不带 Arm Compiler V5版本编译器。如果需要使用 V5 版本编译器,就需要自己下载并安装。
    发表于 09-19 10:41 2099次阅读
    Keil修改ARM<b class='flag-5'>编译器</b>及配置方法

    如何安装ARM编译器Linux版

    本教程介绍如何下载、安装、设置您的环境,以及如何开始使用ARM编译器for Linux。 ARM编译器Linux版软件包包括ARM C/C++编译器、ARM Fortran编译器和AR
    发表于 08-28 06:45

    RealView用于BREW编译器和库的编译工具指南

    只要有可能,编译器就会采用Windows/MS-DOS用户所熟悉的广泛使用的命令行选项。 ARM C编译器按照ISO/IEC 9899:1990(E)的定义编译C语言,包括其技术规范1
    发表于 08-12 07:38

    Arm编译器6.6版armclang参考指南

    Arm®编译器armclang参考指南提供了Arm编译器armclaang的用户信息。armclang是一个优化的C和C++编译器,它将标准C和标准C++源代码编译为基于Arm体系结构
    发表于 08-11 07:35

    如何使用ARM编译器构建Hello World

    在本教程中,我们将展示如何使用Arm构建一个名为hello_world.C的简单C程序DS-5中的编译器工具链。 您可以找到Arm编译器工具链的概述。本教程假定您已安装并获得Arm DS-5的许可。有关详细信息,请参阅获取从Ar
    发表于 08-08 07:55

    编译器的标准生命周期

    编译器的标准生命周期
    发表于 07-05 19:32 0次下载
    <b class='flag-5'>编译器</b>的标准生命周期

    Neuron 现场编译器用户指南

    Neuron 现场编译器用户指南
    发表于 07-04 20:47 0次下载
    Neuron 现场<b class='flag-5'>编译器</b>用户指南

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制器开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C编译器更适合8051内核。 SDCC是命令行固件开发工具,含预处理器、编译器
    的头像 发表于 06-16 15:19 3602次阅读

    R32C/100系列C编译器包V.1.01 C编译器用户手册

    R32C/100系列C编译器包V.1.01 C编译器用户手册
    发表于 04-28 19:54 1次下载
    R32C/100系列C<b class='flag-5'>编译器</b>包V.1.01 C<b class='flag-5'>编译器</b>用户手册