协议格式:
1.uint16 消息长度 msgLen,下面的 2,3,4 的总 byte 长度,不包括 msgLen 本身,2,3,4 统称为 msgData
2.uint8 校验字段,算法如下:
发送的时候:
var cbCheckCode byte=0
for i = 1; i < msgLen; i++ {
cbCheckCode += msgData[i]
}
result = ^cbCheckCode + 1//然后把结果 result 写入 uint8 校验字段 msgData[0]
接收的时候:
var cbCheckCode byte=msgData[0]
for i = 1; i < msgLen; i++ {
cbCheckCode += msgData[i]
}
if 0 != cbCheckCode {
return//校验结果有误,报错
}
消息数据:
3.uint32 消息号:uint32(mainCmdID) | uint32(subCmdID)<<16,mainCmdID (主消息号)和 subCmdID (子消息号)都是 uint16
4.byte 字节流,消息数据 data,一般是 struct 的结构体数据转换成字节流,到时候看具体用到的数据类型再说怎么转换,比如 string 类型,转换成字节流的话,前面 2 个字节表示长度,后面的就是 string 的内容