1、基础通信协议框架
2、命令的定义
各数据单位定义:
3、设备上传
3.0.1、设备心跳包(01 指令)
3.0.2、设备注册包(20 指令)
3.0.3、设备获取服务器时间(22 指令)
3.1、设备心跳包(21 指令)
3.2、刷卡操作(02 指令)
3.3、结算消费信息上传(03 指令)
3.4.1、充电端口订单确认(04 指令)
3.4.2、端口充电时功率心跳包(06 指令)
3.4.3、分机测试模式专用(09 指令)(服务器无需处理)
3.4.4、分机设置主机模块服务器地址(0A 指令)(服务器无需处理)
**4、服务器下发 **
4.1、查询设备联网状态(81 指令)
4.2、服务器开始、停止充电操作(82 指令)
4.2.1、服务器修改充电时长/电量(8a 指令)
4.3.1、设置运行参数 1.1(83 指令)
4.3.2、设置运行参数 1.2(84 指令)
4.4.1、设置最大充电时长、最大充电功率(85 指令)
4.4.2、设置用户卡参数(86 指令)
4.4.3、复位重启设备(87 指令)
4.4.4、存储器清零(88 指令)
4.4.5、播放语音(89 指令)
4.4.6、设置设备的工作模式(8D 指令)
4.8.1、设备固件升级(E0 指令)(参考 01 指令中的设备类型表)
4.8.2、设备固件升级(F8 指令)
4.9.1、服务器查询当前设备参数(90、91、92、93、94 指令)
4.9.2、服务器读取EEPROM 的数据(8B 指令)
4.9.3、服务器写入EEPROM 的数据(8C 指令)
4.9.4、服务器修改二维码地址(8E 指令)
《一套免费开源充电桩物联网系统,是可以立马拿去商用的!》
基础通信协议框架
注 1 、 为了减少包头和数据内容重叠概率,采用 3 字节包头, 为 DNY
注 2 、 长度=物理 ID+消息 ID+命令+数据(n) +校验(2),每包最多 256 字节
注 3 、 为了保证每条命令传输的正确性,采用 2 字节无符号累加和校验,校验从包头到数据的内容
注 4 、 此协议无其它注释情况下,均默认采用“小端模式 ”
注 5 、 无特别注释下,均默认每条命令至多重新发送 1 次,故需加入无应答 、重发机制,应答超时为 15 秒
注 6 、 服务器和设备之间的通信,数据可能会被分包发送,所以服务器端要做粘包分包处理。
注 7 、 服务器发给同一台设备时,每条命令之间必须有 0.5 秒以上的延时
命令的定义
注 1 、 为了防止命令重复,加入消息 ID,每条命令的消息 ID 必须不同,但重发的命令的消息 ID 必须相同。
注 2 、 为了防止命令错误,应答时的消息 ID,必须和发送方的消息 ID 保持一致
注 3 、 为了区分各个功能,加入命令,最大支持 255 条命令
注 4 、 设备物理 ID 和设备上的二维码中的一致,无重复,不丢失
各数据单位定义:
1 、 所有金额以“分 ”为单位;
2 、 所有日期以国际通用时间戳为准,例如 1519865912 则表示北京时间 2018/3/1 8:58:32;
3 、 所有时长(相对时间) 以“秒“ 为单位;
4 、 电压以 0.1V 为单位,例如 2212,则表示是 221.2V;
5 、 所有功率以“0.1W“ 为单位,例如数据是 2342, 则表示是 234.2W;
6 、 所有耗电量以“0.01 度“ 为单位,例如数据是 135, 则表示是 1.35 度;
7 、温度以 1 摄氏度为单位,温度数值需要减 65 才是准确数值,(0 是无温度传感器, 65 是 0 度)
设备上传
3.0.1、设备心跳包(01 指令)
这是老版本指令, 和 20 、21 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。
设备发送:
如:44 4E 59 1D 00 3B 37 AB 04 B9 00 01 7E 00 8C 08 02 00 03 00 00 E4 00 00 00 3B 02 29 07 02 20 00 6D 05
服务器应答:
如:44 4E 59 0A 00 3B 37 AB 04 B9 00 01 00 D0 02
注 1 、 应答=0 成功,其它值错误
注 2 、 固件版本:见 20 指令中的描述
注 3 、 电压:见 21 指令中的描述
注 4 、 端口数量:见 21 指令中的描述
注 5 、 各端口状态:见 21 指令中的描述
注 6 、 各端口峰值功率:开始充电后出现的峰值功率,和“端口数量 ”匹配,如端口数量是 16,则“各端口峰值功率 ”为 32 字节;
注 7 、 各端口当前功率:发送心跳包时当前采集到的功率;2 个字节表示此端口当前输出的功率,和“端口数量 ”匹配,如端口数量是 16,则“各端口当前功率 ”为 32 字节;
注 8 、 虚拟 ID:见 20 指令中的描述
注 9 、 信号强度:见 21 指令中的描述
注 10 、当前环境温度:见 21 指令中的描述
注 11 、工作模式:见 20 指令中的描述
注 12 、设备类型:
注 13 、此为心跳包, 间隔时间默认为 3 分钟,方便服务器管理 SocketIP
注 14 、设备如 2 次收不到服务器应答,则进入离线状态
注 12 、设备类型:
3.0.2、设备注册包(20 指令)
这是新版本指令, 和 01 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。
设备发送:
如:44 4E 59 13 00 3B 37 AB 04 B9 00 20 7E 00 02 14 21 00 00 00 E4 00 91 04
服务器应答:
如:44 4E 59 0A 00 3B 37 AB 04 B9 00 20 00 EF 02
注 1 、 此命令在设备每次上电后发送,如果服务器无应答则每隔状态心跳包时间(默认 3 分钟)发送一次,如服务器有应答则不再发送。
注 2 、 如以上信息任何一个字段有变动,设备必须重新执行发送流程
注 3 、 固件版本,如 100 则表示 V1.00 版本
注 4 、 端口数量:表示设备总共有多少个端口
注 5 、 虚拟 ID:需要内部组网的设备的本地地址,如 485 、 LORA 系列,如不需组网的设备,默认为 00
注 6 、 设备类型:见 01 指令中的设备类型表
注 7 、 工作模式:00=联网,01=刷卡,仅适用于 AP262 、AP360 机型
注 8 、 电源板版本号:电源板的固件版本号,如没有电源板的机型则为 0
3.0.3、设备获取服务器时间(22 指令)
设备发送:
如:44 4E 59 09 00 3B 37 AB 04 B9 00 22 F0 02
服务器应答:
如:44 4E 59 0D 00 3B 37 AB 04 B9 00 22 09 0E A9 5F 13 04
注 1 、 此命令设备每次上电后就会发送,直至服务器应答后就停止发送 。如服务器无应答,则每隔 3 分钟发送一次请求。
注 2 、 每 12 小时从服务器获取一次时间,如服务器不应答则每隔 3 分钟发送一次请求。
3.1、设备心跳包(21 指令)
这是新版本指令, 和 01 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。
设备发送:
如:44 4E 59 10 00 3B 37 AB 04 01 00 21 98 08 02 00 00 09 05 EE 02
服务器应答:
如:44 4E 59 0A 00 3B 37 AB 04 01 00 21 00 38 02
注 1 、 应答=0 成功,其它值错误
注 2 、 电压:设备的当前电压(心跳包期间的任意一个时间点的电压)
注 3 、 端口数量:表示设备总共有多少个端口,和后面的“端口状态 ”配套
注 4 、 各端口状态:一个字节表示一个端口,和“端口数量 ”匹配,如端口数量是 16,则“各端口状态 ”为 16 字节; 每个字节表示的意思,0=空闲,1=充电中,2=有充电器但未充电(用户未启动充电), 3=有充电器但未充电(已充满电), 4=该路无法计量,5=浮充,6=存储器损坏,7=插座弹片卡住故障,8=接触不良或保险丝烧断故障,9=短路,0x0A=霍尔开关损坏( 即插入检测传感器)。0x0B=( 预检-继电器坏或保险丝断), 0x0C=(预检-继电器粘连), 0x0D=(预检-负载短路)。
注 5 、 信号强度:仅适合能获取信号强度的机型 。00 则为有线组网或无信号强度功能。
注 6 、 当前环境温度:表示当前设备内的温度,可能和真正的当前环境温度有一定的误差,如 00 则表示无此功能
注 7 、 此为心跳包, 间隔时间默认为 3 分钟,方便服务器管理 SocketIP
注 8 、 设备如 2 次收不到服务器应答,则进入离线状态
3.2、刷卡操作(02 指令)
设备发送:
如:44 4E 59 11 00 3B 37 AB 04 01 00 02 7A 8D 05 DD 00 01 00 00 0A 04
服务器应答:
如:44 4E 59 14 00 3B 37 AB 04 01 00 02 7A 8D 05 DD 00 00 10 27 00 00 01 44 04
注 1 、 新/旧卡: =0(旧卡), =1(新卡),通知服务器此卡为全新卡片 。设备先使用用户卡密码读卡,如果读取成功,则为旧卡;失败则尝试使用新卡密码读取,如果读取成功,则为新卡;如果都错误,则无任何反应;=2(余额卡), 说明此卡为刷卡设备使用的余额卡,此功能为把原来的刷卡设备转为联网设备使用
注 2 、 余额/有效期:分为 2 种,其一金额,其二时间戳 。卡片“余额/有效期“ 的具体使用情况,需看设备处于哪种费率模式(计时计量计次为余额,包月为有效期)
注 3 、 账户状态:=00 正常(无语音), =01 未注册(语音“未注册卡”),=02 请绑卡(语音“请再次刷卡”),=03 请解卡(语音“请再次刷卡”), =04 包月用户重复刷卡(语音“请勿重复充电”),=05 包月用户已超限制次数(语音“超出限额次数”),=06 余额不足(语音“余额不足”), =07 包月用户已过有效期(语音“ 已过有效期”) , =08 端口故障(语音“端口故障”), =09 清除余额卡内金额且把联网卡扇区密码改为用 户卡(语音“请再次刷卡”), =0A 包月用户已超限制时长(语音“超出限额时长”) ,=0B 请勿跨公众号(语音“请勿跨公众号使用”), =0C 此设备未注册(语音“此设备未注册”) ,=0D 请购买包月(语音“请购买包月”) ,=0E 跨区充电,余额不足(语音“跨区充电,余额不足”) , =0F 包月设备,无法使用(语音“包月设备,无法使用”) ,=10 包月设备,跨区无法使用(语音“包月设备,跨区无法使用”) ,=11 临时设备,无法使用(语音“ 临时设备,无法使用”) ,=12 临时设备,跨区无法使用(语音“ 临时设备,跨区无法使用”);涂黄部分仅适用于 AP262 、AP360 机型
注 4 、 费率模式:=0 计时模式,=1 包月模式,=2 计量,=3 计次 。用于指示设备如何理解“余额/有效期 ”中的数据
注 5 、 端口号:=0xFF 则表示仅查询余额,服务器应答时应和设备发送的保持一致 。不是 0xFF 则为刷卡充电请求。
注 6 、 设备业务流程:先判断“账户状态”,如正常则判断“端口号”,如是查询余额则根据费率模式报出余额或有效期,如“端口号”是充电命令则不做任何动作,等待服务器下一条的充电操作请求。
注 7 、 服务器端一般遵循如下原则:新卡+未绑定用户=1(未注册卡), 新卡+ 已绑定用户=2(请绑卡), 旧卡+未绑定用户=3(请解卡), 旧卡+ 已绑定用户=0(正常)。如不考虑离线刷卡充电,则不要使用“请绑卡和请解卡”。
3.3、结算消费信息上传(03 指令)
设备发送:
如:44 4E 59 28 00 3B 37 AB 04 01 00 03 10 0E E8 03 30 00 01 01 00 00 00 00 01 20 19 09 01 18 00 00 13 00 30 38 01 02 03 04 05 E8 03 44 05
服务器应答:
如:44 4E 59 0A 00 3B 37 AB 04 01 00 03 00 1A 02
注 1 、 充电时长:整个充电过程的时长
注 2 、 最大功率:整个充电过程中出现的最大功率
注 3 、 耗电量:整个充电过程消耗的电量
注 4 、 在线/离线启动:=0 表示离线刷卡启动充电 ;=1 表示在线服务器指令启动;3=验证码启动(仅支持带按键和屏幕的机型)。
备注:
1 、主机都带有 RTC 功能,上电时默认为 1970 年 1 月 1 日 08:00:00(北京时间),每隔 12 小时从服务器校准一次时间
2 、年月日时分秒为 10 进制,卡号为 16 进制,验证码为 10 进制,设备号为 10 进制,端口号为 10 进制
3 、该订单编号规则仅适用于 AP262 、AP360 及将来的新款机型。
注 5 、 卡号/验证码:在线启动时则卡片 ID 为全 0,离线启动时根据“在线/离线启动”中的标志,内容不同,验证码功能仅适用于 AP350 和 AP360
系列机型。
注 6 、 停止原因:1(充满自停) 2(达到最大充电时间) 3(达到预设时间) 4(达到预设电量)5(用户拔出) 6(负载过大),7(服务器控制停止) 8 (动态过载) 9(功率过小) 0A(环境温度过高) 0B(端口温度过高) ** 0C(过流)0D(用户拔出 -1 ,可能是插座弹片卡住)0E(无功率停止,可能是接触不良或保险丝烧断故障),0F(预检 -继电器坏或保险丝断)**,注 :0A 仅适用于 AP262 、AP360; 0B 仅适用于 AP262.
注 7 、 第二最大功率:开始充电 5 分钟内出现的最大功率
注 8 、 验证码:物理 ID 、 当前时间戳(规整到分钟)、端口号进行 CRC32 校验,取 10 进制最后 6 位,有效时间正负 2 分钟。
typedef __packed struct
{
uint32_t phyid;//物理 ID
uint32_t tt;//RTC 时间戳
uint8_t num;//端口号
}calc_code_ch_t;//验证码充电结构体
check_code = CRC32Calculate(&set, sizeof(set));
check_code = check_code%1000000;//取 10 进制低 6 位
tt = tt-(tt%60);
注 9 、 此命令存到 EEPROM 中,必须要收到服务器应答才能删除,断电 2 秒后发送一次 。如没收到服务器应答则每隔 30 分钟发送一次给服务器,有应答后下一条则为 1 分钟后发送。
3.4.1、充电端口订单确认(04 指令)
这是老版本指令, 和 06 相对应,有 06 指令时无此命令(2019 年 6 月份后生产的机型已无此指令)
设备发送:
服务器应答:
注 1 、 此命令在开始充电后发送,如果服务器无应答则每隔心跳包时间发送一次,直至充电结束,如服务器有应答则不再发送。如果中间出现停电,重新来电后会再次发送。
注 2 、 此命令有可能在 82 命令的应答前发出,所以服务器端应做好相应处理。
注 3 、 在线/离线启动:参考 03 命令中的解释。
注 4 、 卡片 ID:参考 03 命令中的解释
注 5 、 充电时长:到当前为止, 已经充电多长时间
注 6 、 订单编号:参考 03 命令中的解释 。不同点:离线启动时,结束时间为当前时间戳(需主机带 RTC 功能)
3.4.2、端口充电时功率心跳包(06 指令)
这是新版本指令, 和 04 相对应,有 04 指令时无此命令
设备发送:
如:44 4E 59 32 00 3B 37 AB 04 0A 00 06 01 01 10 0E 30 00 01 E8 03 B0 04 20 03 E8 03 20 19 09 01 18 00 00 13 00 30 38 01 02 03 04 05 01 00 E8 03 98 08 C7 01 55 00 DA
08
服务器应答:无须应答
注 1 、 此命令设备开始充电后(82 命令应答后)每隔设 5 分钟发送 1 次(无重发机制), 充电结束后即停止发送;
注 2 、 端口号:当前充电的端口号 。注 :00 表示 1 号端口,01 表示 2 号端口
注 3 、 各端口状态:1=充电中, 5=浮充
注 4 、 充电时长:开始充电到当前为止, 已经充电多长时间
注 5 、 累计电量:开始充电到当前为止, 已经消耗的电量
注 6 、 在线/离线启动:=0 表示启动时,处于离线状态 ;=1 表示启动时,处于在线状态;3=验证码启动(仅支持带按键和屏幕的机型)
注 7 、 实时功率:心跳包发送时的当前功率
注 8 、 心跳包期间最大功率:心跳包期间出现过的最大功率
注 9 、 心跳包期间最小功率:心跳包期间出现过的最大功率
注 10 、心跳包期间平均功率:心跳包期间的平均功率
注 11 、订单编号:参考 03 命令中的解释。
注 12 、该时间段内消耗电量:此数据需除以 4800 后才是真实的电量。
注 13 、峰值功率:整个充电过程中出现过的最大功率,有些版本无此字段
注 14、 电压:设备的当前电压
注 15、 电流:设备的当前电流,可以计量芯片采集也可以通过计算得出,0.001A 为单位,1000 表示 1A 电流。
注 16、 环境温度:设备的当前环境温度,仅针对有此功能的机型
注 17、 端口温度:设备的当前充电端口的温度,仅针对有此功能的机型
3.4.3、分机测试模式专用(09 指令)(服务器无需处理,不会发送给服务器)
设备发送:
3.4.4、分机设置主机模块服务器地址(0A 指令)(服务器无需处理,不会发送给服务器)
设备发送:
服务器下发
4.1、查询设备联网状态(81 指令)
服务器发送:
如:44 4E 59 09 00 3B 37 AB 04 01 00 81 97 02
设备应答:无须应答
注 1、 此命令应用于注册网络后,通信过程中,服务器主动查询设备状态
注 2、 此命令会触发设备立即发送“注册包”20、“设备心跳包”01 和 21 指令
4.2、服务器开始、停止充电操作(82 指令)
服务器发送:
如:44 4E 59 26 00 3B 37 AB 04 02 00 82 00 64 01 00 00 01 01 00 00 12 34 56 78 12 34 56 78 12 34 56 78 12 34 56 78 80 70 88 13 F8 08
设备应答:
如:44 4E 59 1D 00 3B 37 AB 04 02 00 82 00 12 34 56 78 12 34 56 78 12 34 56 78 12 34 56 78 01 00 00 FE 06
注 1 、 费率模式:=0 计时,=1 包月,=2 计量,=3 计次 。包月 、计次默认充满自停,计时 、计量可手动设置时长和电量。
注 2 、 余额/有效期:当费率模式为计时 、计量 、计次时,数据为余额;当费率模式为包月时,数据为有效期(时间戳)
注 3 、 充电命令=0(停止充电),=1(开始充电)设备充电与否依据此字段
注 4 、 端口号:如 0 -15 则代表第 1 路-第 16 路,FF=设备智能选择端口(服务器下发);
注 5 、 充电时长 :告知设备的充电时长 。如是 0x0000 则说明是充满自停;其他数值则按照时长充电,且充满不会自停,并且不受设置的“最大充电时间 ”限制。
注 6 、 充电电量:告知设备的充电电量 。如是 0x0000 则说明是充满自停;其他数值则按照电量充电,且充满不会自停,但受设置的“最大充电时间 ”限制。
注 7 、 订单编号设备会保存, 当充电结束时通过结算消费信息返回给服务器,服务器端自行判断是否使用。
注 8 、 最大充电时长 、最大充电功率 :动态设置此参数,如果参数为 0 表示不修改 。作为 85 指令的补充,85 指令设置完后是保存在设备存储器中,上电的时候读入到内存中 。82 指令下发的是直接修改内存中参数。
注 9 、 二维码灯:0=打开,1=关闭 。此设置是针对下一次插头插入时是否点亮二维码背光灯,保存在内存中,断电重启后就会失效。
注 10 、应答:执行开始充电命令,=0 执行成功(启动或停止充电),=1 端口未插充电器(不执行),=2 端口状态和充电命令相同(不执行),=3 端口故障(执行),=4 无此端口号(不执行),=5 有多个待充端口(响应 FF 充电命令,不执行),=6 多路设备功率超标(不执行),7=存储器损坏,8=(预检-继电器坏或保险丝断),9=(预检-继电器粘连)(执行给充电),0x0A=(预检-负载短路)。
注 11 、待充端口:当应答=5 的时候,此数据才是有效的 。按照 bit 定义各待充端口状态,0=非待充,1=待充。
注 12 、设备业务流程:充电命令=1 如执行充电则报出余额/有效期 。充电命令=0 则停止充电,此时除了端口号会忽略其他数据,如执行停止充电命令,应答完毕后会一定时间内跟一条结算消费信息。
4.2.1、服务器修改充电时长/电量(8a 指令)
服务器发送:
如:44 4E 59 0D 00 3B 37 AB 04 02 00 8A 00 01 80 70 96 03
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 02 00 8A 00 A2 02
注 1 、 原充电模式不管是何种充电模式,收到此命令后将立即转为定时/定量充电
注 2 、 费率模式:=0 定时无充满自停,=1 定时带充满自停,=2 计量带充满自停。
注 3 、 充电时长/电量:根据费率模式中的数据判断是时长还是电量 。如该值小于设备已经运行的数值,设备将立即断电,03 结算指令中断电原因为 03(达到预设时间)或 04(达到预设电量)。另:费率模式=1 时如已经过了设备判断充满自停的时间,则充满自停会失效。
注 4 、 应答:0=成功,1=此端口未在充电,2=设置值小于现运行值,3=无此费率模式/无此端口号
4.3.1、设置运行参数 1.1( 83 指令)
服务器发送:
设备应答:
注 1 、 应答:0=成功,1=参数错误
注 2 、 用于设置设备的运行参数,跟业务逻辑无关
注 3 、 浮充百分比为 1 -100,如 15 代表”充电功率“ 的 15%
4.3.2、设置运行参数 1.2( 84 指令)
服务器发送:
设备应答:
注 1 、 应答:0=成功,1=参数错误
注 2 、 用于设置设备的运行参数,跟业务逻辑无关
注 3 、 动态过载应使用智能模糊判断,具体算法见另外文件说明, 因为某些充电器功率会突然增大,导致误断电,在 2021 年 6 月份之后, 已经关闭断电功能。
注 4 、 拔出干扰功率及时间:在单位时间内功率小于拔出干扰功率,则认为用户已经拔出了充电器,断电。
注 5 、 浮充识别第二次时间点:在此时长之前则用 83 指令中的浮充参数,之后则使用浮充第二次识别时间 。如:开始充电 10800 秒之内,则需要 1800 秒判断是否进入浮充;充电 10800 秒之后,则需要 300 秒判断是否进入浮充。
注 6 、 “ 判断最小功率时间点 ”内,峰值功率一直小于“最小功率”,则断电
注 7 、 第二最大功率时间点:设置记录第二最大功率的时长,会影响 03 指令中的“第二最大功率 ”
注 8 、 环境报警温度/端口报警温度:达到此温度则直接断电,需要 30 秒的判断时间 。从 2021 年 6 月份之后, 因为误断电的原因, 已经关闭断电功能。
注 9 、 打开/关闭判断用户拔出(光耦):此功能仅适用于带插入检测功能的 10/16 路设备,相当于 AP350 的 14561456 功能
注 10 、二维码灯:0=打开,1=关闭 。此设置成功后将会一直保存,断电重启后依然有效。
4.4.1、设置最大充电时长 、最大充电功率(85 指令)
服务器发送:
如:44 4E 59 0D 00 3B 37 AB 04 02 00 85 A0 8C 20 4E 3A 04
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 02 00 85 00 9D 02
注 1 、 应答:0=成功,1=设置参数超过设备极限值 。(双路 、 多路=2000W,大功率=3500W)
注 2 、 最大充电时间:充满自停和离线启动时,均受其约束 。如服务器下发充电时长,则不受其约束。
4.4.2、设置用户卡参数(86 指令)
服务器发送:
如:44 4E 59 16 00 3B 37 AB 04 02 00 86 00 18 53 71 25 01 70 FF FF FF FF FF FF 80 0A
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 02 00 86 00 9E 02
注 1 、 用户卡密码和新卡密码,均为 16 进制
注 2 、 应答:0=成功,1=参数错误
4.4.3、复位重启设备(87 指令)
服务器发送:
如:44 4E 59 09 00 3B 37 AB 04 01 00 87 9D 02
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 01 00 87 00 9E 02
注 1 、 此命令应用于服务器复位重启设备
注 2 、 设备会尽力应答服务器,但服务器仍有可能收不到
注 3 、 应答=0 ,收到复位命令
4.4.4、存储器清零(88 指令)
服务器发送:
如:44 4E 59 09 00 3B 37 AB 04 01 00 88 9E 02
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 01 00 88 00 9F 02
注 1 、 此命令应用于设备把存储器清零—— 除了物理 ID 、虚拟 ID 、升级指令不用清零,其他的数据全部清零。
注 2 、 应答=0 ,执行成功
4.4.5、播放语音(89 指令)
此命令为保留指令, 暂时不可用
服务器发送:
设备应答:
注 1 、 是否打断:0 表示不打断正在播放的语音,1 表示打断正在播放的语音,并马上播放本次语音。
注 2 、 语音长度:即后面语音组合的段数。
注 3 、 语音组合:即播放的语音组合。
注 4 、 应答:0 表示成功,1 表示失败。
4.4.6、设置设备的工作模式(8D 指令)
注: 由此功能的机型才会支持
如:44 4E 59 0A 00 3B 37 AB 04 01 00 8D 00 A4 02
设备应答:
如:44 4E 59 0A 00 3B 37 AB 04 01 00 8D 00 A4 02
注 1 、 工作模式:00=联网,01=刷卡
注 2 、 应答:0=执行成功,1=设备不支持切换,其他=失败
4.8.1、设备固件升级(E0 升级分机指令)(E1 升级电源板指令)(E2 主机统一升级)(参考 01 指令中的设备类型表)
服务器发送:
设备应答:
注 1 、 服务器直接发送第 1 包启动升级。
注 2 、 总包数,如一个固件为 640 字节,则总包数为 640/ 200 = 3.2 = 4
注 3 、 当前包,从 1 开始,为第一包 , 当前包等于总包数时, 固件发送完毕
注 4 、 应答:0=成功,可以发送下一包;其他=错误,重新发送设备请求的当前包
注 5 、 当前包:当前成功收到的数据包
服务器注意事项:鉴于我们的经验,服务器应做重发机制,如 30 秒未收到设备的应答,应重发当前包,可做 3 次重发。
4.8.2、设备固件升级(F8 指令)
这是老版本设备使用的升级指令
服务器发送:
设备应答:
注 1 、 总包数,如一个固件为 640 字节,则总包数为 640/ 256 = 2.5 = 3
注 2 、 当前包,从 1 开始,为第一包 , 当前包等于总包数时, 固件发送完毕
注 3 、 应答=0 成功,可以发送下一包;=1 错误,重新发送当前包
注 4 、 当前包:当前成功收到的数据包
注 5 、 如果 2 次重传,依然不成功,则需重新升级
注 6 、 当设备发 05 指令时,需要从第一包开始重发
4.9.1、服务器查询当前设备参数(90 、91 、92、93、94 指令)
服务器发送:
设备应答:
服务器发送:
设备应答:
服务器发送:
设备应答:
服务器发送:
设备应答:
服务器发送:
设备应答:
4.9.2、服务器读取 EEPROM 的数据(8B 指令)
服务器发送:
设备应答:
注 1 、 数据长度最大为 32
注 2 、 是否成功:0=成功,其他=失败
4.9.3、服务器写入 EEPROM 的数据(8C 指令)
服务器发送:
设备应答:
注 1 、 数据长度最大为 32,需要和 EEPROM 数据内容对应
注 2 、 是否成功:0=成功,其他=失败
4.9.4、服务器修改二维码地址(8E 指令)(最新固件才支持)
服务器发送:
设备应答:
注 1 、 主界面类型:0=主界面为端口状态显示,1=主界面为二维码显示。
注 2 、 保留:暂时没有用到的字节。
注 3 、 二维码数据:固定为 72 字节的 buff,实际二维码数据最大为 71 个字符,最后一个字节必需为 0x00,如二维码数据不足 71 字节必需使用 0x00 填充。
注 4 、 是否成功:0=成功,其他=失败