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++