Я реализую общий декодер BACnet и наткнулся на следующий вопрос, о котором я не могу найти ответ в стандарте BACnet. Глава «20.2.1.3.2 Constructed Data» не отвечает на мой вопрос, или я не могу полностью ее понять.BACnet deserialization: Как узнать, запущены ли новые элементы списка?
Предположим, у меня есть список (ПОСЛЕДОВАТЕЛЬНОСТЬ) с элементами типа Record (SEQUENCE). Указанная запись имеет 4 поля, обозначенные тегом контекста, где поля 0 и 1 являются необязательными. Я также предполагаю, что порядок, в котором эти поля сериализованы, может быть произвольным (потому что они идентифицированы их тегами контекста). Данные могут выглядеть (число указывает на поле/столбец): [{ "3", "0", 2" }, { "1", "2", "3"}]
Над проволока, единственная «информация о структуре» Я предполагаю, что я получаю являются открытие/закрытие тегов для списка Это означает, что:.
Open Tag List
ctxTagColumn3, valueColumn3,
ctxTagColumn0, valueColumn0,
ctxTagColumn2, valueColumn2,
ctxTagColumn1, valueColumn1,
ctxTagColumn2, valueColumn2,
ctxTagColumn3, valueColumn3
Close Tag List
Как известно, после того, как я прочитал данные последней колонки ("2 ") моего первого элемента списка, что я должен начать декодирование второго элемента, начиная со значения для столбца« 1 »?
Какое из моих предположений неверно?
Спасибо и наилучшими пожеланиями
Паскаль