Files
Rader_Success_5/.trae/documents/plan_20260203_063543.md

58 lines
2.2 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.
# 修改蓝牙发送雷达数据模式
## 1. 需求分析
- 修改蓝牙发送机制,实现基于数据变化的发送
- 当心率、呼吸、存在检测、体动状态、睡眠状态发生变化时才发送
- 根据小程序设定的时间间隔进行定时检测
- 如果检测到变化,立即更新数据
- 按设定间隔检测数据更新,有变化则发送全部数据
## 2. 实现方案
### 2.1 添加数据存储结构
-`radar_manager.h` 中添加 `LastSentData` 结构体,用于存储上一次发送的数据
- 包含需要检测变化的字段:心率、呼吸率、存在状态、运动状态、睡眠状态
### 2.2 修改全局变量
-`radar_manager.cpp` 中添加 `lastSentData` 全局变量
- 添加 `lastCheckTime` 变量用于记录上次检测时间
### 2.3 实现数据变化检测函数
- 添加 `isDataChanged()` 函数,比较当前数据与上次发送数据
- 实现阈值判断,避免微小波动导致频繁发送
### 2.4 重写 BLE 数据发送任务
- 修改 `bleSendTask` 任务,实现以下逻辑:
1. 定时检测数据变化(基于 `continuousSendInterval`
2. 检测到变化时立即发送数据
3. 发送后更新 `lastSentData` 为当前数据
4. 保持与现有命令处理的兼容性
### 2.5 保持命令处理逻辑
- 保留 `processStartContinuousSend``processStopContinuousSend` 函数
- 确保小程序可以正常控制发送模式和间隔
## 3. 代码修改点
### 3.1 radar_manager.h
- 添加 `LastSentData` 结构体定义
- 在全局变量声明中添加 `lastSentData` 和相关变量
### 3.2 radar_manager.cpp
- 初始化 `lastSentData` 变量
- 实现 `isDataChanged()` 函数
- 重写 `bleSendTask` 任务函数
- 确保数据发送格式与现有代码保持一致
## 4. 技术要点
- 使用阈值检测避免微小数据波动导致的频繁发送
- 保持定时检测机制,确保数据及时性
- 维持与现有 BLE API 的兼容性
- 按照现有代码的注释格式编写新代码
- 确保内存使用合理,避免内存泄漏
## 5. 预期效果
- 减少不必要的蓝牙数据传输
- 只在数据发生实际变化时发送
- 保持数据的实时性和准确性
- 与现有小程序控制逻辑完全兼容