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