Skip to content

错误码定义

本文档定义了蓝牙通信协议中所有的错误码及其含义。

错误码列表

应答包中通过错误码字段返回操作结果,以下是完整的错误码定义:

错误代码十六进制错误含义说明
00x00成功操作成功完成
10x01包格式错误数据包格式不符合协议规范
20x02密码错误提供的密码不正确
30x03网络中断网络连接已断开
40x04用户未登记用户不存在或未注册
50x05参数错误请求参数不合法或缺失必要参数
60x06需要鉴权操作需要先进行身份验证
70x07无权限用户没有执行该操作的权限
80x08应答超时等待应答超时
90x09权限校验错误权限验证失败
100x0A钥匙不存在指定的钥匙 ID 不存在
110x0B钥匙过期钥匙已超过有效期
120x0C钥匙数量已到上限无法添加更多钥匙
130x0D钥匙无效钥匙状态异常或已失效
140x0E钥匙已存在钥匙 ID 重复
150x0F用户已存在用户 ID 重复
160x10密码失效密码已过期或被禁用
170x11无效指令指令代码不存在或不支持
180x12门锁时间异常门锁系统时间不正确
190x13废弃的 NB 错误码已废弃,不再使用
200x14废弃的 NB 错误码已废弃,不再使用
210x15APP(手机)未联网移动设备无网络连接
220x16正在开锁中锁设备正处于开锁状态,请稍后
............
2550xFF异常,未知错误未分类的异常错误

错误码分类

成功状态(0x00)

json
{
  "code": 0,
  "message": "成功"
}

协议相关(0x01 - 0x05)

  • 0x01 - 包格式错误:检查数据包的包头、校验位等字段
  • 0x02 - 密码错误:验证提供的密码是否正确
  • 0x03 - 网络中断:检查设备网络连接状态
  • 0x04 - 用户未登记:确认用户是否已注册
  • 0x05 - 参数错误:检查请求参数的完整性和合法性

权限相关(0x06 - 0x09)

  • 0x06 - 需要鉴权:需要先调用身份验证接口
  • 0x07 - 无权限:当前用户角色无法执行此操作
  • 0x08 - 应答超时:增加超时时间或检查设备状态
  • 0x09 - 权限校验错误:检查签名计算是否正确

钥匙相关(0x0A - 0x0E)

  • 0x0A - 钥匙不存在:检查钥匙 ID 是否正确
  • 0x0B - 钥匙过期:检查钥匙的有效期设置
  • 0x0C - 钥匙数量已到上限:删除无用钥匙后再添加
  • 0x0D - 钥匙无效:检查钥匙状态和权限
  • 0x0E - 钥匙已存在:使用其他钥匙 ID 或先删除旧钥匙

用户和密码(0x0F - 0x10)

  • 0x0F - 用户已存在:使用其他用户 ID 或先删除旧用户
  • 0x10 - 密码失效:检查密码的有效期和状态

系统相关(0x11 - 0x16, 0xFF)

  • 0x11 - 无效指令:检查指令代码是否正确,固件是否支持
  • 0x12 - 门锁时间异常:使用校时指令同步时间
  • 0x15 - APP 未联网:检查移动设备网络连接
  • 0x16 - 正在开锁中:等待当前操作完成后重试
  • 0xFF - 未知错误:联系技术支持,提供完整日志

错误处理流程

常见错误处理

示例 1:包格式错误(0x01)

c
if (response.errorCode == 0x01) {
    // 检查包头是否为 0xEF01EE02
    // 检查 CRC 校验是否正确
    // 检查字段长度是否符合协议
    printf("包格式错误,请检查数据包结构\n");
}

示例 2:需要鉴权(0x06)

c
if (response.errorCode == 0x06) {
    // 先调用身份验证接口
    authenticate(userID, password);
    // 验证成功后重新发送请求
    sendRequest(command);
}

示例 3:钥匙过期(0x0B)

c
if (response.errorCode == 0x0B) {
    // 更新钥匙的有效期
    updateKeyExpireTime(keyID, newExpireTime);
    printf("钥匙已过期,请更新有效期\n");
}

调试建议

调试技巧

  1. 记录完整日志:保存请求和应答的原始数据包
  2. 检查时序:确认请求和应答的序号是否匹配
  3. 验证签名:打印 MD5 计算的源数据和结果
  4. 状态确认:定期查询设备状态,避免状态不一致

常见陷阱

  • 大小端序错误导致数值解析错误
  • 字符串未以 \0 结尾导致数据错误
  • CRC 校验范围不正确
  • 加密类型设置与实际数据不匹配

相关文档

鑫泓佳智能硬件通信协议文档