GPS手表通信协议
目录
1. 协议格式 .............................................................................................................................. 3
2. 协议规范 ............................................................................................................................... 4
1、心跳包 (0x0001) ............................................................................................................ 4
2、请求服务器动态分配地址 (0x0002) .............................................................................. 4
3、单次地址查询 (0x4101) ................................................................................................. 4
5、设置亲情号码 (0x4103)................................................................................................ 5
6、设置监听号码 (0x4130) ................................................................................................. 5
7、设置时区 (0x4132)......................................................................................................... 6
8、查询亲情号码(0x9003) .................................................................................................. 6
9、定位信息上报 (0x9955/0x9956) ................................................................................. 7
10、短信转发(0x9957) ....................................................................................................... 7
11、请求中文地址信息(0x9958) ........................................................................................ 8
3. 附录1: 0x9955数据格式 ................................................................................................ 9
1. 协议格式
GPRS数据包使用TCP传输,协议格式定义如下: 服务器下发到终端设备(下行) @@<L><ID><协议号><数据><checksum>\r\n 终端设备上报到服务器(上行) $$<L><ID><协议号><数据><checksum>\r\n
协议字段 |
字节 |
格式说明 |
@@ |
2 |
服务器下发到终端设备起始位,字符@十六进制编码为 0x40 |
$$ |
2 |
终端设备上报到服务器始位,字符$十六进制编码为0x24 |
L |
2 |
包长度,整个数据包长度的十六进制 |
ID |
7 |
设备ID 14位的BCD编码,如设备号为01234567890123编码后的7字节数据为0x01,0x23,0x45, 0x67, 0x89, 0x01, 0x23 |
协议号 |
2 |
参见下章数据包描述 |
数据 |
N |
支持0-100字节 |
checksum |
2 |
数据包的CRC-CCITT (Kermit)校验位,不包括校验位本身和数据包结束标记位 如24240011300700000005710001 42ED 0D0A 42ED = CRC (24240011300700000005710001) |
|
|
|
\r\n |
2 |
包结束符,十六进制表示为0x0D 0x0A |
注意: 1、“<”和“>”仅做数据包分隔标记,不是数据本身;多字节数据编码为大端模式。 2、ID取设备IMEI号前14位,使用十六进制为7个字节。 3、终端设备上报数据包到服务器定义为上行,服务器下发数据包到终端设备定义为下行。 4、描述中“请求”和“上报”表示终端主动向服务器发起数据包,“设置”和“查询”表示服务器主动发数据配置参数,“响应”表示被动答复对方的数据包。 5、为避免重复特此说明,后续不再描述,协议包中的<Flag>表示1个字节的数据,其含义为1表示操作成功,0表示操作失败。 6、范例中数据均为16进制表示。 7、该文档为精简版,仅保证实现基本功能,部分协议未录入。
2.协议规范
1、心跳包 (0x0001)
功能 |
终端定时上报心跳包,确认GPRS网路连接正常,否则终端再次重连 |
上行 |
$$<L><ID><0x0001><checksum>\r\n |
下行 |
@@<L><ID><0x0001><Flag><checksum>\r\n |
范例 |
2424 0011 30020000000013 0001 0B1D 0D0A |
|
4040 0012 30020000000013 0001 01 F179 0D0A |
功能 |
终端请求服务器动态分配地址,并连接新的地址,实现服务器负载均衡 |
上行 |
$$<L><ID><0x0002><checksum>\r\n |
下行 |
@@<L><ID><0x0002 ><IP:port><checksum>\r\n |
范例 |
4040 0023 30020000000013 0002 3130362E332E3232362E3138303A38303930 73C2 0D0A |
2、请求服务器动态分配地址 (0x0002)
表示终端需要连接服务器106.3.226.180:8090,开始正常工作。
3、单次地址查询 (0x4101)
功能 |
服务器查询设备当前位置 |
下行 |
@@<L><ID><0x4101><checksum>\r\n |
下行 |
$$<L><ID><0x9955><data><checksum>\r\n |
范例 |
|
|
|
4、设置定位包上传时间间隔(0x4102)
功能 |
设置终端定位包0x9955的上报间隔 |
下行 |
@@<L><ID><0x4102>< interval in hex code (2 bytes)><checksum>\r\n |
上行 |
$$<L><ID><0x5100><Flag> <interval (2 bytes)><checksum>\r\n |
范例 |
4040 0013 30020000000013 4102 000A 3808 0D0A |
|
上行缺少 |
注意:时间间隔为0表示停止向服务器上报定位数据。
5、设置亲情号码 (0x4103)
功能 |
设置终端亲情号码 |
下行 |
@@<L><ID><0x4103><button number>< phone number for receiving SMS>< phone number for receiving call><checksum>\r\n |
上行 |
$$<L><ID><0x4103><Flag><checksum>\r\n |
范例 |
4040 0032 30060000000007 4103 01 31313031313031313000000000000000 31313031313031313000000000000000 B1DA 0D0A |
|
24240012300600000000074103000D8D0D0A |
注意: 1、Button number – 1个字节16进制的数据,支持4个,包括SOS按键和3个速拨按键。
button number |
对应按键 |
1 |
SOS button |
2 |
button 1 |
3 |
button 2 |
4 |
button 3 |
2、号码使用16位ASCII表示,不足16位用0补充,本协议中所有电话号码均按此规范。如号码 8613612345678表示为 0x38 0x36 0x31 0x33 0x36 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x00 0x00 0x00。
6、设置监听号码 (0x4130)
功能 |
设置监听号码 |
下行 |
@@<L><ID><0x4130><data><checksum>\r\n |
上行 |
$$<L><ID><0x4130><Flag><checksum>\r\n |
范例 |
4040 001E 30060000000007 4130 31323334353637383930313233 3276 0D0A |
|
上行缺少 |
7、设置时区 (0x4132)
功能 |
设置终端时区 |
下行 |
@@<L><ID><0x4132><data><checksum>\r\n |
上行 |
$$<L><ID><0x4132><Flag><checksum>\r\n |
范例 |
|
|
|
注意:部分项目可能会导致异常。
8、查询亲情号码(0x9003)
功能 |
服务器查询终端绑定的亲情号码 |
下行 |
@@<L><ID><0x9003><button number><checksum>\r\n |
上行 |
$$<L><ID><0x9003>< phone number for receiving SMS><phone number for receiving call><checksum>\r\n |
范例 |
4040 0012 30060000000007 9003 04 92B5 0D0A |
|
2424 002130060000000007 9003 30303030303030303030303030303030 3118 0D0A |
button number |
对应号码 |
1 |
SOS button |
2 |
button 1 |
3 |
button 2 |
4 |
button 3 |
0xFF |
查询全部号码 |
9、定位信息上报 (0x9955/0x9956)
功能 |
终端上报位置信息 |
上行 |
$$<L><ID><0x9955><data><checksum>\r\n |
|
$$<L><ID><0x9956><data;data;data;data;data;data;data;…data;data;data;><checksum>\r\n |
下行 |
@@<L><ID><0x9955 ><Flag><checksum>\r\n |
|
@@<L><ID><0x9956 ><Flag><checksum>\r\n |
范例 |
2424 0076 30060000000007 9955 3034353635312E3030302C412C323233322E323336352C4E2C31313430312E333738382C452C3030302E312C3135372E35372C3132303931342C2C7C31307C3130307C343638302C31303137332C3030302C3436307C303030307C30307C3036367C303932 1CC0 0D0A |
|
4040 0012 30060000000007 9955 01 DE21 0D0A |
注意:
1、 范例0x9955包中对应ASCII为045651.000,A,2232.2365,N,11401.3788,E,000.1,157.57,120914,,|10|100|4680,10173,000,460|0000|00|066|092
具体格式见附录1。 2、0x9956是将多条0x9955包合并,中间使用“;”分割,其中data最多40项。
10、短信转发(0x9957)
功能 |
服务器下发电话号码和短信内容,终端将其转发 |
下行 |
@@<L><ID><0x9957><phone number><SMS data><checksum>\r\n |
上行 |
$$<L><ID><0x9957><Flag><checksum>\r\n |
范例 |
|
|
|
注意: 1、“phone number”为16位的ASCII电话号码。 2、“SMS data”为大段unicode码。 3、格式参考其他数据包。
11、请求中文地址信息(0x9958)
功能 |
终端上报位置信息,请求服务器转为地址描述 |
上行 |
$$<L><ID><0x9958><phone number><GPS/Cell data><checksum>\r\n |
下行 |
@@<L><ID><0x9958><phone number><SMS data><checksum>\r\n |
范例 |
2424 0086 30060000000007 9958 2B383631333438383635353138360000 3039323530372E3030302C412C323233322E323338302C4E2C31313430312E333739342C452C3030302E302C3139372E33372C3132303931342C2C7C31307C3130307C33393036342C393533332C3031302C3436307C303030307C30307C3232337C313030 2264 0D0A |
|
4040 010B 30060000000007 9958 2B383631333438383635353138360000 330030003000360030003000300030003000300030003000300037003A007F5E1C4E0177F16D3357025E8F7930753A53668F6C51995E2E00DD8DBB79F06C3671D1798062ED563300300036000B68320032003300737C2E00DD8DBB79F06C3671E55D388DED563200310036000B68320033003600737C2E00DD8DBB79F06C3671D1798062ED563300300034000B68320036003500737C2E00DD8DBB79E5651A900D54668FF47EEE4F33003200737C2E00DD8DBB79F16D3357025EB352B75F29527D6C668F0D67A152096750966C51F85333003300737C2E00DD8DBB79B073E34EA8534A5733003800737C EF24 0D0A |
注意: 1、“phone number”为16位的ASCII电话号码。 2、“GPS/Cell data”地址信息格式参考附录2。 3、“SMS data”为大端unicode码。 范例中地址信息:30030003000360030003000300030003000300030003000300037003A007F5E1C4E0177F16D3357025E8F7930753A53668F6C51995E2E00DD8DBB79F06C3671D1798062ED563300300036000B68320032003300737C2E00DD8DBB79F06C3671E55D388DED563200310036000B68320033003600737C2E00DD8DBB79F06C3671D1798062ED563300300034000B68320036003500737C2E00DD8DBB79E5651A900D54668FF47EEE4F33003200737C2E00DD8DBB79F16D3357025EB352B75F29527D6C668F0D67A152096750966C51F85333003300737C2E00DD8DBB79B073E34EA8534A5733003800737C 对应解码为字符: 30060000000007:广东省深圳市福田区车公庙.距离泰然科技园306栋226米~~~
3. 附录1: 0x9955数据格式
Data consists of: GPRMC | HDOP | Altitude | Cell | State | Alarm | Battery | Signal For example: 100008.000,A,2232.4679,N,11356.7805,E,0.204,89.22,210911,,|7.49|152.6|3571,9763,00,460|0000|00|100|100
(1) GPRMC includes: hhmmss.dd,S,xxmm.dddd,<N|S>,yyymm.dddd,<E|W>,s.s,h.h,ddmmyy
若GPS未定位,则缺省该字段。GPS定位时,数据包解析如下: 134829.486,A,1126.6639,S,11133.3299,W,58.31,309.62,110200
Parameter |
描述 |
Example |
hhmmss.dd |
UTC 时间 hh = hours; mm = minutes; ss = seconds; dd = decimal part of seconds |
13:48:29.486 |
S |
Status indicator, A = valid, V = invalid |
A=Valid |
xxmm.dddd |
Latitude xx = degrees; mm = minutes; dddd = decimal part of minutes |
11 deg. 26.6639 min |
<N|S> |
Either character N or character S N = North, S = South |
S = South |
yyymm.dddd |
Longitude yyy = degrees; mm = minutes; dddd = decimal part of minutes |
111 deg. 33.3299 min |
<E|W> |
Either character E or character W E = East, W = West |
W=West |
s.s |
Speed, knots |
58.31 Knots |
h.h |
Heading |
309.62 deg |
ddmmyy |
Date dd = date; mm = month‟ yy = year |
11th, Aug. 2000 |
(2) | 分割符 ASCII (=0x7c) (3) HDOP, in ASCII code, 0.5-99.9. HDOP is blank when the tracking unit has no GPS fix (4) Altitude, in algorism. (5) Cell includes: cid,lac,mnc,mcc For example:4272,10147,00,460
Parameter |
Description |
Example |
cid |
Cell ID |
4272 |
lac |
LAC |
10147 |
mnc |
MNC |
00 |
mcc |
MCC |
460 |
(6) State: Status of input and output Bit0~Bit7: Reserved and default as „0‟ Bit8: Status of Input1 If Bit8=0: Input1 is inactive; Bit8=1: Input1 is active (SOS button is pressed) Bit9: Status of Input2 If Bit9=0: Input2 is inactive; Bit9=1: Input2 is active (Button 1 is pressed) Bit10: Status of Input3 If Bit10=0: Input3 is inactive; Bit10=1: Input3 is active (Button 2 is pressed) Bit11: Status of Input4 If Bit11=0: Input4 is inactive; Bit11=1: Input4 is active (Button 3 is pressed) Bit12: Status of Input5 If Bit12=0: Input5 is inactive; Bit12=1: Input5 is active (Answer button is pressed) Bit13: Status of Input6 If Bit13=0: Input6 is inactive; Bit13=1: Input6 is active (“Hang up/Power key” button is pressed)
(7) Alarm: Alarm command
Alarm code |
Definition |
=0x01 |
SOS button is pressed |
=0x02 |
2nd button is pressed |
=0x03 |
3rd button is pressed |
=0x04 |
First button is pressed |
=0x05 |
Reserved |
=0x10 |
Low battery alarm |
=0x11 |
Over speed alarm |
=0x12 |
Movement alarm |
=0x13 |
Reserved |
=0x14 |
Alarm of tracking unit being turned on |
=0x15 |
Alarm of tracking unit entering blind area |
=0x16 |
Alarm of tracking unit leaving blind area |
=0x31 |
SOS button is released |
=0x32 |
2nd button is released |
=0x33 |
3rd button is released |
=0x34 |
First button is released |
=0x35 |
Reserved |
=0x40 |
Vibrate alarm |
(8) Battery: Percentage of the battery voltage (9) Signal: Percentage of the signal strength