跳到主要内容

错误与测试向量

处理分类

指令结果码描述设备行为;下表描述服务端解析器或业务流程在哪一步停止。

分类含义默认处理
FRAME_INCOMPLETE缺少起始或结束字符拒绝并保留传输证据
FIELD_COUNT_INVALID字段数量与指令/配置不符进入业务处理前拒绝
FIELD_VALUE_INVALID类型、大小写、长度或范围错误拒绝并返回脱敏字段位置
INTEGRITY_FAILEDCRC 不匹配拒绝;不能执行指令
VERSION_UNSUPPORTED指令或字段结构不属于当前机柜配置隔离并发起配置复核
DUPLICATE_OBSERVED消息/订单/归还已接受返回幂等的历史结果
STATE_CONFLICT帧有效,但与已接受的租借/支付/归还状态冲突进入对账
DEPENDENCY_UNAVAILABLE设备、支付或服务商证据不可用保留 UNKNOWN,按策略重试

设备结果码

  • 租借/弹出 0/1/2/100/110:见租借与归还
  • 归还 0/1/2 和异常归还 2/4:见 RS/FR
  • 维护接受 0/1:见设备管理
  • OTA 1/10 进度/成功、>=200 失败:见 OT
  • 槽位/电池健康 0/1/2/3/201/202/203:见 AE

不能脱离指令上下文,把不同指令中的相同数字解释成同一种结果。

可下载测试向量

测试向量 JSON包含:

  • 标准 CRC16/MODBUS 检查值 123456789 -> 4B37
  • 有效的 CQCNACBWBRFBRS 报文。
  • 展示测试 PW 拼接位置的完整 CRC 输入字符串。
  • 错误 CRC、缺结束符、小写指令和重复订单等反向用例。

测试向量统一使用仅用于测试的 PW DEMO00。禁止在公开文件或浏览器包中把它替换成生产 PW。

本地校验

import {verifyFrame} from './protocol-v151.mjs';

const result = verifyFrame('{CQ,17000000,0,6F75}', 'DEMO00');
if (!result.valid) throw new Error('CRC verification failed');

协议验收必须同时包含解析器测试和物理 UAT。解析器只能证明报文格式正确,不能证明锁已打开、充电宝已取走、支付成功或归还已物理到位。