错误与测试向量
处理分类
指令结果码描述设备行为;下表描述服务端解析器或业务流程在哪一步停止。
| 分类 | 含义 | 默认处理 |
|---|---|---|
FRAME_INCOMPLETE | 缺少起始或结束字符 | 拒绝并保留传输证据 |
FIELD_COUNT_INVALID | 字段数量与指令/配置不符 | 进入业务处理前拒绝 |
FIELD_VALUE_INVALID | 类型、大小写、长度或范围错误 | 拒绝并返回脱敏字段位置 |
INTEGRITY_FAILED | CRC 不匹配 | 拒绝;不能执行指令 |
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。 - 有效的
CQ、CN、AC、BW、BR、FB和RS报文。 - 展示测试 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。解析器只能证明报文格式正确,不能证明锁已打开、充电宝已取走、支付成功或归还已物理到位。