Files
Wx_BLWConfigTools_V02_Prod/Document/W13无卡取电设备 - 蓝牙通讯协议.md

256 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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: 软件版本号<br>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(系统调试信息打印开关)<br>bit1(设备驱动层打印调试信息打印开关)<br>bit2(蓝牙信息打印开关)<br>bit3(PC通讯打印开关)<br>bit4(临时调试信息打印开关) | 设置打印开关 |
| MCU→PC | 0x0C | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 |
### 3.6 雷达状态获得
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x11 | P0: 0x01(开启读取端口状态) / 0x02(关闭读取) | 请求雷达状态端口状态值0=释放1=触发 |
| MCU→PC | 0x11 | P0: 有效端口数量<br>P1: 有无人状态0x01=有人0x02=无人)<br>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(按键点按控制)<br>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=0x01P1=0x04bit2 = 1
- 要同时触发按键1与按键5P1 应为 (1<<0) | (1<<4) = 0x11。
- 设备在收到该命令后按位解析 P1并对被置位的按键逐一触发对应的内部动作或上报状态变化。若参数格式或范围非法设备返回 MCU→PC 的 P0=0x02 表示参数错误。
注意:这些测试按键仅用于模拟点按触发动作,不会改变设备的持续开/关逻辑(若需设置长期状态,请使用对应的控制命令)。
### 3.8 设置门磁开廊灯事件,卫浴雷达开卫浴灯事件触发、释放参数
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x16 | P0: 控制位<br> &nbsp;&nbsp;bit0: 设置门磁开关廊灯事件<br> &nbsp;&nbsp;bit1: 设置卫浴灯开关事件<br><br>门磁开关廊灯事件:<br> P1: 事件触发延迟时间数值<br> P2: 时间单位1=秒 2=分 3=时<br> P3: 事件释放延迟时间<br> P4: 时间单位1=秒 2=分 3=时<br><br>卫浴灯开关事件:<br> P5: 事件触发延迟时间数值<br> P6: 时间单位1=秒 2=分 3=时<br> P7: 事件释放延迟时间<br> P8: 时间单位1=秒 2=分 3=时 | 设置门磁与卫浴雷达的触发/释放时序参数 |
| MCU→PC | 0x16 | P0:<br> &nbsp;&nbsp;0x01: 参数正确<br> &nbsp;&nbsp;0x02: 参数错误 | 返回设置结果 |
### 3.9 读取门磁/卫浴事件触发/释放参数
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x17 | P0: 0x01 (读取参数) | 请求设备返回门磁与卫浴雷达的触发/释放延时参数(低地址在前) |
| MCU→PC | 0x17 | P0~P1: 门磁事件触发延迟时间16-bit单位低地址在前<br>P2~P3: 门磁事件释放延迟时间16-bit低地址在前<br>P4~P5: 卫浴雷达事件触发延迟时间16-bit低地址在前<br>P6~P7: 卫浴雷达事件释放延迟时间16-bit低地址在前 | 设备返回各项时序参数,均为 16-bit 小端格式,单位为秒。 |
说明:
- 请求示例PC→MCUFrame_Type=0x17P0=0x01。
- 响应示例MCU→PCFrame_Type=0x17参数区域例如 P0~P7 = [0x0A,0x00, 0x14,0x00, 0x05,0x00, 0x08,0x00] 表示:门磁触发延时 10s门磁释放延时 20s卫浴触发 5s卫浴释放 8s均为小端
## 4. 命令交互流程图
### 4.1 读版本号流程
```mermaid
flowchart TD
A[上位机发送读版本号命令<br>Frame_Type=0x01, P0=0x00] --> B[设备接收命令]
B --> C{命令解析正确?}
C -->|是| D[设备准备版本信息]
C -->|否| E[设备返回错误响应]
D --> F[设备发送响应帧<br>Frame_Type=0x01, 包含软硬件版本号]
E --> G[设备发送错误响应帧<br>Frame_Type=0x01, P0=0x02]
F --> H[上位机接收版本信息]
G --> I[上位机处理错误]
```
### 4.2 设置无卡取电条件流程
```mermaid
flowchart TD
A[上位机发送设置条件命令<br>Frame_Type=0x08/0x09] --> B[设备接收命令]
B --> C{参数验证通过?}
C -->|是| D[设备保存条件设置]
C -->|否| E[设备标记参数错误]
D --> F[设备发送成功响应<br>P0=0x01]
E --> G[设备发送失败响应<br>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 | 重新发送正确参数 |
| 命令不支持 | - | 检查命令字是否正确 |
| 通讯超时 | - | 重新发送命令 |
---