# W13无卡取电设备 - 蓝牙通讯协议 > 版本同步记录: > - 同步来源:Document/W13无卡取电设备 - 蓝牙通讯协议(1).pdf > - 同步日期:2026-01-12 > - 说明:依据PDF抽取与差异比对,更新命令与参数细节,使Markdown与PDF一致。 ## 1. 通讯方式 使用蓝牙BLE通讯 ## 2. 帧结构定义 ### 2.1 帧字段说明 | 字节范围 | 功能 | 长度(Bytes) | 取值范围(&H) | 备注 | |---------|------|-------------|---------|------| | B0~B1 | Head | 2 | 0xCC 0xC0 | 固定包头 | | B2~B3 | Len | 2 | 00~548 | 数据的总长度,包括包头和CRC校验,低地址在前 | | B4~B5 | CRC | 2 | 00~FF | 整包CRC16Modbus 校验 | | B6~B7 | Frame | 2 | 00~FF | 帧号 | | B8~B9 | FramNum | 2 | 00~FF | 帧总数 | | B10 | Frame_Type | 1 | 00~FF | 帧类型,命令字 | | B11~B1023 | PARA_0~1012 | Max 1013 | 00~FF | 参数,不同类型有不同的参数字(不定长) | ### 2.2 帧结构示意图 ```mermaid sequenceDiagram participant PC as 上位机 participant Device as 无卡取电设备 PC->>Device: 发送命令帧 Note over PC,Device: 帧结构:Head + Len + CRC + Frame + FramNum + Frame_Type + Parameters Device->>PC: 返回响应帧 Note over Device,PC: 帧结构:Head + Len + CRC + Frame + FramNum + Frame_Type + Response ``` ## 3. 详细命令列表 命令总览表(快速索引): | 序号 | 功能 | 方向 | 命令字 | 备注 | |------|------|------|--------|------| | 1 | 读版本号 | PC→MCU / MCU→PC | 0x01 | P0=0x00,请求;返回软件/硬件版本 | | 2 | 设置无卡取电条件信息 | PC→MCU / MCU→PC | 0x08 | 条件参数设置;返回P0=0x01/0x02 | | 3 | 设置无卡取电端口信息 | PC→MCU / MCU→PC | 0x09 | 端口配置;返回P0=0x01/0x02 | | 4 | OTA升级开始 | PC→MCU | 0x0B | P0=0x01,进入bootloader等待OTA | | 5 | 开启蓝牙打印 | PC→MCU / MCU→PC | 0x0C | 打印开关bit0..bit4;返回P0=0x01/0x02 | | 6 | 雷达状态获得 | PC→MCU / MCU→PC | 0x11 | 开/关读取;返回端口状态位与有人/无人 | | 7 | 测试按键功能 | PC→MCU / MCU→PC | 0x13 | 点按控制与状态返回 | | 8 | 事件设置(门磁/卫浴灯) | PC→MCU / MCU→PC | 0x16 | 控制位bit0/bit1,事件时序参数与单位 | ### 3.1 读版本号 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x01 | P0: 0x00 | 读取版本号命令 | | MCU→PC | 0x01 | P0: 软件版本号
P1: 硬件版本号 | 返回版本信息 | CC C0 0D 00 54 08 01 00 01 00 01 04 04 ### 3.2 设置无卡取电条件信息 PC -> MCU 命令字: 0x08 参数说明 (P0..P13): - P0: 有无人逻辑标记 - P1: 条件组号 - P2: 同一条件组内的条件序号 - P3~P4: 条件判定时间(16-bit,低地址在前) - P5: 条件判定时间单位 - P6~P10: 端口1~5 状态(共 5 个字节/项,按顺序;第1项为插卡状态,暂未使用) - P11~P12: 条件组超时时间(16-bit, 低地址在前) - P13: 条件组超时时间单位(取值:1=秒,2=分,3=时) 有无人逻辑标志取值: - 1: 无人至有人 - 2: 有人至无人 - 3: 短暂离开 - 4: 长时间离开 端口状态取值说明(每项): - 0: 不判断 - 1: 触发 - 2: 释放 - 3: 开至关 - 4: 关至开 注意:条件组超时时间必须大于或等于条件判定时间(P11~P12 >= P3~P4),否则设备应判定为参数错误。 MCU -> PC 命令字: 0x08(响应) - P0: 返回码:0x01 表示参数正确;0x02 表示参数错误 ### 3.3 设置无卡取电端口信息 PC -> MCU 命令字: 0x09 参数说明 (P0..P10): - P0: 端口设备类型 - P1: 端口设备地址(暂未使用,默认 1) - P2~P3: 端口设备回路(16-bit,低地址在前,取值 1..5) - P4: 有人->无人 阈值 - P5: 虚拟端口号(1..5,对应物理端口含义见下) - P6: 回路是否启用检测统计(0/1) - P7~P8: 回路检测统计时间(16-bit,低地址在前) - P9: 回路检测统计时间单位(1=秒,2=分,3=时) - P10: 无人->有人 阈值 字段说明与取值: - 端口设备类型: - 插卡状态: 10 - 其他设备类型: 2(默认) - 端口地址:暂未使用,默认填写 1 - 端口设备回路(P2~P3):可取 1~5,含义如下: - 回路1: 插卡状态 - 回路2: 门磁状态 - 回路3: 洗手间状态 - 回路4: 卧室状态 - 回路5: 门口状态 - 虚拟端口号(P5):取值 1~5,对应物理端口含义同上(端口1=插卡,2=门磁,3=洗手间,4=卧室,5=门口) - 回路检测统计最大时间:8 小时(设备端限制) 注意: - 请确保统计时间与单位(P7~P9)不会超过设备支持的最大值(通常 8 小时);若超限设备可能返回参数错误。 MCU -> PC 命令字: 0x09(响应) - P0: 返回码:0x01 表示参数正确;0x02 表示参数错误 ### 3.4 OTA升级开始 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x0B | P0: 0x01(开始升级) | 启动OTA升级,设备进入 bootloader,等待 OTA 升级 APP 连接 | ### 3.5 开启蓝牙打印 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x0C | P0: bit0(系统调试信息打印开关)
bit1(设备驱动层打印调试信息打印开关)
bit2(蓝牙信息打印开关)
bit3(PC通讯打印开关)
bit4(临时调试信息打印开关) | 设置打印开关 | | MCU→PC | 0x0C | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 | ### 3.6 雷达状态获得 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x11 | P0: 0x01(开启读取端口状态) / 0x02(关闭读取) | 请求雷达状态;端口状态值:0=释放,1=触发 | | MCU→PC | 0x11 | P0: 有效端口数量
P1: 有无人状态(0x01=有人,0x02=无人)
P2: bit0(端口1状态), bit1(端口2状态), bit2(端口3状态), bit3(端口4状态)...(0=释放,1=触发) | 返回雷达状态 | 补充说明: - 端口状态值:0=释放,1=触发。 - 典型端口位含义:bit0=端口1(门磁),bit1=端口2(洗手间),bit2=端口3(卧室),bit3=端口4(门口),后续端口依次类推。 ### 3.7 测试按键功能 ### 3.7 测试按键功能 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x13 | P0: 0x01(按键点按控制)
P1: 按键位掩码(位对应按键见下表) | 请求模拟按键点按;P1 为按键位掩码,可同时置位多个按键以并行触发对应动作 | | MCU→PC | 0x13 | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 | 按键映射说明: - 按键1 (bit0): 无人→有人 - 按键2 (bit1): 有人→无人 - 按键3 (bit2): 门磁 开 - 按键4 (bit3): 门磁 关 - 按键5 (bit4): 洗手间雷达 开 - 按键6 (bit5): 洗手间雷达 关 组包示例与说明: - 要模拟“按键3(门磁 开)”点按,PC 发送命令帧 Frame_Type=0x13,参数 P0=0x01,P1=0x04(bit2 = 1)。 - 要同时触发按键1与按键5,P1 应为 (1<<0) | (1<<4) = 0x11。 - 设备在收到该命令后按位解析 P1,并对被置位的按键逐一触发对应的内部动作或上报状态变化。若参数格式或范围非法,设备返回 MCU→PC 的 P0=0x02 表示参数错误。 注意:这些测试按键仅用于模拟点按触发动作,不会改变设备的持续开/关逻辑(若需设置长期状态,请使用对应的控制命令)。 ### 3.8 设置门磁开廊灯事件,卫浴雷达开卫浴灯事件触发、释放参数 | 方向 | 命令字 | 参数 | 备注 | |------|-------|------|------| | PC→MCU | 0x16 | P0: 控制位
  bit0: 设置门磁开关廊灯事件
  bit1: 设置卫浴灯开关事件

门磁开关廊灯事件:
P1: 事件触发延迟时间数值
P2: 时间单位,1=秒 2=分 3=时
P3: 事件释放延迟时间
P4: 时间单位,1=秒 2=分 3=时

卫浴灯开关事件:
P5: 事件触发延迟时间数值
P6: 时间单位,1=秒 2=分 3=时
P7: 事件释放延迟时间
P8: 时间单位,1=秒 2=分 3=时 | 设置门磁与卫浴雷达的触发/释放时序参数 | | MCU→PC | 0x16 | P0:
  0x01: 参数正确
  0x02: 参数错误 | 返回设置结果 | ## 4. 命令交互流程图 ### 4.1 读版本号流程 ```mermaid flowchart TD A[上位机发送读版本号命令
Frame_Type=0x01, P0=0x00] --> B[设备接收命令] B --> C{命令解析正确?} C -->|是| D[设备准备版本信息] C -->|否| E[设备返回错误响应] D --> F[设备发送响应帧
Frame_Type=0x01, 包含软硬件版本号] E --> G[设备发送错误响应帧
Frame_Type=0x01, P0=0x02] F --> H[上位机接收版本信息] G --> I[上位机处理错误] ``` ### 4.2 设置无卡取电条件流程 ```mermaid flowchart TD A[上位机发送设置条件命令
Frame_Type=0x08/0x09] --> B[设备接收命令] B --> C{参数验证通过?} C -->|是| D[设备保存条件设置] C -->|否| E[设备标记参数错误] D --> F[设备发送成功响应
P0=0x01] E --> G[设备发送失败响应
P0=0x02] F --> H[上位机确认设置成功] G --> I[上位机重新发送或处理错误] ``` ## 5. 数据传输流程 ```mermaid sequenceDiagram participant PC as 上位机 participant BLE as 蓝牙模块 participant Device as 设备主控 PC->>BLE: 发送BLE数据 BLE->>Device: 转发数据帧 Device->>BLE: 处理并返回响应 BLE->>PC: 转发响应帧 ``` ## 6. 异常处理 | 错误类型 | 错误码 | 处理方式 | |---------|-------|---------| | 参数错误 | 0x02 | 重新发送正确参数 | | 命令不支持 | - | 检查命令字是否正确 | | 通讯超时 | - | 重新发送命令 | ---