我正在实施一个通用的BACnet解码器并遇到了以下问题,我似乎无法在BACnet标准中找到答案。章节" 20.2.1.3.2构建数据"不回答我的问题,或者我可能不完全理解它。
假设我有一个List(SEQUENCE OF),其元素类型为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"
我的哪些假设是错误的?
谢谢你,亲切的问候
帕斯卡
答案 0 :(得分:0)
SEQUENCE元素的顺序始终是已知的,并且不应根据定义任意选择。此外,并非所有可想到的组合都可以编码。关于BACnet,所有类型定义都应该是普遍可解码的。
答案 1 :(得分:0)
假设我理解正确; “顺序”不能是“任意的”;即:
SEQUENCE = *ordered* collection of variables of **different** types
SEQUENCE OF = *ordered* collection of variables of **same** type