UDP远程升级文档
目录
总则
协议概述
UDP 接口是杭州东骏科技有限公司通讯模块用户连接、上报运行信息、接受模块控制命令、模块远程升级功能的接口。
协议命令
命令结构
起始标识 | 长度字段 | 命令 | 分隔符 | 数据 | 结束标识 |
1byte | 4byte | 1byte | 1byte | 0-1024byte | 2byte |
1:起始标识:固定值“$”
2:字段长度::ASCII 数字,从起始标识到结束标识,不足4byte 在前面补0
3:命令:当前指令的命令编码
4:分隔符:固定值”/”
5:数据:命令的具体内容
6:结束标识:\r\n
远程升级-导引
该指令用来模块定时询问服务器是否需要升级,我们建议询问频率为1 次/小时。
设备发送查询命令:
命令编码 | C | 命令编号 | 0x01 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 项目名称 | ASCII | #/#分割 | |
3 | PROJECT_KEY | ASCII | #/#分割 | |
4 | 平台号 | ASCII | #/#分割 | |
5 | 版本号 | ASCII |
长度或分割方式:可以是按照长度分割字段或者按照分隔符分割字段,按照长度分割即该字段为定长字段,字段前后不需要加分隔符,按照分隔符分割则该字段与下一个字段之间插入指定的分隔符。
服务端下发查询结果:
命令编码 | C | 命令编号 | 0x01 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 是否需要升级 | ASCII | 1byte | S-需要,F-不需要 |
2 | 升级包总块数 | ASCII | 3byte | 不需要升级为0 |
3 | 升级包总字节数 | ASCII | 6byte | 不需要升级为0 |
4 | 升级包名称 | ASCII | 10byte | 不需要升级为0 |
5 | MD5值 | ASCII | 32byte | 整个升级包做校验,大写 |
6 | IMEI值 | ASCII | 15byte | 设备的IMEI值 |
查询:
$ 0098 C / 868619040039495 #/# GZJ_DJ_4G #/# fH3fehhlYYpLUnQW4II87jLD3JJZTEkN #/# LONGSHANG_M25_4G #/# 0.2.2 <0x0D><0x0A>
升级应答:
$ 0076 C / S 116 059112 0000000140 9875f44a93717d3fdd8943aa175bb562 868619040039495 <0x0D><0x0A>
不升级应答:
$ 0076 C / F 000 000000 0000000000 00000000000000000000000000000000 868142041815052 <0x0D><0x0A>
远程升级-下载
当模块询问远程升级-导引时需要升级,则模块主动通过该指令逐个下载升级包,升级包分块下载,每一块大小为512 字节,最后一块为实际剩余大小。
请求下载升级块:
命令编码 | U | 命令编号 | 0x02 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 升级包名称 | ASCII | #/#分割 | |
3 | 当前下载的块编号 | ASCII | #/#分割 | 块编号从1 开始,3 字节不足在前面补零 |
4 | 会话ID | ASCII | 6 字节长度,不足在前面补零,模块生成,服务器应答时下发模块上报的会话ID |
服务器下发升级块:
命令编码 | U | 命令编号 | 0x02 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 会话ID | ASCII | 6byte | 下发模块上报的会话ID |
2 | 升级包名称 | ASCII | 10byte | 没有查询到下载的内容则为全”0” |
3 | 当前块编号 | ASCII | 3byte | 不足3byte 在前面补0,没有查询到下载的内容则为0 |
4 | 当前块MD5 | ASCII | 32byte | 不足3 字节在前面补0,没有查询到下载的内容为全"0" |
5 | 升级块内容 | ASCII | 1-1024byte | 升级数据的base64 值,没有升级数据为空 |
查询第一个升级包:
$ 0052 U / 868619040039495 #/# 0000000140 #/# 001 #/ # 000001 <0x0D><0x0A>
应答查询第一个升级包:
$ 0744 U / 000001 0000000140 001 a1f6b2366630a54fdc35245322178c8d ILAAIA2JAQhNBQEITwUBCFEFAQhTBQEIVQUBCAAAAAAAAAAAAAAAAAAAAABXBQEIWQUBCAAA AAC3wwEImV8BCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCGEyAQgniQEIJ4kBCCeJ AQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIny8BCCeJAQgniQEIJ4kBCCeJAQ gniQEIo0EBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgbYgEI8WIBCA9kAQg3MgEIJ4kBCCeJAQ gniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQiNZQEIjWYBCCeJAQgniQEIJ4kBCCeJAQgn iQEIJ4kBCN/4DNAM8Ej9AEgAR/sCAQggsAAgCLWOSAB4OLmNoACQjqORopOhikgM8DL+iEmYoAz wHv6ZoqKhpqAM8Bn+qkqqSaugDPAU/qxKrUmtoAzwD/696AhArqKuobCgDPAIvnG2s0gBaLNKAfT gYRFDAWC/80CP/ucQtQLw+f0C8Cr+A/Du+KxIACHA+KARASLA+KQhwPiMEalKwvi8EcD4lBEQvfC1h bAK8Hz9CfC6+gzww/gHRqKgDPDb/U/0AHaqSM3pAQYJIAAlAJADJM3pA1Q= <0x0D><0x0A>
查询最后一个升级包:
$ 0052 U / 868619040039495 #/# 0000000140 #/# 116 #/# 000116 <0x0D><0x0A>
应答查询最后一个升级包:
$ 0372 U / 000116 0000000140 1161ec029851e8a8060322d65f91a3e8 6d8Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8AAAAAROYBCAAAACC8IwAASM0BCOj mAQi8IwAgZIwAABTPAQgRhKJKBAAKHwECAwQGBwgJAiU5ODc2ABYcMC5xYS10Y3AuaWRvbmdq dW4uY29tAlABGYgiOCo1iAsodWSIAREev3wBCNcEAf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/w H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8BJgY/4OUBCIBFAgQGCC0BAgME BAVUBgcICQ= <0x0D><0x0A>
升级完之后需要发确认心跳包:
$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ <0x0D><0x0A>
心跳
心跳数据时由模块主动发起,用于确认UDP 链路是否有效以及上报升级系统的运行情况,以及实时连网小区信息信号值,该指令每5 分钟1 次
设备上报心跳:
命令编码 | A | 命令编号 | 0x02 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 心跳内容版本号 | ASCII | #/#分割 | |
3 | 内容 | ASCII | #/#分割 | 日志内容中不得带有\r\n,#/#符号 |
如果只是上报心跳没有业务数据则心跳版本为0,内容为空,升级系统启动计数为导引的询问次数,升级系统的升级次数为升级固件的次数。
版本对应的内容:
心跳版本号 | 1 | 用于模块 | M25 | |
说明 | 上报服务端设备的基站位置信息,升级情况 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 升级系统启动计数 | ASCII | "_"分割 | |
2 | 升级次数计 | ASCII | "_"分割 | |
3 | Lac | ASCII | "_"分割 | |
4 | Cellid | ASCII | "_"分割 | |
5 | Bcch | ASCII | "_"分割 | |
6 | Bsic | ASCII | "_"分割 | |
7 | Dbm | ASCII |
$ 0035 A / 868619040039495 #/# 1 #/# 1 ^_^ 1 ^_^ D103 ^_^ 66ED ^_^ 146 ^_^ 64 ^_^ -127 <0x0D><0x0A>
心跳版本号 | 2 | 用于模块 | M25 | |
说明 | 上报升级错误日志 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 错误类型 | ASCII | "_"分割 | UPERR01:升级导引错误
UPERR02-升级下载错误 UPERR03-固件校验错误 UPERR04-硬件写入错误 UPERR05-升级未成功 UPOK-升级成功 |
2 | 外加说明 | ASCII | "_"分割 | 外加说明简单说明错误的内容,错误的具体判断原因,只能为英文,不得带有#/^$\r\n 等符号 |
$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ Upgrade_Success <0x0D><0x0A>
心跳版本号 | 100 | 用于模块 | M25 | |
说明 | 对时 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 时间类型 | ASCII | 0:单位为秒
1:单位为毫秒 |
$ 0034 A / 868619040039495 #/# 100 #/# 0 <0x0D><0x0A>
服务端应答心跳:
命令编码 | A | 命令编号 | 0x02 | |
数据方向 | 下行,心跳内容版本号>=100,需要回复,否则不需要回复 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 心跳内容版本号 | ASCII | 3byte | |
2 | 消息体长度 | ASCII | 3byte | |
3 | 具体心跳回复内容 | ASCII | nbyte |
$ 0025 A / 100 010 1603766452 <0x0D><0x0A>
心跳版本号 | 100 | 用于模块 | M25 | |
说明 | 对时 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | Unix 时间戳 | ASCII | 10-13byte | 根据时间戳类型,单位为秒或毫秒 |
$ 0025 A / 100 010 1603766452 <0x0D><0x0A>
请求服务端消息数据
请求服务端消息数据协议,是用于模块目前连网信息的上报,以及请求服务端的模块控制指令,该消息建议每15 分钟发送一次
请求服务端消息数据:
命令编码 | B | 命令编号 | 0x03 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 当前联网地址 | ASCII | #/#分割 | |
3 | 当前联网端口 | ASCII | #/#分割 | |
4 | 模块是否重启 | ASCII | #/#分割 | S-启用,F-禁用 |
5 | ICCID | ASCII | #/#分割 | |
6 | 信号值 | ASCII | #/#分割 | |
7 | 网络制式 | ASCII | #/#分割 | |
8 | 联网状态 | ASCII | #/#分割 | 1-已连网,2-已注网未连网,3-已注网未获取承载,4-未注网 |
9 | 开机后连接失败次数 | ASCII | #/#分割 | |
10 | 开机后总运行时 | ASCII | #/#分割 | 单位为秒 |
11 | 开机后总连网时间 | ASCII | #/#分割 | 单位为秒 |
12 | 模组供电电压当前值 | ASCII | #/#分割 | 单位0.1V,没有为0V |
13 | 本次测量周期的最大值 | ASCII | #/#分割 | 单位0.1V,没有为0V |
14 | 本次测量周期的最小值 | ASCII | #/#分割 | 单位0.1V,没有为0V |
15 | 开机之后传输上行的业务数据字节数 | ASCII | #/#分割 | |
16 | 开机之后传输下行的业务数据字节数 | ASCII | #/#分割 | |
17 | 模组的温度 | ASCII | #/#分割 | 1℃为单位,偏移50,即0 度为50,没有温度则为0 |
$ 0162 B / 868619040039495 #/# 0.qa-tcp.idongjun.com #/# 9876 #/# S #/# 89860459041990141892 #/# 4G #/# 21 #/# 1 #/# 0 #/# 2750 #/# 2708 #/# DJ-00025_VA_GD32F103RCT6_GZJ_DJ_4G_DJS_V0.2.3 <0x0D><0x0A>
服务端下发消息:
命令编码 | D | 命令编号 | 0x03 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | 15byte | |
2 | 消息类型 | ASCII | 1byte | 消息类型为小写字母 |
3 | 消息体长度 | ASCII | 3byte | |
4 | 消息体 | ASCII | 0-999byte |
定义消息体:
消息体类型 | a | 说明 | 无下发内容,该指令无消息体 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
$ 0028 D / 868619040039495 a 000 <0x0D><0x0A>
消息体类型 | b | 说明 | 修改IP 和端口 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 通讯协议标识 | ASCII | 1byte | T-TCP,U-UDP,M-Mqtt |
2 | IP 或域名标识 | ASCII | 1byte | P-IP,Y-域名 |
3 | 连接地址 | ASCII | nbyte | |
4 | 端口 | ASCII | 5byte | 不足5 字节在前面补0 |
$ 0028 D / 868619040039495 b 022 T P www.dongjun.org 09876 <0x0D><0x0A>
消息体类型 | c | 说明 | 模块使能或失能 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 是否使能 | ASCII | 1byte |
$ 0028 D / 868619040039495 c 001 1 <0x0D><0x0A>
消息体类型 | d | 说明 | 重启模块 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 是否重启 | ASCII | 1byte | 1-重启,2-不重启,3-软件重启,4-关机 |
$ 0028 D / 868619040039495 d 001 1 <0x0D><0x0A>
消息体类型 | e | 说明 | 修改设备id(需业务支持) | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 设备id | ASCII | nbyte | 需要修改的新设备ID |
$ 0028 D / 868619040039495 e 010 D000000001 <0x0D><0x0A>
服务器消息应答:
当模块接受到服务器消息,消息类型不为a 时,需要应答服务器
命令编码 | D | 命令编号 | 0x04 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 应答类型 | ASCII | #/#分割 | 应答类型为小写字母 |
3 | 消息体长度 | ASCII | #/#分割 | |
4 | 消息体 | ASCII |
应答类型 | b | 说明 | 应答修改IP 和端口 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 结束标识 | ASCII | “_”分割 | 1-成功,2-失败,3-参数异常 |
2 | 异常原因 | ASCII | 可以为空,说明异常的原因 |
$ 0028 D / 868619040039495 #/# b #/# 004 1 ^_^ <0x0D><0x0A>
应答类型 | c | 说明 | 应答模块使能或失能 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 结束标识 | ASCII | “_”分割 | 1-成功,2-失败,3-参数异常 |
2 | 异常原因 | ASCII | 可以为空,说明异常的原因 |
$ 0028 D / 868619040039495 #/# c #/# 004 1 ^_^ <0x0D><0x0A>
应答类型 | d | 说明 | 应答重启模块 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 结束标识 | ASCII | “_”分割 | 1-成功,2-失败,3-参数异常 |
2 | 异常原因 | ASCII | 可以为空,说明异常的原因 |
$ 0028 D / 868619040039495 #/# d #/# 004 1 ^_^ <0x0D><0x0A>
应答类型 | e | 说明 | 应答模块ID修改 | |
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 结束标识 | ASCII | “_”分割 | 1-成功2-不支持3-ID非法 |
$ 0028 D / 868619040039495 #/# e #/# 001 1 <0x0D><0x0A>
设备网络质量统计上报
设备应该没一个小时上报一次该接口,该接口统计以天为单位,每天0 点清空统计,服务端以当天最后一次上报作为采用数据,如果设备有实时时钟,则及时以实时时钟加上服务端校时为准,如果设备没有实时时钟,已服务端校时和定时器计时为准,服务器每次应答时间后设备应该校对其时间戳
命令编码 | J | 命令编号 | 0x05 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 设备时间戳 | ASCII | #/#分割 | 单位为秒,如果设备时间戳与服务器时间戳相差大于1 小时则该条数据无效,服务器应答时间戳让设备对时 |
3 | 设备在线时间计数 | ASCII | #/#分割 | 单位为分钟 |
4 | 设备离线时间计数 | ASCII | #/#分割 | 单位为分钟 |
3 | 设备信号值最低 | ASCII | #/#分割 | 0-31 |
4 | 设备信号值最高 | ASCII | #/#分割 | 0-31 |
3 | 注网失败统计 | ASCII | #/#分割 | |
4 | 承载失败统计 | ASCII | #/#分割 | |
3 | 心跳无回应统计 | ASCII | #/#分割 | |
4 | 联网失败统计 | ASCII | #/#分割 | |
4 | 设备自计算评分 | ASCII | #/#分割 | 0-优良,1-良好,2-一般,3-异常 |
$ 0028 J / 868619040039495 #/# 1603766452 #/# 10 #/# 8 #/# 25 #/# 31 #/# 2 #/# 6 #/# 2 #/# 6 #/# 0 <0x0D><0x0A>
服务端下发消息:
命令编码 | J | 命令编号 | 0x05 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | 15byte | |
2 | 设服务器时间戳 | ASCII | 10byte | 单位为秒 |
3 | 服务端设备评分 | ASCII | 1byte | 0-优良,1-良好,2-一般,3-异常 |
$ 0028 J / 868619040039495 #/# 1603766452 #/# 0 <0x0D><0x0A>
远程升级-导引(DF_LARGE_FIRMWARE)
该指令用来模块定时询问服务器是否需要升级,我们建议询问频率为1 次/小时。
设备发送查询命令:
命令编码 | X | 命令编号 | 0x01 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 项目名称 | ASCII | #/#分割 | |
3 | PROJECT_KEY | ASCII | #/#分割 | |
4 | 平台号 | ASCII | #/#分割 | |
5 | 版本号 | ASCII |
服务端下发查询结果:
命令编码 | X | 命令编号 | 0x01 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 是否需要升级 | ASCII | 1byte | S-需要,F-不需要 |
2 | 升级包总块数 | ASCII | 5byte | 不需要升级为0 |
3 | 升级包总字节数 | ASCII | 6byte | 不需要升级为0 |
4 | 升级包名称 | ASCII | 10byte | 不需要升级为0 |
5 | MD5值 | ASCII | 32byte | 整个升级包做校验,大写 |
6 | IMEI值 | ASCII | 15byte | 设备的IMEI值 |
查询:
$ 0098 X / 868619040039495 #/# GZJ_DJ_4G #/# fH3fehhlYYpLUnQW4II87jLD3JJZTEkN #/# LONGSHANG_M25_4G #/# 0.2.2 <0x0D><0x0A>
升级应答:
$ 0078 X / S 00116 059112 0000000140 9875f44a93717d3fdd8943aa175bb562 868619040039495 <0x0D><0x0A>
不升级应答:
$ 0078 X / F 00000 000000 0000000000 00000000000000000000000000000000 868142041815052 <0x0D><0x0A>
远程升级-下载(DF_LARGE_FIRMWARE)
当模块询问远程升级-导引时需要升级,则模块主动通过该指令逐个下载升级包,升级包分块下载,每一块大小为512 字节,最后一块为实际剩余大小。
请求下载升级块:
命令编码 | Y | 命令编号 | 0x02 | |
数据方向 | 上行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | IMEI | ASCII | #/#分割 | |
2 | 升级包名称 | ASCII | #/#分割 | |
3 | 当前下载的块编号 | ASCII | #/#分割 | 块编号从1 开始,3 字节不足在前面补零 |
4 | 会话ID | ASCII | 6 字节长度,不足在前面补零,模块生成,服务器应答时下发模块上报的会话ID |
服务器下发升级块:
命令编码 | Y | 命令编号 | 0x02 | |
数据方向 | 下行 | |||
序号 | 参数名称 | 数据类型 | 长度或分割方式 | 备注 |
1 | 会话ID | ASCII | 6byte | 下发模块上报的会话ID |
2 | 升级包名称 | ASCII | 10byte | 没有查询到下载的内容则为全”0” |
3 | 当前块编号 | ASCII | 5byte | 不足3byte 在前面补0,没有查询到下载的内容则为0 |
4 | 当前块MD5 | ASCII | 32byte | 不足3 字节在前面补0,没有查询到下载的内容为全"0" |
5 | 升级块内容 | ASCII | 1-4096byte | 升级数据的base64 值,没有升级数据为空 |
查询第一个升级包:
$ 0054 Y / 868619040039495 #/# 0000000140 #/# 00001 #/ # 000001 <0x0D><0x0A>
应答查询第一个升级包:
$ 0746 Y / 000001 0000000140 00001 a1f6b2366630a54fdc35245322178c8d ILAAIA2JAQhNBQEITwUBCFEFAQhTBQEIVQUBCAAAAAAAAAAAAAAAAAAAAABXBQEIWQUBCAAA AAC3wwEImV8BCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCGEyAQgniQEIJ4kBCCeJ AQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIny8BCCeJAQgniQEIJ4kBCCeJAQ gniQEIo0EBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgbYgEI8WIBCA9kAQg3MgEIJ4kBCCeJAQ gniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQiNZQEIjWYBCCeJAQgniQEIJ4kBCCeJAQgn iQEIJ4kBCN/4DNAM8Ej9AEgAR/sCAQggsAAgCLWOSAB4OLmNoACQjqORopOhikgM8DL+iEmYoAz wHv6ZoqKhpqAM8Bn+qkqqSaugDPAU/qxKrUmtoAzwD/696AhArqKuobCgDPAIvnG2s0gBaLNKAfT gYRFDAWC/80CP/ucQtQLw+f0C8Cr+A/Du+KxIACHA+KARASLA+KQhwPiMEalKwvi8EcD4lBEQvfC1h bAK8Hz9CfC6+gzww/gHRqKgDPDb/U/0AHaqSM3pAQYJIAAlAJADJM3pA1Q= <0x0D><0x0A>
查询最后一个升级包:
$ 0054 Y / 868619040039495 #/# 0000000140 #/# 00116 #/# 000116 <0x0D><0x0A>
应答查询最后一个升级包:
$ 0372 Y / 000116 0000000140 1161ec029851e8a8060322d65f91a3e8 6d8Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8AAAAAROYBCAAAACC8IwAASM0BCOj mAQi8IwAgZIwAABTPAQgRhKJKBAAKHwECAwQGBwgJAiU5ODc2ABYcMC5xYS10Y3AuaWRvbmdq dW4uY29tAlABGYgiOCo1iAsodWSIAREev3wBCNcEAf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/w H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8BJgY/4OUBCIBFAgQGCC0BAgME BAVUBgcICQ= <0x0D><0x0A>
升级完之后需要发确认心跳包:
$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ <0x0D><0x0A>