ASN1CASN.1編譯器將ASN.1和/或XMLschema(XSD)源規(guī)范轉(zhuǎn)換成C、C++、C#或Java源代碼。
開發(fā)人員可以使用此代碼將結(jié)構(gòu)/對象轉(zhuǎn)換為已完成的ASN.1消息,并使用任何ITU-T/ISO編碼規(guī)則(BER、CER、DER、PER或XER),以及ISO/IEEE醫(yī)療設(shè)備編碼規(guī)則(MDER)和NTCIP八隅體編碼規(guī)則(OER)將其轉(zhuǎn)換為或轉(zhuǎn)換為已完成的ASN.1消息。
ASN1C還包括將XSD規(guī)范轉(zhuǎn)換為ASN.1規(guī)范的工具,反之亦然。
生成的ASN1C代碼由類型定義和編碼/解碼函數(shù)(或方法)組成,這些函數(shù)提供了一個(gè)完整的應(yīng)用程序編程接口(API),用于處理ASN.1規(guī)范中包含的消息定義。
除了ASN.1編譯器之外,程序包中還包含一個(gè)公共編碼/解碼函數(shù)的運(yùn)行時(shí)庫。此庫包含用于編碼和解碼ASN.1基元(布爾值、整數(shù)等)的例程。ASN1CASN.1編譯器匯編對這些函數(shù)的一系列調(diào)用,以完成對更復(fù)雜消息類型的編碼或解碼。
程序員要使編碼器/解碼器啟動并運(yùn)行所需要做的就是:
1、運(yùn)行ASN1C為給定的ASN.1或XSD規(guī)格生成代碼
2、開發(fā)一個(gè)應(yīng)用程序來調(diào)用生成代碼中的函數(shù)/方法
3、編譯/連接應(yīng)用程序、生成的代碼和運(yùn)行時(shí)庫
為了幫助處理第2和第3項(xiàng),編譯器還能夠生成示例閱讀器和編寫器程序,以及生成文件構(gòu)建所有生成的代碼。
ASN.1 to C/C++
C和C++版本都使用由一組低級基本C函數(shù)組成的公共基本運(yùn)行時(shí)庫,對基本類型進(jìn)行編碼和解碼。代碼生成主要在C語言中完成,并為所有定義的ASN.1類型提供了一套完整的CAPI函數(shù)。
C++代碼生成功能添加了一組類“包裝器”,用于隱藏調(diào)用編碼/解碼函數(shù)時(shí)的大部分細(xì)節(jié)。這些包裝器提供了特定于C++的附加服務(wù)。其中包括通過構(gòu)造函數(shù)自動初始化生成類型的變量,通過操作符重載更容易地分配和測試數(shù)據(jù),以及通過事件處理機(jī)制的虛擬回調(diào)接口。
從ASN.1到JavaC#
生成的Java代碼由一系列Java源文件組成——一個(gè)用于ASN.1規(guī)格中定義的每個(gè)產(chǎn)品(類型)。每個(gè)Java文件(至少)包含以下項(xiàng)目:
一個(gè)或多個(gè)公共成員數(shù)據(jù)變量,用于保存生成類型的數(shù)據(jù)。
初始化變量的構(gòu)造函數(shù)。
一種編碼方法。
一個(gè)解碼方法。
將目標(biāo)內(nèi)容打印到給定輸出流的打印方法。
還有一個(gè)用于Java的運(yùn)行時(shí)庫。它由一系列用于編碼和解碼ASN.1基本類型的類組成。例如,Asn1Integer類將對ASN.1INTEGER類型的變量進(jìn)行編碼或解碼。編譯器將擴(kuò)展這些基類,以形成直接從基類型派生的更高級別的類型,或者組裝一系列這些較低級別的對象來形成構(gòu)造的類型(例如,序列)。
C#代碼的生成與上面描述的Java生成非常相似。為ASN.1規(guī)范中定義的每個(gè)產(chǎn)品生成一個(gè)單獨(dú)的C#類。它包含使用任何ASN.1編碼規(guī)則對類實(shí)例進(jìn)行編碼和解碼的構(gòu)造函數(shù)和方法。
可以使用Java或C#嵌入式開發(fā)工具包來支持JavaMicroEdition (J2ME)或C#compact edition庫。
Eclipse 插件
概述
ASN1C Eclipse插件允許在EclipseIDE環(huán)境中,使用ASN1C編輯、語法檢查和生成Java、C#或C/C++代碼。它與Java透視圖集成的方式允許直接從ASN.1源代碼創(chuàng)建Java項(xiàng)目。
請注意,這個(gè)插件在Eclipse4.6 (Neon)和更高版本中都是可用的。不支持早期版本的Eclipse。
下載和安裝
推薦的插件安裝方法是通過我們的插件更新站點(diǎn):https://www.obj-sys.com/eclipse。請您遵循以下步驟:
1. 選擇Help->安裝新軟件
2. 輸入“Workwith”位置的更新站點(diǎn):“https://www.obj.sys.com/eclipse”
3.可用的插件應(yīng)該出現(xiàn)在列表中
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解決方案”旁邊的復(fù)選框,然后單擊Nex
6. 在下一個(gè)pag中單擊Next
7. 選擇許可條款的接受,并在下一個(gè)pag中單擊Finish
8. 單擊Yes重啟Eclipse
開始使用插件
安裝之后,必須設(shè)置ASN1C編譯器可執(zhí)行文件的路徑:
1. 選擇Windows->首選項(xiàng)->ASN1C編譯器
2.在“編譯器路徑”框中,輸入ASN1C編譯器可執(zhí)行文件的完整路徑(或使用Browse)
3.單擊OK退出屏幕
現(xiàn)在可以創(chuàng)建一個(gè)新項(xiàng)目。我們將使用ASN1CJava Employee程序作為示例。
1. 選擇Windows->首選項(xiàng)->ASN1C編譯器
2. 點(diǎn)擊“語言”下拉列表,選擇“Java”作為應(yīng)用程序語言
3.點(diǎn)擊“選擇編碼規(guī)則”下拉列表,選擇“BER”選項(xiàng)
4.點(diǎn)擊“選擇要生成的函數(shù)類型”下拉列表,檢查“Encode”和“Decode”選項(xiàng)
5.點(diǎn)擊“基本選項(xiàng)”下拉列表,選擇“生成示例閱讀器程序”和“生成示例編寫程序”選項(xiàng)
6. 點(diǎn)擊“Javaoptions”下拉列表,選擇“Outputcode to module name dirs (-dirs)”選項(xiàng)
7. 單擊OK退出preferences屏幕
8. 選擇文件->新->項(xiàng)目…
9.在“ASN1編譯工具”下,選擇“ASN1C編譯器項(xiàng)目”,然后單擊“下一步”
10. 將項(xiàng)目名稱設(shè)置為“Employee”,然后單擊“Next”
11.ASN.1文件現(xiàn)在可以使用“添加文件”按鈕添加到項(xiàng)目中。單擊此按鈕,導(dǎo)航到ASN1Cjava/sample_ber/Employee目錄,并選擇Employee.asn。然后單擊“Next”
12. 在下一頁中單擊Next(Java設(shè)置)
13.在最后一頁(ASN1C編譯器命令),選中“在finish上啟動ASN.1編譯器”選項(xiàng),然后單擊“finish”。ASN1C編譯器現(xiàn)在應(yīng)該嘗試生成Java文件
審核編輯:劉清
-
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104907 -
API
+關(guān)注
關(guān)注
2文章
1507瀏覽量
62217 -
編譯器
+關(guān)注
關(guān)注
1文章
1639瀏覽量
49197 -
編程接口
+關(guān)注
關(guān)注
1文章
38瀏覽量
8001
原文標(biāo)題:Obj-sys:ASN1CASN.1 編譯器
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論