优化雷达信号处理,添加心率和呼吸率平滑处理和异常值检测
This commit is contained in:
58
.trae/documents/plan_20260203_063543.md
Normal file
58
.trae/documents/plan_20260203_063543.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 修改蓝牙发送雷达数据模式
|
||||
|
||||
## 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. 预期效果
|
||||
- 减少不必要的蓝牙数据传输
|
||||
- 只在数据发生实际变化时发送
|
||||
- 保持数据的实时性和准确性
|
||||
- 与现有小程序控制逻辑完全兼容
|
||||
Reference in New Issue
Block a user