ASN1C ASN.1 编译工具

Objective System的ASN1C编译器把ASN.1源代码和/或XML定义源文件(XSD)迅速可靠地 翻译成C, C++, C#或Java源代码。开发人员可以使用该代码翻译结构/对象为使用任何编码规则(BER, CER, DER, PER 或 XER),以及ISO/IEEE 医疗设备编码规则( Medical Device Encoding Rules,MDER) 和 NTCIP 八位编码规则( Octet Encoding Rules ,OER)的ASN.1消息,或从 ASN.1消息到结构/对象。ASN1C也包含将XSD定义与ASN.1规范互相转换的工具

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

除了编译器,一个通用的运行编/解码函数库也是该软件的一部分。此函数库包含了编码和解码ASN.1原语(如布尔型,整型)的子程序。ASN1C编译器使用了一系列对这些函数的调用来实现更复杂消息类型的编码和解码。

要得到并运行编解码程序,程序员所有要做的事情仅仅是:

  1. 运行ASN1C,生成给定的ASN.1或者XSD定义,
  2. 开发一个应用,调用在生成的代码中的函数或方法,
  3. 编译/连接该应用,生成代码和运行库。

为能满足第二和第三项,编译器也有生成读/写例程及创建所有生成的代码的makefile的能力。


ASN.1 到 C 或 C++ 编译工具

ASN1C能对特定的ASN.1规范生成C或C++源代码。C和C++版本都使用一个由一组低层编码和解码 基本类型的简单C函数组成的通用运行基本运行库。代码生成主要是C代码并且为所有定义的ASN.1 数据类型提供一套完善的C代码API函数。

C++代码生成添加了一组类“封装”,隐藏了大部分调用编/解码函数的细节。这些封装 提供了专门针对C++的附加服务,包括通过构造器实现生成类型的变量自动初始化,通过 重载操作符进行数据更简单的分配和测试以及通过事件处理机制实现虚回调。

ASN.1 到 Java 或 C# 编译工具

ASN1C编译器同样也能生成Java或C#代码。生成的Java代码由一系列Java源文件——每个 在ASN.1规范中内定义的production(类型)生成一个。每个Java文件(至少)包括下列 内容:

  • 一个公共成员数据变量(或几个变量),用来保存生成类型的数据;
  • 一个构造器(或几个),用来初始化变量;
  • 一个编码方法;
  • 一个解码方法;
  • 一个打印方法,用来打印指定的输出流的对象内容。

同样也有一个Java运行库,由一系列编码和解码简单ASN.1类型的类组成。例如,ASN1 整型类编码和解码ASN.1整型变量。编译器将扩展这些基本类以形成从基本类型直接得到高 级类型,或组合一系列低层对象以形成结构类型(如SEQUENCE)。

生成C#代码非常类似于上面描述的Java代码生成。为每个在ASN.1规范中定义的production 生成一个单独的C#类,包含编码和解码一个使用任何ASN.1编码规则类实例的构造器和方法。

支持Java MicroEdition (J2ME) 或者 C# compact edition库的Java 或者 C# 集成开发 工具已经可用了。

阅读更多 - ASN1C 编译工具快速问答...