Files
desungongpai/doc/KKS_Protocol_P240_P241.md

1476 lines
56 KiB
Markdown
Raw Normal View History

# P240 通讯协议
## 目录
- [协议包格式说明](#协议包格式说明)
- [登录包 0x01](#登录包-0x01)
- [心跳包 0x13](#心跳包-0x13)
- [LBS 地址请求包 0x17](#lbs-地址请求包-0x17)
- [地址信息查询包 0x1A](#地址信息查询包-0x1a)
- [校时包 0x1F](#校时包-0x1f)
- [GPS 定位包 0x22](#gps-定位包-0x22)
- [LBS 多基站扩展信息包 0x28](#lbs-多基站扩展信息包-0x28)
- [WIFI 信息包 0x2C](#wifi-信息包-0x2c)
- [心跳包 0x36](#心跳包-0x36)
- [在线设置指令 0x80](#在线设置指令-0x80)
- [留言信息 0x82](#留言信息-0x82)
- [校时包 0x8A](#校时包-0x8a)
- [通用信息传输包 0x94](#通用信息传输包-0x94)
- [GPS 4G 定位包 0xA0](#gps-4g-定位包-0xa0)
- [LBS 多基站扩展信息包 4G 0xA1](#lbs-多基站扩展信息包-4g-0xa1)
- [WIFI 4G 信息包 0xA2](#wifi-4g-信息包-0xa2)
- [单围栏 4G 报警包 0xA3](#单围栏-4g-报警包-0xa3)
- [多围栏 4G 报警包 0xA4](#多围栏-4g-报警包-0xa4)
- [LBS 4G 报警包 0xA5](#lbs-4g-报警包-0xa5)
- [LBS-4G 地址请求包 0xA7](#lbs-4g-地址请求包-0xa7)
- [WIFI 报警包 0xA9](#wifi-报警包-0xa9)
- [考勤信息包 0xB0](#考勤信息包-0xb0)
- [考勤信息包 0xB1](#考勤信息包-0xb1)
- [蓝牙打卡包 0xB2](#蓝牙打卡包-0xb2)
- [蓝牙定位包 0xB3](#蓝牙定位包-0xb3)
---
## 协议包格式说明
| 格式 | 长度 (byte) | 描述 |
|------|-------------|------|
| 起始位 | 2 | `0x78 0x78`(包长度 1 位) 或 `0x79 0x79`(包长度 2 位) |
| 包长度 | 1 或 2 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | 代表传输包的类型 |
| 信息内容 | n | 按不同的应用,对应相应的"协议号",确定具体的内容 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | "包长度"到"信息序列号"的 CRC-ITU 值。接收方若收到的信息计算有 CRC 错误,则忽略,抛弃这个数据包(算法详见附件 1 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
---
## 登录包 0x01
### 描述
- 登录包是终端与平台建立连接的信息包,会向平台发送终端产品信息
- GPRS 连接建立成功并向服务器发送一条登录包5 秒内收到返回包则认为连接正常,未收到会继续发送登录包
- 超过 5 秒没有收到服务器的返回包,则认为登录包回复超时
- 超时 3 次后终端启动定时重启功能
### 登录请求包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x01` |
| 信息内容 - 终端 id | 8 | 例IMEI 号为 123456789123456则终端 ID 为:`0x01 0x23 0x45 0x67 0x89 0x12 0x34 0x56` |
| 信息内容 - 类型识别码 | 2 | 根据此识别码判断终端类型 |
| 信息内容 - 时区语言 | 2 | 时区语言标志,详见下表 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | "包长度"到"信息序列号"的 CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 11 01 07 52 53 36 78 90 02 42 70 00 32 01 00 05 12 79 0D 0A
```
### 时区语言
| Bit 15-04 | Bit 03 | Bit 02-01 | Bit 00 |
|-----------|--------|-----------|--------|
| 时区扩大 100 的值 | 东/西时区 | 暂无 | 语言选择 |
- **Bit 03**: 0: 东时区, 1: 西时区
- **时区 Bit04-Bit15**:
- 扩展位: `0x32 0x00` 表示东八区, GMT+8:00计算方法: 8*100=800转为十六进制 `0x0320`
- 扩展位: `0x4D 0xD8` 表示西十二区又 3/4 时区, GMT-12:45计算方法: 12.45*100=1246, 转十六进制 `0x04DD`
- **语言选择**: `0x01`: 中文, `0x02`: 英文
- **备注**: 算法是将计算出来的时区值循环左移四位再拼合时区东、西,语言选择位,以便节省四个字节。
### 登录回复包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x01` |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 05 01 00 05 9F F8 0D 0A
```
---
## 心跳包 0x13
### 描述
- 为了维持 GPRS 链路不被断开而进行发送维持链路
- GPRS 连接建立成功并向服务器发送一条心跳包5 秒内收到返回包则认为连接正常,周期后会发送下一个心跳包
- 超过 5 秒没有收到服务器的返回包,则认为心跳超时
- 心跳超时 3 次后终端启动定时重启功能
### 终端发送心跳包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x13` |
| 信息内容 - 终端信息内容 | 1 | 详见下表 |
| 信息内容 - 电压等级 | 1 | 0--100 代表电量百分比 |
| 信息内容 - GSM 信号强度 | 1 | `0x00`: 无信号; `0x01`: 信号极弱; `0x02`: 信号较弱; `0x03`: 信号良好; `0x04`: 信号强 |
| 信息内容 - 预留扩展位 | 2 | |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 0A 13 40 04 04 00 01 00 0F DC EE 0D 0A
```
### 终端信息内容详解
| Bit 07 | Bit 06 | Bit 05-04-03 | Bit 02 | Bit 01 | Bit 00 |
|--------|--------|--------------|--------|--------|--------|
| 未定义 | 保留 | 状态码 | 保留 | 保留 | 保留 |
状态码:
- `0000`: 正常
- `0001`: 上班打卡
- `0010`: 下班打卡
- `0100`: 开机报警
- `0110`: 低电报警
- `1000`: SOS 报警
- `1010`: 进入电子围栏
- `1100`: 出电子围栏
- `1110`: 关机报警
### 服务器心跳包回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x13` |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 05 23 01 00 67 0E 0D 0A
```
---
## LBS 地址请求包 0x17
### 描述
- 客户发送地址请求指令给终端,终端再发送地址请求包向服务器请求地址解析
- 终端将服务器解析回传的地址转发给客户
### 终端地址请求包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x17` |
| 信息内容 - MCC | 2 | 国家代号 Mobile Country Code(MCC)(转换为十进制)。MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| 信息内容 - MNC | 1/2 | 移动网号码 Mobile Network Code(MNC)(转换为十进制), 长度说明见下表 |
| 信息内容 - LAC | 2 | 位置区码 Location Area Code (LAC)(转换为十进制) |
| 信息内容 - Cell ID | 3 | 移动基站 Cell Tower ID(Cell ID)(转换为十进制) |
| 信息内容 - 电话号码 | 21 | 电话号码 |
| 信息内容 - 报警语言 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 24 17 01 CC 00 28 7D 00 1F 71 31 32 35 32 30 31 33 35 33 32 31 37 37 30 37 39 00 00 00 00 00 00 01 00 2A 7D D6 0D 0A
```
### MCC 位详解
为兼容部分国家 MNC 占用两个字节情况,借用 MCC 最高 bit 位来区分 MNC 长度:
- 当 MCC 最高 bit 位 1 时MNC 长度为 2
- 当 MCC 最高 bit 位 0 时MNC 长度为 1
- 出货的老设备默认 Bit15 为 0新设备 Bit15 为 1
| Bit 15 | Bit 14-00 |
|--------|-----------|
| 1: MNC 长度为 2 / 0: MNC 长度为 1 | MCC 信息 |
### 服务器回复
#### 英文地址回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x97` |
| 信息内容 - 指令长度 | 2 | 服务器标志位至信息序列号前的数据长度(包含服务器标志位 4 字节) |
| 信息内容 - 服务器标志位 | 4 | 服务器用于标志是哪个报警的标志 |
| 信息内容 - ADDRESS | 7 | 报警编码标志(ASCII) |
| 信息内容 - && | 2 | 分隔符(ASCII) |
| 信息内容 - 地址内容 | n | 服务器解析后的地址(UTF16BE) |
| 信息内容 - && | 2 | 分隔符(ASCII) |
| 信息内容 - 电话号码 | 21 | 报警包上传全部传"0"(ASCII) |
| 信息内容 - ## | 2 | 分隔符(ASCII) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
79 79 00 AF 97 00 A8 00 00 00 01 41 44 44 52 45 53 53 26 26 00 31 00 30 00 20 ...
```
地址内容: 10 Yunshan W Rd, Huicheng Qu, Huizhou Shi, Guangdong Sheng, China
#### 中文地址回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x17` |
| 信息内容 - 指令长度 | 1 | 服务器标志位至信息序列号前的数据长度(包含服务器标志位 4 字节) |
| 信息内容 - 服务器标志位 | 4 | 服务器用于标志是哪个报警的标志 |
| 信息内容 - ADDRESS | 7 | 报警编码标志(ASCII) |
| 信息内容 - && | 2 | 分隔符(ASCII) |
| 信息内容 - 地址内容 | n | 服务器解析后的地址(UTF16BE) |
| 信息内容 - && | 2 | 分隔符(ASCII) |
| 信息内容 - 电话号码 | 21 | 报警包上传全部传"0"(ASCII) |
| 信息内容 - ## | 2 | 分隔符(ASCII) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
地址内容: 广东省惠州市惠城区云山西路 10,投资大厦东北 31 米
> 当数据长度超长时, 使用起始位为 `0x79 0x79` 的超长包格式发送, 包长度占 2 字节
---
## 地址信息查询包 0x1A
### 描述
家长短信指令要求儿童机立即定位GPS 定位后,向服务器请求位置信息,发送此数据包。
### 终端发送定位包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x1A` |
| 信息内容 - 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| 信息内容 - GPS 信息 - GPS 信息长度/定位卫星数 | 1 | 第一个字符为 GPS 信息长度,第二个字符为参与定位卫星数(转换为十进制) |
| 信息内容 - GPS 信息 - 纬度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| 信息内容 - GPS 信息 - 经度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| 信息内容 - GPS 信息 - 速度 | 1 | 转换为 10 进制得出结果 |
| 信息内容 - GPS 信息 - 航向/状态 | 2 | 转换为 16 位 2 进制数,根据位进行计算(详见下表) |
| 信息内容 - 电话号码 | 21 | 电话号码 |
| 信息内容 - 预留扩展位 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 服务器回复
当数据长度超长时, 使用起始位为 `0x79 0x79` 的超长包格式发送, 包长度占 2 字节。中文地址内容使用 UTF8 编码下发。
英文地址回复协议号为 `0x97`,中文地址回复协议号为 `0x17`,格式与 LBS 地址请求包回复相同。
---
## 校时包 0x1F
### 描述
- 用于开机终端向服务器自动请求对时,解决开机未定位时时间错误的问题
- 服务器回复正确时间及格式,时间为 UTC 时间
### 终端发送校时包请求
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x1F` |
| 信息内容 - 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| 信息内容 - 语言/预留扩展位 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 0D 1F 15 04 06 06 2E 31 00 02 00 02 46 95 0D 0A
```
> 备注: 服务器暂时无须对终端上报时间做任何处理, 后续建议使用校时包 0x8A
### 服务器校时包回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x1F` |
| 信息内容 - 日期时间 | 4 | 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在的总秒数 |
| 信息内容 - 语言/预留扩展位 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
> 备注: 日期时间字段, 英文环境使用 GMT+0 时区的时间戳, 中文环境使用 GMT+8 时区的时间戳。国内环境, 语言/预留扩展位使用 `0x0001`, 国外环境使用 `0x0002`。
示例数据:
```
78 78 0B 1F 60 6C 03 DA 00 00 00 02 4D 6A 0D 0A
```
---
## GPS 定位包 0x22
### 描述
- 用于传输终端位置的数据包
- 定位且连接成功后按照设定规则上传定位数据点
- 连接成功且有缓存定位点则补传之前定位的数据点
### 终端发送定位包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x22`(UTC) |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| GPS 信息 - GPS 信息长度/定位卫星数 | 1 | 第一个字符为 GPS 信息长度,第二个字符为参与定位卫星数(转换为十进制) |
| GPS 信息 - 纬度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 经度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 速度 | 1 | 转换为 10 进制得出结果 |
| GPS 信息 - 航向/状态 | 2 | 转换为 16 位 2 进制数,根据位进行计算(详见下表) |
| MCC | 2 | 国家代号 Mobile Country Code(MCC)(转换为十进制)。MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| MNC | 1/2 | 移动网号码 Mobile Network Code(MNC)(转换为十进制) |
| LAC | 2 | 位置区码 Location Area Code (LAC)(转换为十进制) |
| Cell ID | 3 | 移动基站 Cell Tower ID(Cell ID)(转换为十进制) |
| ACC | 1 | ACC 状态: ACC 低为 00, ACC 高为 01 |
| 数据上报模式 | 1 | GPS 数据点上报类型(见下表) |
| GPS 实时补传 | 1 | `0x00` 实时上传, `0x01` 补传 |
| 里程统计 | 4 | 转换为 10 进制得出结果(部分产品有此功能, 无此功能无此位置) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 数据上报模式
| 值 | 说明 |
|----|------|
| `0x00` | 定时上报 |
| `0x01` | 定距上报 |
| `0x02` | 拐点上传 |
| `0x03` | ACC 状态改变上传 |
| `0x04` | 从运动变为静止状态后,补传最后一个定位点 |
| `0x05` | 网络断开重连后,上报之前最后一个有效上传点 |
| `0x06` | 星历更新强制上传 GPS 点 |
| `0x07` | 按键上传定位点 |
| `0x08` | 开机上报位置信息 |
| `0x09` | 未使用 |
| `0x0A` | 设备静止后上报最后的经纬度,但时间更新 |
| `0x0B` | WIFI 解析经纬度上传包 |
| `0x0C` | LJDW(立即定位)指令上报 |
| `0x0D` | 设备静止后上报最后的经纬度 |
| `0x0E` | GPSDUP 上传(下静止状态定时上传) |
| `0x0F` | 退出追踪模式 |
### 状态航向详解
占用 2 个字节,表示 GPS 的运行方向,表示范围 0~360单位以正北为 0 度,顺时针。
| Bit 15 | Bit 14 | Bit 13 | Bit 12 | Bit 11 | Bit 10 |
|--------|--------|--------|--------|--------|--------|
| 0 | 0 | GPS 实时差分定位 | GPS 定位与否 | 东经/西经 | 南纬/北纬 |
| Bit 09-00 |
|-----------|
| 航向 |
### 预留扩展位
预留扩展位 2 字节:
- 语言选择位 0=1或 0语言选择位 1=0表示短信请求后台回复中文位置信息
- 语言选择位 0=0语言选择位 1=1表示短信请求后台回复英文位置信息
- 例如:扩展位值为 `0x00 0x00``0x00 0x01` 即请求中文位置信息。值为 `0x00 0x02` 表示请求英文位置信息。
示例数据:
```
78 78 22 22 0F 0C 1D 02 33 05 C9 02 7A C8 18 0C 46 58 60 00 14 00 01 CC 00 28 7D 00 1F 71 00 00 01 00 08 20 86 0D 0A
```
### 服务器回复定位包
此包无回复
---
## LBS 多基站扩展信息包 0x28
### 描述
用于传输终端不定位时传输位置的数据包
### 终端发送 LBS 多基站包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x79 0x79` |
| 包长度 | 2 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x28`(如协议号为 `0x2E` 为必须要求回复的定位包,如不回复则进行备份) |
| 日期时间(UTC) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| MCC | 2 | 国家代号 Mobile Country Code(MCC)(转换为十进制) |
| MNC | 1/2 | 移动网号码 Mobile Network Code(MNC)(转换为十进制) |
| LAC | 2 | 位置区码 Location Area Code (LAC)(转换为十进制) |
| CI | 3 | 移动基站 Cell Tower ID(Cell ID)(转换为十进制) |
| RSSI | 1 | 小区信号强度,值范围是 `0x00`~`0xFF``0x00` 信号最弱,`0xFF` 信号最强 |
| NLAC1 | 2 | 同上 LAC |
| NCI1 | 3 | 同上 CI |
| NRSSI1 | 1 | 同上 RSSI |
| NLAC2 ~ NLAC6 | 2 each | 同上 LAC |
| NCI2 ~ NCI6 | 3 each | 同上 CI |
| NRSSI2 ~ NRSSI6 | 1 each | 同上 RSSI |
| 时间提前量 | 1 | 是指移动台信号到达基站的实际时间与假设该移动台与基站距离为 0 时移动台信号到达基站的时间的差值 |
| 语言 | 2 | `0x00 0x01` 中文, `0x00 0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 3B 28 10 01 0D 02 02 02 01 CC 00 28 7D 00 1F 71 3E 28 7D 00 1F 72 31 28 7D 00 1E 23 2D 28 7D 00 1F 40 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 02 00 05 B1 4B 0D 0A
```
### 多基站包回复
- `0x28` LBS 多基站包服务器无需回复
- `0x2E` LBS 多基站包服务器需回复
`0x2E` 回复包:
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x2E` |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
---
## WIFI 信息包 0x2C
### 描述
用于传输终端接收的 WIFI 的数据包
### 终端发送 WiFi 包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x2C` |
| 日期时间(UTC) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| MCC | 2 | 国家代号 Mobile Country Code(MCC)(转换为十进制) |
| MNC | 1/2 | 移动网号码 Mobile Network Code(MNC)(转换为十进制) |
| LAC | 2 | 位置区码 Location Area Code (LAC)(转换为十进制) |
| CI | 3 | 移动基站 Cell Tower ID(Cell ID)(转换为十进制) |
| RSSI | 1 | 小区信号强度,值范围是 `0x00`~`0x73``0x00` 信号最强(理论上不存在),`0x73` 信号最弱,设备传的是实际 RSSI 的绝对值 |
| NLAC1 ~ NLAC6 | 2 each | 同上 LAC |
| NCI1 ~ NCI6 | 3 each | 同上 CI |
| NRSSI1 ~ NRSSI6 | 1 each | 同上 RSSI |
| 时间提前量 | 1 | 是指移动台信号到达基站的实际时间与假设该移动台与基站距离为 0 时移动台信号到达基站的时间的差值 |
| WIFI 数量 | 1 | 用于确定包内传输 WIFI 的数量, 0 为未检测到 WIFI |
| WIFI MAC1 | 6 | 接收的信号 1 WIFI 的 MAC (根据搜索到的 WIFI 实际数量进行传输) |
| WIFI 强度 1 | 1 | 信号 1 WIFI 的信号强度 |
| WIFI MAC2 | 6 | 同上 |
| WIFI 强度 2 | 1 | 同上 |
| ... | ... | ... |
| 信息序列号 | 2 | 从开机后, 每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值, 统一为 `0x0D 0x0A` |
示例数据:
```
78 78 48 2C 10 06 0E 02 2D 35 01 CC 00 28 7D 00 1F 71 2D 28 7D 00 1E 17 25 28 7D 00 1E 23 1E 28 7D 00 1F 72 1C 28 7D 00 1F 40 12 00 00 00 00 00 00 00 00 00 00 00 00 FF 02 80 89 17 44 98 B4 5C CC 7B 35 36 61 A6 5B 00 1F A0 04 0D 0A
```
### 服务器 WIFI 包回复
WIFI 包服务器无需回复
---
## 心跳包 0x36
### 描述
- 为了维持 GPRS 链路不被断开而进行发送维持链路
- GPRS 连接建立成功并向服务器发送一条心跳包5 秒内收到返回包则认为连接正常,周期后会发送下一个心跳包
- 超过 5 秒没有收到服务器的返回包,则认为心跳超时
- 心跳超时 3 次后终端启动定时重启功能
### 终端发送心跳包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x36` |
| 终端信息内容 | 1 | 详见下表 |
| 电压等级 | 1 | 0--100 代表电量百分比 |
| GSM 信号强度 | 1 | `0x00`: 无信号; `0x01`: 信号极弱; `0x02`: 信号较弱; `0x03`: 信号良好; `0x04`: 信号强 |
| 语言扩展口状态 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 扩展模块 | n | 扩展模块格式位: 模块号(2)+模块长度(1)+模块内容(N) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
扩展模块说明:
- 模块号(2) + 模块长度(1) + 模块内容(N),根据模块号进行解析
- 例如 `00 27 02 05 46` 代表外电电压为 13.5
- `0x0041` 计步
- 模块详解见 [附录 3-模块号详解]
示例数据:
```
78,78,11,36,20,49,03,00,01,00,41,04,00,00,00,08,00,06,ba,cf,0d,0a
```
### 终端信息内容详解
| Bit 07 | Bit 06 | Bit 05 | Bit 04 | Bit 03 | Bit 02 | Bit 01 | Bit 00 |
|--------|--------|--------|--------|--------|--------|--------|--------|
| 0: 油电接通 / 1: 油电断开 | 0: GPS 未定位 / 1: GPS 已定位 | 上下班状态 (1:已上班, 0:已下班) | | 0: 未接电源充电 / 1: 已接电源充电 | 0: ACC 低 / 1: ACC 高 | 0: 撤防 / 1: 设防 | |
### 服务器心跳包回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x36` |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 05 36 01 00 DB 26 0D 0A
```
---
## 在线设置指令 0x80
### 描述
- 用于服务器下发在线指令控制终端执行相应的任务
- 终端接收后回复执行结果给服务器
### 服务器在线指令发送
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x80` |
| 信息内容 - 指令长度 | 1 | 服务器标志位+指令内容长度 |
| 信息内容 - 服务器标志位 | 4 | 留给服务器识别用,终端将收到的数据二进制原样在返回包中返回 |
| 信息内容 - 指令内容 | n | 以字符串的 ASCII 或 UTF8 表示,指令内容兼容短信指令 |
| 信息内容 - 语言 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 1d 80 15 00 83 b6 0a 55 41 52 54 31 54 43 2c 63 32 30 32 30 30 63 30 23 00 01 c1 67 04 26 0d 0a
```
### 指令内容
#### 在线激活 GPS
指令: `GPSON#`
- 功能描述:开启 GPS 定位功能。
- 返回信息:
- 成功:`GPSON=Success!`
- 失败:`GPSON=Fail!`
#### 在线设置亲情号码
指令格式:
- 添加号码:`FN&&A&&名称1&&号码1&&名称2&&号码2&&名称3&&号码3&&名称4&&号码4##`
- 删除号码:`FN&&D&&号码序号1&&号码序号2&&号码序号3&&号码序号4##``FN&&D&&电话号码##`
> 注:名称最大长度不能超过 6 个字。名称使用 UTF8 码表示,其他字符使用 ASCII 表示。当号码为空时,用"&&"隔开,终端会清除该号码。"&&"不能省略。
返回信息:
- 成功:`FN=Success!`
- 失败:`FN=Fail!`
范例: `FN&&A&&六&&123&&二&&123&&三&&123##` 以上为添加三个亲情号码
#### 在线设置白名单号码
指令格式:
- 添加号码(平台每次均传输全部共 15 组号码)`WN&&A&&名称1&&号码1&&名称2&&号码2&&...名称15&&号码15##`
- 删除号码:`WN&&D&&号码序号1&&号码序号2&&号码序号3&&号码序号4##``WN&&D&&电话号码##`
> 注:名称最大长度不能超过 6 个字。名称使用 UTF8 码表示。如果白名单内容太长(超出 255 字节),"指令长度"和"包长度"都要填为 `0xFF`,做为终端解析时的特殊处理用。
返回信息:
- 成功:`设置成功.`
- 失败:`WN=Fail!`
白名单设置报文实例 1:
```
[服务器->终端]
78 78 96 80 90 00 42 42 19 57 4E 26 26 41 26 26 0C 54 66 5B 41 00 26 26 31 33 36 31 32 33 34 35 36 37 38 26 26 0C 54 66 5B 42 00 26 26 31 33 36 31 32 33 34 35 36 37 39 26 26 26 26 26 26 0C 54 66 5B 44 00 26 26 38 36 37 37 38 36 37 39 26 26 0C 54 66 5B 45 00 26 26 31 33 36 31 32 33 34 35 36 37 30 26 26 26 26 26 26 26 26 26 26 0C 54 66 5B 48 00 26 26 36 38 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 23 23 00 00 4C AB 0D 0A
[终端->服务器]
78 78 2A 81 18 00 42 42 19 57 4E 3D 53 75 63 63 65 73 73 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 1A FE 6E 0D 0A
```
白名单设置报文实例 2 (报文长度超出了 255包长度和内容长度都固定为 FF):
```
[服务器->终端]
78 78 FF 80 FF 00 42 42 30 57 4E 26 26 41 26 26 ...
[终端->服务器]
78 78 2A 81 18 00 42 42 30 57 4E 3D 53 75 63 63 65 73 73 21 ...
```
#### 在线设置 SOS 号码
指令格式:
- 添加号码:`SOS,A,号码1,号码2,号码3#`
- 删除号码:`SOS,D,号码序号1,号码序号2,号码序号3#``SOS,D,电话号码#`
> 注:限定从亲情号码中选择。若号码为空,使用","隔开。
返回信息:
- 成功:`SOS=Success!`
- 失败:`SOS=Fail!`
范例:
1. `SOS,A,13790774051,13553442881,13556286698#`(一次增设三个)
2. `SOS,A,13790774051,,#`(设第 1 个 SOS 号码,删除第 2,3 个号码)
3. `SOS,D,1#`(删除第一个 SOS 号码)
4. `SOS,D,1,3#`(删除第一个和第三个 SOS 号码)
### 终端回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` / `0x79 0x79` |
| 包长度 | 1/2 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x81` |
| 指令长度 | 1/2 | 长度: 服务器标志位至信息序列号前所有内容长度。`0x7878` 包: 指令长度 1 字节, `0x7979` 包: 指令长度 2 字节 |
| 服务器标志位 | 4 | 留给服务器识别用,终端将收到的数据二进制原样在返回包中返回 |
| 内容 | n | 需要发送的数据(按照内容编码格式) |
| 语言/预留扩展位 | 2 | `0x01` UTF8 编码, `0x02` ASCII 编码 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
> 当数据长度超长时, 使用起始位为 `0x79 0x79` 的超长包格式发送, 包长度占 2 字节。白名单指令例外,超出 255 字节时,包长度和指令长度填 255。
---
## 留言信息 0x82
### 描述
服务器通过 0x82 协议给终端发送留言信息,信息可以被终端语音播放
### 服务器向终端发送留言信息
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x82` |
| 指令长度 | 1 | 服务器标志位+指令内容长度 |
| 服务器标志位 | 4 | 留给服务器识别用,终端将收到的数据二进制原样在返回包中返回 |
| 指令内容 | n | 以字符串的 UTF16BE 表示 |
| 语言 | 2 | 后位 `0x01` 中文(UNICODE-UTF16BE unicode 大端)(目前中英文不区分,都是用 01) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
报文实例(留言信息:"明天 9 点全班到 3 楼学 ABC"
```
78 78 45 82 22 00 00 00 00 00 53 00 45 00 52 00 56 00 4D 00 53 00 47 00 2C 51 E0 7C 73 72 69 80 54 7F 51 53 61 00 23 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C 65 46 02 0D 0A
```
### 终端回复
协议号 `0x80`,终端回复 `OK`
示例数据:
```
78 78 2A 80 18 00 00 00 00 4F 4B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 07 96 16 0D 0A
```
> 当数据长度超长时, 使用起始位为 `0x79 0x79` 的超长包格式发送, 包长度占 2 字节
---
## 校时包 0x8A
### 描述
- 用于开机终端向服务器自动请求对时,解决开机未定位时时间错误的问题
- 服务器回复正确时间及格式,时间为 UTC 时间
### 终端发送校时包请求
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x8A` |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 05 8A 00 06 88 29 0D 0A
```
### 服务器校时包回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x8A`UTC |
| 信息内容 - 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 0B 8A 0F 0C 1D 00 00 15 00 06 F0 86 0D 0A
```
---
## 通用信息传输包 0x94
### 描述
用于终端传输各类非定位数据使用
### 终端发送信息传输通用包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x79 0x79` |
| 包长度 | 2 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x94` |
| 信息类型(子协议号) | 1 | `0x09`: 定位卫星信息, `0x0A`: ICCID, ... 待增加 |
| 数据内容 | n | 根据信息类型不同传输内容不同,详见下表 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 传输信息内容
#### 类型 0x09 - 定位卫星信息
| 字段 | 长度 | 描述 |
|------|------|------|
| GPS 模块状态 | 1 | `0x00` 没有此功能, `0x01` 搜星, `0x02` 2D 定位, `0x03` 3D 定位, `0x04` 休眠 |
| GPS 定位星数 | 1 | GPS 卫星定位数量(根据星数确定传输强度的数量) |
| GPS1 强度 | 1 | 定位卫星的强度 1 |
| GPS2 强度 | 1 | 定位卫星的强度 2 |
| ... | | |
| GPS 可见不参与定位星数 | 1 | GPS 可见但不参与定位星数 |
| 可见 GPS1 强度 | 1 | 可见卫星的强度 1 |
| 可见 GPS2 强度 | 1 | 可见卫星的强度 2 |
| ... | | |
| 北斗模块状态 | 1 | `0x00` 没有此功能, `0x01` 搜星, `0x02` 2D 定位, `0x03` 3D 定位, `0x04` 休眠 |
| 北斗定位星数 | 1 | 北斗卫星定位数量 |
| 北斗 1 强度 | 1 | 参与定位卫星的强度 1 |
| 北斗 2 强度 | 1 | 参与定位卫星的强度 2 |
| ... | | |
| 北斗可见不参与定位星数 | 1 | 北斗可见但不参与定位星数 |
| 可见北斗 1 强度 | 1 | 可见卫星的强度 1 |
| 可见北斗 2 强度 | 1 | 可见卫星的强度 2 |
| ... | | |
| 扩展长度 | 1 | 为之后功能扩展使用长度,未添加扩展时为 `0x00` |
| 扩展位 | n | 根据扩展位长度变化而变化,当扩展位长度为 `0x00` 时此位不传 |
#### 类型 0x0A - ICCID
| 字段 | 长度 | 描述 |
|------|------|------|
| IMEI | 8 | 例IMEI 号为 123456789123456则终端 ID 为:`0x01 0x23 0x45 0x67 0x89 0x12 0x34 0x56` |
| IMSI | 8 | 例IMSI 号为 123456789123456则终端 ID 为:`0x01 0x23 0x45 0x67 0x89 0x12 0x34 0x56` |
| ICCID | 10 | 例ICCID 号为 12345123456789123456则终端 ID 为:`0x12 0x34 0x51 0x23 0x45 0x67 0x89 0x12 0x34 0x56` |
### 服务器回复信息传输通用包
服务器无需回复
---
## GPS 4G 定位包 0xA0
### 描述
- 用于传输终端位置的数据包
- 定位且连接成功后按照设定规则上传定位数据点
- 连接成功且有缓存定位点则补传之前定位的数据点
### 终端发送定位包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA0` |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| GPS 信息 - GPS 信息长度/定位卫星数 | 1 | 第一个字符为 GPS 信息长度,第二个字符为参与定位卫星数(转换为十进制) |
| GPS 信息 - 纬度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 经度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 速度 | 1 | 转换为 10 进制得出结果 |
| GPS 信息 - 航向/状态 | 2 | 转换为 16 位 2 进制数,根据位进行计算 |
| MCC | 2 | 国家代号(转换为十进制)MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| Cell ID | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| ACC | 1 | ACC 状态: ACC 低为 00, ACC 高为 01 |
| 数据上报模式 | 1 | 同 GPS 0x22 包 |
| GPS 实时补传 | 1 | `0x00` 实时上传, `0x01` 补传, `0x02` 不定位且 LBS 禁用的上一次定位包, `0x03` GPS 与 LBS 均无上传的最后一个定位包, `0x04` 补传 02, `0x05` 补传 03 |
| 里程统计 | 4 | 可选字段,转换为 10 进制得出结果 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78,78,2a,a0,15,04,10,07,35,0e,ca,02,7a,c8,a2,0c,46,58,be,00,14,00,81,cc,00,00,00,00,28,7d,00,00,00,00,02,ea,5e,01,00,04,00,00,09,df,fc,0d,0a
```
### 服务器回复定位包
此包无回复
---
## LBS 多基站扩展信息包 4G 0xA1
### 描述
用于传输终端不定位时传输位置的数据包
### 终端发送 LBS 多基站包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA1` |
| 日期时间(UTC) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| MCC | 2 | 国家代号(转换为十进制) |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| CI | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| RSSI | 1 | 小区信号强度,值范围是 `0x00`~`0x73``0x00` 信号最强,`0x73` 信号最弱 |
| NLAC1~NLAC6 | 4 each | 同上 LAC |
| NCI1~NCI6 | 8 each | 同上 CI |
| NRSSI1~NRSSI6 | 1 each | 同上 RSSI |
| 时间提前量 | 1 | 信号时间差值 |
| 语言 | 2 | `0x00 0x01` 中文, `0x00 0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 服务器 LBS 多基站包回复
无需回复
---
## WIFI 4G 信息包 0xA2
### 描述
用于传输终端接收的 WIFI 的数据包
### 终端发送 WiFi 包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA2` |
| 日期时间(UTC) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| MCC | 2 | 国家代号(转换为十进制) |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| CI | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| RSSI | 1 | 小区信号强度 |
| NLAC1~NLAC6 | 4 each | 同上 LAC |
| NCI1~NCI6 | 8 each | 同上 CI |
| NRSSI1~NRSSI6 | 1 each | 同上 RSSI |
| 时间提前量 | 1 | 信号时间差值 |
| WIFI 数量 | 1 | 用于确定包内传输 WIFI 的数量, 0 为未检测到 WIFI |
| WIFI MAC1 | 6 | 接收的信号 1 WIFI 的 MAC |
| WIFI 强度 1 | 1 | 信号 1 WIFI 的信号强度 |
| WIFI MAC2 | 6 | 同上 |
| WIFI 强度 2 | 1 | 同上 |
| ... | ... | ... |
| 信息序列号 | 2 | 从开机后, 每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值, 统一为 `0x0D 0x0A` |
### 服务器回复
无需回复
---
## 单围栏 4G 报警包 0xA3
### 描述
- 用于传输终端定义的报警内容
- 服务器接收报警内容后进行回复并将经纬度解析成地址并回传给终端
- 终端将回传的地址发送到终端设置的 SOS 号码上
### 终端发送报警包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA3`(UTC) |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| GPS 信息 - GPS 信息长度/定位卫星数 | 1 | 第一个字符为 GPS 信息长度,第二个字符为参与定位卫星数 |
| GPS 信息 - 纬度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 经度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 速度 | 1 | 转换为 10 进制得出结果 |
| GPS 信息 - 航向/状态 | 2 | 同 GPS 包 |
| LBS 长度 | 1 | LBS 信息总长度(自身长度+MCC+MNC+LAC+CellID) |
| MCC | 2 | 国家代号MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| Cell ID | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| 终端信息 | 1 | 详见终端信息详解 |
| 电压等级 | 1 | `0x00`~`0x06` |
| GSM 信号等级 | 1 | `0x00`~`0x04` |
| 报警语言 | 2 | 详见报警语言详解 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 终端信息详解
| Bit 07 | Bit 06 | Bit 05-04 | Bit 03 | Bit 02 | Bit 01 | Bit 00 |
|--------|--------|-----------|--------|--------|--------|--------|
| 1: 油电断开 / 0: 油电接通 | 1: GPS 已定位 / 0: GPS 未定位 | 011: 低电报警 / 000: 正常 | 1: 已接电源充电 / 0: 未接电源充电 | 1: ACC 高 / 0: ACC 低 | 1: 设防 / 0: 撤防 | |
### 电压等级
| 值 | 说明 |
|----|------|
| `0x00` | 无电(关机) |
| `0x01` | 电量极低(不足以打电话发短信等) |
| `0x02` | 电量很低(低电报警) |
| `0x03` | 电量低(可正常使用) |
| `0x04` | 电量中 |
| `0x05` | 电量高 |
| `0x06` | 电量极高 |
### GSM 信号等级
| 值 | 说明 |
|----|------|
| `0x00` | 无信号 |
| `0x01` | 信号极弱 |
| `0x02` | 信号较弱 |
| `0x03` | 信号良好 |
| `0x04` | 信号强 |
### 报警语言详解
**字节 1** (报警类型):
| 值 | 说明 |
|----|------|
| `0x00` | 正常 |
| `0x01` | SOS 求救 |
| `0x02` | 断电报警 |
| `0x03` | 震动报警 |
| `0x04` | 进围栏报警 |
| `0x05` | 出围栏报警 |
| `0x06` | 超速报警 |
| `0x09` | 位移报警 |
| `0x0A` | 进 GPS 盲区报警 |
| `0x0B` | 出 GPS 盲区报警 |
| `0x0C` | 开机报警 |
| `0x0D` | GPS 第一次定位报警 |
| `0x0E` | 外电低电报警 |
| `0x0F` | 外电低电保护报警 |
| `0x10` | 换卡报警 |
| `0x11` | 关机报警 |
| `0x12` | 外电低电保护后飞行模式报警 |
| `0x13` | 拆卸报警 |
| `0x14` | 门报警 |
| `0x15` | 低电关机报警 |
| `0x16` | 声控报警 |
| `0x17` | 伪基站报警 |
| `0x18` | 开盖报警 |
| `0x19` | 内部电池低电报警 |
| ... | 详情见[附录 2-告警类型列表] |
**字节 2** (语言):
| 值 | 说明 |
|----|------|
| `0x01` | 中文 |
| `0x02` | 英文 |
| `0x00` | 不需要平台回复 |
> 备注:由于报警持续增加,终端信息内的报警与报警位会有重叠,以报警位为准,当报警位为 `0x00` 时可判断终端信息内的报警内容
### 服务器报警包回复
#### 报警确认回复
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0x26`(UTC) |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78 78 05 26 00 1C 9D 86 0D 0A
```
#### 英文地址回复
协议号 `0x97`,包含 ALARMSMS(8 bytes) + && + 地址内容(UTF16BE) + && + 电话号码(21 bytes) + ##
#### 中文地址回复
协议号 `0x17`,格式同英文地址回复,地址内容使用 UTF16BE 编码
---
## 多围栏 4G 报警包 0xA4
### 描述
- 用于传输终端定义的报警内容
- 服务器接收报警内容后进行回复并将经纬度解析成地址并回传给终端
- 终端将回传的地址发送到终端设置的 SOS 号码上
### 报警包
与单围栏报警包 0xA3 结构基本相同,协议号为 `0xA4`(UTC),增加了以下字段:
| 格式 | 长度 | 详解 |
|------|------|------|
| 围栏编号 | 1 | 可选字段,围栏报警此位有效, 0 为一号围栏, 1 为二号围栏... FF 为无效 |
示例数据:
```
78,78,2e,a4,15,04,10,07,35,0d,ca,02,7a,c8,90,0c,46,58,d0,00,14,00,10,81,cc,00,00,00,00,28,7d,00,00,00,00,02,ea,5e,01,40,05,03,01,01,00,00,08,bc,63,0d,0a
```
终端信息详解、报警语言详解同单围栏 4G 报警包 0xA3。
### 服务器报警包回复
与单围栏 4G 报警包 0xA3 回复格式相同(协议号 `0x26` 确认回复 + `0x97` 英文地址回复 + `0x17` 中文地址回复)。
---
## LBS 4G 报警包 0xA5
### 描述
- 用于传输终端定义的报警内容
- 服务器接收报警内容后进行回复并将 LBS 基站信息解析成地址并回传给终端
- 终端将回传的地址发送到终端设置的 SOS 号码上
### 报警包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA5` |
| MCC | 2 | 国家代号MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| Cell ID | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| 终端信息 | 1 | 详见终端信息详解 |
| 电压等级 | 1 | `0x00`~`0x06` |
| GSM 信号等级 | 1 | `0x00`~`0x04` |
| 报警语言 | 2 | 详见报警语言详解 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78,78,1a,a5,81,cc,00,00,00,00,28,7d,00,00,00,00,02,ea,5e,01,00,05,03,0c,01,00,05,48,12,0d,0a
```
终端信息详解、报警语言详解同单围栏 4G 报警包 0xA3。
### 服务器报警包回复
与单围栏 4G 报警包 0xA3 回复格式相同。
---
## LBS-4G 地址请求包 0xA7
### 描述
- 客户发送地址请求指令给终端,终端再发送地址请求包向服务器请求地址解析
- 终端将服务器解析回传的地址转发给客户
### 终端地址请求包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA7` |
| MCC | 2 | 国家代号(转换为十进制) |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 4 | 位置区码(转换为十进制) |
| Cell ID | 8 | 移动基站 Cell Tower ID(转换为十进制) |
| 电话号码 | 21 | 电话号码 |
| 报警语言 | 2 | 后位 `0x01` 中文, `0x02` 英文 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例数据:
```
78,78,2c,a7,81,cc,00,00,00,00,28,7d,00,00,00,00,02,ea,5e,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,0d,fc,b4,0d,0a
```
### 服务器回复
英文地址回复协议号 `0x97`,中文地址回复协议号 `0x17`,格式与 LBS 地址请求包 0x17 回复相同。
> 当数据长度超长时, 使用起始位为 `0x79 0x79` 的超长包格式发送, 包长度占 2 字节
---
## WIFI 报警包 0xA9
### 描述
用于传输终端接收的 WIFI 的报警数据包
### 终端发送 WiFi 报警包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xA9` |
| 日期时间(UTC) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| MCC | 2 | 国家代号(转换为十进制) |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| 基站类型 | 1 | `0x00`-2G, `0x01`-4G |
| 基站数量 | 1 | N, N 最小值为 1 |
| LAC | 2/4 | 2G 为 2 字节, 4G 为 4 字节 |
| CI | 3/8 | 2G 为 3 字节, 4G 为 8 字节 |
| RSSI | 1 | 小区信号强度 |
| ... | ... | ... |
| 时间提前量 | 1 | 信号时间差值 |
| WIFI 数量 | 1 | 用于确定包内传输 WIFI 的数量, 0 为未检测到 WIFI |
| WIFI MAC1 | 6 | 接收的信号 1 WIFI 的 MAC |
| WIFI 强度 1 | 1 | 信号 1 WIFI 的信号强度 |
| WIFI MAC2 | 6 | 同上 |
| WIFI 强度 2 | 1 | 同上 |
| ... | ... | ... |
| 报警语言 | 2 | 详见报警语言详解 |
| 信息序列号 | 2 | 从开机后, 每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值, 统一为 `0x0D 0x0A` |
报警语言详解同单围栏 4G 报警包 0xA3。
### WIFI 报警包回复
英文地址回复协议号 `0x97`,地址内容使用 UNICODE 编码。中文地址回复协议号 `0x17`
---
## 考勤信息包 0xB0
上/下班打卡 GPS+WIFI+LBS 信息包 0xB0
### 描述
告警事件发生时(如上班/下班打卡),向服务器发送终端报打卡告警状态。
### 考勤信息包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB0` |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| GPS 是否定位 | 1 | 1 已定位, 0 未定位 |
| 终端保留信息 | 2 | 平台收到后原样回复给终端 |
| GPS 信息 - GPS 信息长度/定位卫星数 | 1 | 第一个字符为 GPS 信息长度,第二个字符为参与定位卫星数 |
| GPS 信息 - 纬度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 经度 | 4 | 转换为 10 进制除以 1800000 得出结果 |
| GPS 信息 - 速度 | 1 | 转换为 10 进制得出结果 |
| GPS 信息 - 航向/状态 | 2 | 同 GPS 包 |
| 终端信息内容 | 1 | 详见终端信息详解 |
| 电压等级 | 1 | `0x00`~`0x06` |
| GSM 信号等级 | 1 | `0x00`~`0x04` |
| 预留扩展位 | 2 | |
| MCC | 2 | 国家代号MCC 最高 bit 位置 1 时MNC 占 2 个字节 |
| MNC | 1/2 | 移动网号码(转换为十进制) |
| LAC | 2 | 位置区码(转换为十进制) |
| CI | 3 | 移动基站 Cell Tower ID(转换为十进制) |
| RSSI | 1 | 小区信号强度, 值范围是 `0x00`~`0xFF`, `0x00` 信号最弱, `0xFF` 信号最强 |
| NLAC1~NLAC6 | 2 each | 同上 LAC |
| NCI1~NCI6 | 3 each | 同上 CI |
| NRSSI1~NRSSI6 | 1 each | 同上 RSSI |
| TA | 1 | 时间提前量 |
| WIFI 数量 | 1 | 用于确定包内传输 WIFI 的数量, 0 为未检测到 WIFI |
| WIFI MAC1 | 6 | 接收的信号 1 WIFI 的 MAC |
| WIFI 强度 1 | 1 | 信号 1 WIFI 的信号强度 |
| WIFI MAC2 | 6 | 同上 |
| WIFI 强度 2 | 1 | 同上 |
| ... | ... | ... |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 终端信息详解
| Bit 07 | Bit 06 | Bit 05-04-03-02 | Bit 01 | Bit 00 |
|--------|--------|-----------------|--------|--------|
| 未定义 | 保留 | 状态码 | | |
状态码:
- `0000`: 正常
- `0001`: 上班打卡
- `0010`: 下班打卡
- `0100`: 开机报警
- `0110`: 低电报警
- `1000`: SOS 报警
- `1010`: 进入电子围栏
- `1100`: 出电子围栏
- `1110`: 关机报警
> 数据包中的状态信息均为数据包中时间位记录的那一刻状态。0x13 心跳包的此字节无意义,告警信息的上传由其他协议完成。
### 服务器响应
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB0` |
| 日期时间(终端打卡时间) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| 打卡结果 - 状态 | 1 | 1 表示打卡成功0 表示打卡失败 |
| 打卡结果 - 打卡类型 | 1 | 1 表示上班打卡2 表示下班打卡 |
| 终端保留信息 | 2 | 平台收到后原样回复给终端 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
实例:
```
终端 -> 服务器: 78 78 84 B0 11 09 16 02 38 1A 01 D7 02 6C 18 4F 0C 38 D1 29 01 14 00 44 06 04 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF ...
服务器 -> 终端: 78 78 0f b0 15 04 10 07 29 1e 01 01 01 00 00 00 d5 8d 0d 0a
```
---
## 考勤信息包 0xB1
上/下班打卡 GPS+WIFI+LBS 信息包 0xB1
### 描述
告警事件发生时(如上班/下班打卡),向服务器发送终端报打卡告警状态。
### 考勤信息包
与 0xB0 结构类似,协议号为 `0xB1`,主要区别:
- MNC: 2 字节(固定)
- LAC: 4 字节
- CI: 8 字节
- NLAC1~NLAC6: 4 each
- NCI1~NCI6: 8 each
其余字段日期时间、GPS 是否定位、终端保留信息、GPS 信息、终端信息内容、电压等级、GSM 信号等级、预留扩展位、RSSI、TA、WIFI 数量及 WIFI MAC/强度等)与 0xB0 相同。
### 服务器响应
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB1` |
| 日期时间(终端打卡时间) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| 打卡结果 - 状态 | 1 | 1 表示打卡成功0 表示打卡失败 |
| 打卡结果 - 打卡类型 | 1 | 1 表示上班打卡2 表示下班打卡 |
| 终端保留信息 | 2 | 平台收到后原样回复给终端 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
实例:
```
终端 -> 服务器: 78 78 84 B0 11 09 16 02 38 1A 01 D7 ...
服务器 -> 终端: 78 78 0F B1 11 09 16 02 38 1A 01 01 00 00 00 00 51 f8 0D 0A
```
---
## 蓝牙打卡包 0xB2
### 描述
上传蓝牙打卡信息
### 蓝牙打卡包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB2` |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| RSSI 信号强度 | 1 | 有符号整数 |
| MAC 地址 | 6 | 例00-FF-A6-B9-10-19则上传`0x00 0xFF 0xA6 0xB9 0x10 0x19` |
| UUID | 16 | 例12345678912345671234567891234567则上传`0x12 0x34 0x56 0x78 0x91 0x23 0x45 0x67 0x12 0x34 0x56 0x78 0x91 0x23 0x45 0x67` |
| Major | 2 | 例1234则上传`0x12 0x34` |
| Minor | 2 | 例1234则上传`0x12 0x34` |
| 信标电量 | 2 | 无符号整形,例如上传 1对应实际最小单位是 0.01V |
| 终端信息内容 | 1 | 详见终端信息详解 |
| 终端保留信息 | 2 | 平台收到后原样回复给终端 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
示例:
```
78 78 2B B2 16 08 08 0B 16 22 4E 00 FF A6 B9 10 19 00 FF A6 B9 10 19 00 FF A6 B9 10 19 00 18 FF A6 04 C2 04 B8 00 30 08 03 E9 00 17 1E 0B 0D 0A
```
### 终端信息详解
| Bit 07 | Bit 06 | Bit 05-04-03-02 | Bit 01 | Bit 00 |
|--------|--------|-----------------|--------|--------|
| 未定义 | 保留 | 状态码 | | |
状态码:
- `0010`: 下班打卡
- `0001`: 上班打卡
> 数据包中的状态信息均为数据包中时间位记录的那一刻状态。打卡包此字节无意义,告警信息的上传由其他协议完成。这里只针对打卡使用。
### 服务器响应
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x78 0x78` |
| 包长度 | 1 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB2` |
| 日期时间(终端打卡时间) | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制)(时区时间) |
| 打卡结果 - 状态 | 1 | 1 表示打卡成功0 表示打卡失败 |
| 打卡结果 - 打卡类型 | 1 | 1 表示上班打卡2 表示下班打卡 |
| 终端保留信息 | 2 | 平台收到后原样回复给终端 |
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
---
## 蓝牙定位包 0xB3
### 描述
上传蓝牙定位信息包
### 蓝牙定位包
| 格式 | 长度 | 详解 |
|------|------|------|
| 起始位 | 2 | `0x79 0x79` |
| 包长度 | 2 | 长度=协议号+信息内容+信息序列号+错误校验 |
| 协议号 | 1 | `0xB3` |
| 日期时间 | 6 | 年(1byte)月(1byte)日(1byte)时(1byte)分(1byte)秒(1byte)(转换为十进制) |
| 蓝牙数量 | 1 | 上传的蓝牙信息数量 |
以下为每个蓝牙信标的信息(重复 N 次):
| 字段 | 长度 | 详解 |
|------|------|------|
| RSSI 信号强度 | 1 | 有符号整数 |
| MAC 地址 | 6 | 例00-FF-A6-B9-10-19则上传`0x00 0xFF 0xA6 0xB9 0x10 0x19` |
| UUID | 16 | 例12345678912345671234567891234567则上传`0x12 0x34 0x56 0x78 0x91 0x23 0x45 0x67 0x12 0x34 0x56 0x78 0x91 0x23 0x45 0x67` |
| Major | 2 | 例1234则上传`0x12 0x34` |
| Minor | 2 | 例1234则上传`0x12 0x34` |
| 信标电量 | 2 | 无符号整形,根据单位进行判断,如果单位是伏,对应实际最小单位是 0.01V,否则则是百分比 |
| 信标电量单位 | 1 | 0 是伏1 是百分比 |
包尾:
| 格式 | 长度 | 详解 |
|------|------|------|
| 信息序列号 | 2 | 从开机后,每次发送数据序列号都自动加 1, 循环使用 |
| 错误校验 | 2 | CRC-ITU 值 |
| 停止位 | 2 | 固定值,统一为 `0x0D 0x0A` |
### 服务器响应
蓝牙定位包无需回复。