2015-06-02 10 views
0

Я использую Objective System Inc (http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler и файл спецификации (cdr_spec.asn), сгенерированный исходный код Java. В ЗОРЕ enecoded основан на формате BER (Basic Encoding Rule)ASN.1 Ошибка декодирования

команды для генерации Java источника:

./asn1c cdr_spec.asn -java -ber -reader -print -getset -pkgname com.testpkg 

генерируемый Источник:

ASN1C Compiler, Version 6.4.5 
Copyright (c) 1997-2011 Objective Systems, Inc. All Rights Reserved. 

Registered to: XXXXXX 
Parsing ASN.1 definitions.. 

Generating Java source files for module XXX-XXX.. 

Когда я декодировать первый файл CDR, он анализирует только 3 строки, файл CDR должен содержать более 100 строк, поэтому он частично декодируется.

При попытке декодирования другого файла CDR, это не удалось при декодировании CDR файл и дал мне такую ​​ошибку:

com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1 decode error @ offset 832: 
SEQUENCE or SET is missing a required element. 
10:11:30.394 [main] ERROR com.testpkg.Test - ASN.1 decode error @ offset 832: 
SEQUENCE or SET is missing a required element. 

Мой файл спецификации ASN.1 не имеет какой-либо ошибки синтаксиса, когда я использую инструмент проверяя его синтаксис.

Может ли кто-нибудь, кто знает ASN.1, помочь мне в этом?

ответ

1

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1 decode error @ offset 832: SEQUENCE or SET is missing a required element. 
10:11:30.394 [main] ERROR com.testpkg.Test - ASN.1 decode error @ offset 832: 
SEQUENCE or SET is missing a required element. 

Из вашего описания проблема связана с входными данными, а не с самой фактической спецификацией. Для поставщиков нет ничего необычного в том, чтобы предоставлять спецификации, которые не совсем совпадают с данными, производимыми их оборудованием.

Если вы можете определить, какой элемент отсутствует, вы всегда можете пометить поле OPTIONAL в спецификации, восстановить код и повторите попытку.

В качестве альтернативы вы всегда можете обратиться за помощью к поставщикам программного обеспечения и/или оборудования.

+0

спасибо за ваш ответ. Наконец, я понял, что оператор предоставил неверный файл спецификации, он потерял несколько переменных ... как это могло быть ... спасибо снова – haifzhan

+0

Это происходит, когда все производители времени выпускают несколько версий своих спецификаций и не всегда сохраняют их правильно обновлено. Очень часто найти такие ошибки в «диком». Многие производители также настраивают свой вывод, чтобы сделать его более трудным для чтения стандартизованными инструментами (например, добавлением заголовков пользовательской длины). – Ethan

 Смежные вопросы

  • Нет связанных вопросов^_^