Files
Wx_BLWConfigTools_V02_Prod/Document/W13无卡取电设备 - 蓝牙通讯协议.md
2026-01-13 15:37:51 +08:00

155 lines
7.8 KiB
Markdown
Raw 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 | 整包CRC16校验 |
| 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: 硬件版本号 | 返回版本信息 |
### 3.2 设置无卡取电条件信息命令1
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x08 | P0: 有无逻辑标记<br>P1: 条件组<br>P2: 条件序号<br>P3~P4: 条件判定时间<br>P5: 条件判定时间单位<br>P6~P9: 端口1~10状态<br>P10: 触发阈值<br>P11~P12: 条件超时时间<br>P13: 条件超时时间单位 | 设置无卡取电条件 |
| MCU→PC | 0x08 | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 |
### 3.3 设置无卡取电条件信息命令2
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x09 | P0: 端口设备类型<br>P1: 端口设备地址<br>P2~P3: 端口设备回路<br>P4: 有人->无人阈值<br>P5: 虚拟端口号<br>P6: 回路是否启用检测统计<br>P7~P8: 回路检测统计时间<br>P9: 回路检测统计时间单位<br>P10: 无人->有人阈值 | 设置无卡取电条件 |
| 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 测试按键功能
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x13 | P0: 0x01(按键点按控制)<br>P1: bit0(按键1触发), bit1(按键2触发), bit2(按键3触发), bit3(按键4触发), bit4(按键5触发), bit5(按键6触发) | 测试按键功能(对应按键仅支持点按,不具备开关状态) |
| MCU→PC | 0x13 | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 |
### 3.8 设置门磁开关走廊灯、卫浴雷达开关卫浴灯事件
| 方向 | 命令字 | 参数 | 备注 |
|------|-------|------|------|
| PC→MCU | 0x16 | P0: 控制位bit0=门磁开关走廊灯事件bit1=卫浴灯开关事件)<br>门磁开关走廊灯事件:<br>P1: 事件触发延迟时间数值<br>P2: 时间单位1=秒2=分3=时)<br>P3: 事件持续时间数值<br>P4: 时间单位1=秒2=分3=时)<br>P5: 事件释放延迟时间数值<br>P6: 时间单位1=秒2=分3=时)<br>卫浴灯开关事件:<br>P7: 事件触发延迟时间数值<br>P8: 时间单位1=秒2=分3=时)<br>P9: 事件持续时间数值<br>P10: 时间单位1=秒2=分3=时)<br>P11: 事件释放延迟时间数值<br>P12: 时间单位1=秒2=分3=时) | 设置事件参数(用于控制门磁亮走廊灯、卫浴雷达亮卫浴灯等) |
| MCU→PC | 0x16 | P0: 0x01(参数正确) / 0x02(参数错误) | 返回设置结果 |
## 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 | 重新发送正确参数 |
| 命令不支持 | - | 检查命令字是否正确 |
| 通讯超时 | - | 重新发送命令 |
---