简体中文
简体中文
English
联系我们
注册
登录
layout空间导航

复杂协议说明

更新时间:2022-03-03 07:20:25下载pdf

复杂协议说明

针对 Raw 和 String 类型复杂功能点,提供标准化的解析说明,便于能快速了解DP协议解析规则。同时标准化的Dp协议规则,能在跨品类选功能点、面板开发、云开发、大数据解析时能够被复用,请按照标准协议规则进行设备端开发,以未来兼容更多的开发方式。

协议预览

复杂协议说明

协议预览说明:

1,每个字段展示一个F,用于表示一个字节长度;
2,每个字段下面展示对应的数字,每个数字代表具体协议字段,同时每个数字会有长度范围,对应字段长度;
3,协议会存在循环情况,循环分为三种类型循环:无固定次数循环、固定次数循环、依赖循环,基于1个以上字段组成循环,并结合其他普通字段实现完整的复杂协议内容;无固定次数循环:根据接受到的总字段长度,动态计算循环次数,其存在位置为固定,但是长度为不固定的;固定次数循环:指定次数循环,其存在位置及长度均为固定;依赖字段循环:基于某一个字段的数值作为其循环次数,其存在位置及长度均为固定;
4,循环解析规则:由于循环存在循环套循环的情况,解析循环时,应先解析内循环,待内循环解析完成,再解析上一级循环;
5,关于不同数据类型的协议解析说明:由于Raw格式为16进制组成,String格式为字符串形式,故协议解析时,默认以Raw格式字节长度定义,String格式解析时,按照协议字段定义长度*2进行逐位裁剪;

字段说明

复杂协议说明

1,序号:协议字段序号,关系到协议字段的顺序;

2,字段名称:协议字段的名称解释;

3,长度:协议字段长度;

4,数据类型:协议字段类型,目前包括布尔、数值、枚举、String,周数据、比特位类型,不同类型对应属性值不一致;

5,字段属性:具体字段属性值;

6,字段说明:字段的补充解释说明;

复杂协议说明

协议解析内容

解析demo

{
    "bs2":[
        {
            "bs22":{
                "langKey":"30d7e1f1",
                "type":"string",
                "value":[
                    17
                ]
            }
        },
        {
            "bs22":{
                "langKey":"30d7e1f1",
                "type":"string",
                "value":[
                    34
                ]
            }
        }
    ],
    "bs1":{
        "langKey":"5165502",
        "type":"enum",
        "value":{
            "value":[
                2
            ]
        }
    },
    "bs4":[
        {
            "bs44":{
                "langKey":"731d3b7e",
                "type":"string",
                "value":[
                    85
                ]
            }
        },
        {
            "bs44":{
                "langKey":"731d3b7e",
                "type":"string",
                "value":[
                    17
                ]
            }
        },
        {
            "bs44":{
                "langKey":"731d3b7e",
                "type":"string",
                "value":[
                    17
                ]
            }
        },
        {
            "bs44":{
                "langKey":"731d3b7e",
                "type":"string",
                "value":[
                    17
                ]
            }
        }
    ],
    "bs3":[
        {
            "bs33":{
                "langKey":"d372e06a",
                "type":"string",
                "value":[
                    51
                ]
            }
        },
        {
            "bs33":{
                "langKey":"d372e06a",
                "type":"string",
                "value":[
                    68
                ]
            }
        }
    ]
}

解析内容概述

1、解析内容为一个json对象

2、json对象的key为字段、组的标识符

3、字段的值为json对象、组的值为数组

4、多语言标识符需要通过Dubbo接口解析具体中英文

字段内容

简单字段类型(字符串、数值型)

{
    "langKey":"d372e06a",
    "type":"string",
    "value":[
        51
    ]
}

langKey : 字段多语言标识符

type :字段类型,取值string、number

value :int数组

周字段类型

{
    "langKey":"d372e06a",
    "type":"week",
    "value":[
        1,0,0,0,0,0,0
    ]
}

langkey : 字段多语言标识符

type :字段类型取值week

value :int数组,固定7位从0,6位数据坐标依次为周一至周末的取值,以上述案例举例,表示周一启动。

多语言值字段类型(枚举、布尔型字段)

{
    "langKey":"5165502",
    "type":"enum",
    "value":{
        "langKey":"d372e06a",
        "value":[
            2
        ]
    }
}

langKey : 字段多语言标识符

type :字段类型取值enum、boolean

value : json对象

langKey : 值多语言标识符,若value未匹配到预定义的值,则会缺失

value :int数组

比特字段类型

{
    "langKey":"2ecbe5e2",
    "type":"bit",
    "value":{
        "bit7":{
            "langKey":"8ebb4416",
            "index":7,
            "type":"boolean",
            "value":{
                "langKey":"2d3975fd",
                "value":[
                    0
                ]
            }
        },
        "bit5":{
            "langKey":"d0cc3145",
            "index":5,
            "type":"boolean",
            "value":{
                "langKey":"2d3975fd",
                "value":[
                    0
                ]
            }
        },
        "bit6":{
            "langKey":"fc9a8919",
            "index":6,
            "type":"boolean",
            "value":{
                "langKey":"2d3975fd",
                "value":[
                    0
                ]
            }
        },
        "bit3":{
            "langKey":"c978dd00",
            "index":3,
            "type":"boolean",
            "value":{
                "langKey":"7f18c924",
                "value":[
                    1
                ]
            }
        },
        "bit4":{
            "langKey":"15d5ee1e",
            "index":4,
            "type":"boolean",
            "value":{
                "langKey":"7f18c924",
                "value":[
                    1
                ]
            }
        },
        "bit1":{
            "langKey":"50b1a328",
            "index":1,
            "type":"boolean",
            "value":{
                "langKey":"7f18c924",
                "value":[
                    1
                ]
            }
        },
        "bit2":{
            "langKey":"18d3937b",
            "index":2,
            "type":"boolean",
            "value":{
                "langKey":"2d3975fd",
                "value":[
                    0
                ]
            }
        },
        "bit0":{
            "langKey":"801acde4",
            "index":0,
            "type":"boolean",
            "value":{
                "langKey":"2d3975fd",
                "value":[
                    0
                ]
            }
        }
    }
}

langKey : 字段多语言标识符

type :字段类型取值bit

value : 字段值,json类型。比特字段属于“复合类型字段”,包含8个子字段。json的key为子字段的标识符

langKey : 子字段多语言标识符

index :顺序号

type : 子字段类型,取值为boolean

value :子字段取值(多语言类型)

	langKey : 子字段取值多语言标识符

	value :子字段取值,int数组。取值范围0、1

[
    {
        "a":{
            "langKey":"266edefb",
            "type":"string",
            "value":[
                12
            ]
        },
        "d":{
            "langKey":"01f1e022",
            "type":"string",
            "value":[
                18
            ]
        }
    },
    {
        "a":{
            "langKey":"266edefb",
            "type":"string",
            "value":[
                12
            ]
        },
        "d":{
            "langKey":"01f1e022",
            "type":"string",
            "value":[
                18
            ]
        }
    }
]

json数组,相同的字段定义重复多次

不循环的组,是长度为1的数组