SDK说明
一、协议结构
开始位置
类型
值
说明
0
BYTE
0xaa
起始标志
1
BYTE
0x55
起始标志
2
WORD
从1开始累加
消息流水号
4
WORD
见表2
命令ID
6
WORD
实际消息长度
消息体长度
8
HEX [n]
消息体
8+n
WORD
流水号到消息体CRC
校验
表0
二、接口说明
- 注册SDK
接口名称:HANDER SdkHanderReg(char *ComPath,UploadInterfaceCb cb);
功能描述:注册串口设备以及单片机上报数据的回调函数;
参数说明:ComPath:指定要和单片机通信的串口设备文件;
Cb:单片机上报数据的回调函数,用于解析单片机上报的数据报文;
回调函数说明:
定义: typedef int (*UploadInterfaceCb)(void *msg);
功能: 命令解析函数,供SDK收到单片机上报数据时调用;
参数: msg:已经通过CRC校验且去掉了起始字符的完整命令包;
2、反注册SDK
接口名称:int SdkHanderUnreg(HANDER hander);
功能描述:反注册SDK,整个单片机通信业务结束以后,调用改函数;
参数说明:hander:注册SDK时返回的句柄,不能为空;
3、数据发送
接口名称:int SdkHanderSendData(HANDER hander,void *msg,int len);
功能描述:发送数据到单片机;
参数说明:hander:注册SDK时返回的句柄,不能为空;
Msg:要发送到单片机的消息[只包括消息头和消息体],起始标志和校验字段,SDK会自动封包发送;
Len:要发送的消息长度;
3.1 SDK通用应答
ID: 0x0001
起始字节
类型
值
描述
0
BYTE
0/1
0:成功;1:失败
1
WORD
回应的命令ID
3
WORD
回应的消息流水号
表1
3.2 通知消息
ID:0x0002
起始字节
类型
值
描述
0
BYTE
见表3
通知消息的类型
1
BYTE[2]
Type=0/1/2,该值第一位表示结果;type=3,表示2组服务器上线抓状态
3
BYTE
0:禁用;1:正在拨号;2:拨号成功
4
BYTE
信号质量[0-5]
5
BYTE
GPS定位状态
0:未定位;1已定位
6
DWORD
报警
808协议 32位报警数据
表2
注:type=0/1/2时消息类型后面只需要1个字节来发送通知结构,只有type=3时才有后面的系统运行状态字段;
通知消息描述
消息ID
打印机打印结果通知
0x0
日志导出结果通知
0x1
行驶记录结果导出通知
0x2
主系统运行状态通知
0x3
待扩展
...
表3
3.3 控制消息
ID:0x0003
起始字节
类型
值
描述
0
BYTE
见表5
控制消息的子ID
1
DWORD
需要设置数据到单片机的就有该字段
5
BYTE[4]
该字段预留,以备协议扩展
表4
控制消息子ID描述
消息ID
描述
关闭最小系统
0x0
控制关机
重启最小系统
0x1
重启最小系统
定时关机信息设置
0x2
设置从当前时间到下次开机的时长(s),用后续DWORD字段
清除定时关机信息
0x03
取消定时关机相关信息
主系统休眠
0x04
控制系统休眠
校时
0x05
设置主系统时钟到单片机,如果RTC在MCU,此协议预留
设置IO输出状态
0x06
设置IO输出电平,通道:bit0-7;值:bit8-15
备电电池控制
0x07
控制备电电池开关
摄像头电源控制
0x08
控制两组摄像头电源通断
表5
3.4 单片机相关信息查询
ID 0x0004
起始字节
类型
值
描述
0
BYTE
查询属性类型(具体后面再定义)
表6
3.5 单片机通用应答
ID 0x8001
消息体同3.1
3.6 CAN 数据上报
ID 0x8002
消息体见具体CANBUS协议 4字节ID+8字节数据,也可以再单片机端按照808协议封装数据包透传,具体按需求实现
3.7 电源相关状态上报
ID 0x8003
起始字节
类型
值
描述
0
BYTE
0/1
ACC状态
1
BYTE
0/1
LOCK状态
2
BYTE
0/1
劫警IO状态
3
BYTE
0/1
是否休眠
4
DOWRD
主电电压 mv
表7
3.8 时钟同步
ID 0x8004
起始字节
类型
值
描述
0
DWORD
系统以s为单位的时间戳
表8
3.9 形式记录数据上报
ID 0x8005
起始字节
类型
值
描述
0
BYTE
以下节点按顺序未或存在1否则0
1
DWORD
速度值
5
BYTE
开关量
6
BYTE
是否通主电
7
BYTE
侧翻报警
8
BYTE
碰撞报警
9
BYTE
IC卡插卡状态
10
BYTE[18]
IC卡编号
28
BYTE[16]
司机姓名
44
BYTE[20]
认证ID
64
BYTE[4]
读卡时间
68
BYTE[4]
驾驶员编号
表9
3.10 主系统信息查询
预留
注:1、以上消息的定义在SDK头文件里面都有备注,本次为初稿,部分协议后续会增加和完善,主要的协议框架定义完成。
2、SDK是基于C++开发的,编译器 arm-hisiv300-linux-g++