# 修改蓝牙发送雷达数据模式 ## 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. 预期效果 - 减少不必要的蓝牙数据传输 - 只在数据发生实际变化时发送 - 保持数据的实时性和准确性 - 与现有小程序控制逻辑完全兼容