一、终端上报平台的数据包类型
协议包一:终端上报LBS数据包给平台,包含三个LBS数据
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
内容 |
$ |
^ |
0x1C |
0x01 |
0x01 |
0x00 |
0x1030731001 |
|
|
|
|
|
|
|
|
0xfffffbff |
0xff |
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
车载机序列号 |
MCC |
MNC |
LAC |
CI |
LAC |
CI |
LAC |
CI |
vehicle_status |
Usr_alarm_flag |
记
录
号 |
长度——从“协议号”至“Usr_alarm_flag”的字节数。(下面的相同)
示例数据包(十六进制):
注:user_alarm_flag表示 保留,暂未使用
协议包二:终端上报GPS数据包给平台
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
内容 |
$ |
^ |
0x1E |
0x01 |
0x02 |
0x00 |
0x1030731001 |
0x050316 |
0x220902 |
0x22128745 |
0x113466574C |
0x014028 |
0Xfffffbff |
0xff |
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
车载机序列号 |
时间 |
日期 |
纬度值 |
经度值、N、E、AV |
速度、方向 |
vehicle_status |
Usr_alarm_flag |
记录号 |
示例数据包(十六进制):
注:记录号:二进制表示的记录序号,每发送一条记录自动加1
协议包三:终端同时上报一个GPS数据包和一个LBS数据包给平台
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
内容 |
$ |
^ |
0x26 |
0x01 |
0x03 |
0x00 |
0x1030731001 |
0x050316 |
0x220902 |
0x22128745 |
0x113466574C |
0x014028 |
|
|
|
|
0xfffffbff |
0xff |
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
车载机序列号 |
时间 |
日期 |
纬度值 |
经度值、N、E、AV |
速度、方向 |
MCC |
MNC |
LAC |
CI |
vehicle_status |
Usr_alarm_flag |
记
录
号 |
>> 时间:为格林威治时间,格式为 HHMMSSDDMMYY
>> 纬度值:0x22128745,22度12.8745
>> 经度值:0x113466574C,113度46.6574
>> 最后字节(序号0x15)含义:bit7654,经度最后一位,bit3,1:东经,0:西经,bit2,1:北纬,0:南纬,bit1,1:A,0:V,bit0,未定义
>> 速度、方向:0x014028:速度014节,方向028
协议包四: 终端向服务器发送心跳数据 0x03
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
内容 |
$ |
^ |
0x0D |
0x01 |
0x04 |
0x00 |
0x1030731001 |
0x050316 |
|
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
车载机序列号 |
时间 |
0x220902 |
记录号 |
二、平台下发的数据包类型
协议包五:平台响应应答 0x05
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
内容 |
$ |
^ |
0x0A |
0x01 |
0x05 |
0x00 |
0x050316 |
0x220902 |
0x01 |
0x02 |
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
时间 |
日期 |
应答产品编号 |
应答协议号 |
记录号 |
示例数据包(十六进制):
协议包六:平台响应终端中文地址查询请求
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
内容 |
$ |
^ |
0x09+n |
0x01 |
0x06 |
0x00 |
0x050316 |
0x220902 |
|
|
含义 |
记录头 |
长度 |
产品编号 |
协议号 |
应答类型 |
时间 |
日期 |
转发短信内容 |
记录号 |
三、数据解释
应答类型:
0x01 需要应答, 按照协议包五应答;
0x02 需要返回中文地址
vehicle_status:
位序 |
保留 |
车载机部件状态 |
车辆部件状态 |
报警状态 |
第一字节 |
第二字节 |
第三字节 |
第四字节 |
0 |
0 |
盗警 |
0 |
GPS接收机故障 |
0 |
车门开 |
0 |
盗警 |
1 |
0 |
密码错误报警 |
0 |
保留 |
0 |
车辆设防 |
0 |
劫警 |
2 |
0 |
劫警(紧急按钮) |
0 |
保留 |
0 |
ACC关 |
0 |
超速报警 |
3 |
1 |
保留 |
0 |
主机掉电由后备电池供电 |
0 |
电池电压过低 |
0 |
非法点火报警 |
4 |
0 |
电瓶拆除报警 |
1 |
保留 |
0 |
电池坏 |
1 |
保留 |
5 |
1 |
保留 |
1 |
保留 |
0 |
发动机 |
1 |
保留 |
6 |
1 |
保留 |
1 |
保留 |
1 |
保留 |
1 |
保留 |
7 |
1 |
不用 |
1 |
不用 |
1 |
不用 |
1 |
不用 |
Usr_alarm_flag:
四、关于上线
平台收到终端上报的任何一个数据包,无论是字符型的还是二进制型,只要对数据包解析出来的车载机序列号部分是有效的(无论时间等其余数据是否无效),都判定为终端上线。
五、其他
1.经纬度的转换方式
经纬度是用使用度分形式表示:经度 DDDMM.MMMM ;纬度 DDMM.MMMM
例如:纬度16进制为0x22128745 转换成字符串为22128745,根据下列公式计算得出的纬度值为 lat=22.214575
float degree, minints;
degree = atof(strMsg.Mid(idx,2)); idx += 2;
minints = atof(strMsg.Mid(idx,6))/10000.0; idx += 6;
float Lat = degree + minints/60.0;
例如:纬度16进制为0x1030731001 转换成字符串为1030731001,根据下列公式计算得出的经度值为 lon=103.1218335
degree = atof(strMsg.Mid(idx,3)); idx += 3;
minints = atof(strMsg.Mid(idx,6))/10000.0; idx += 6;
float Lon = degree + minints/60.0;