Files
Rader_Success_5/.trae/documents/plan_20260203_063543.md

2.2 KiB
Raw Blame History

修改蓝牙发送雷达数据模式

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 保持命令处理逻辑

  • 保留 processStartContinuousSendprocessStopContinuousSend 函数
  • 确保小程序可以正常控制发送模式和间隔

3. 代码修改点

3.1 radar_manager.h

  • 添加 LastSentData 结构体定义
  • 在全局变量声明中添加 lastSentData 和相关变量

3.2 radar_manager.cpp

  • 初始化 lastSentData 变量
  • 实现 isDataChanged() 函数
  • 重写 bleSendTask 任务函数
  • 确保数据发送格式与现有代码保持一致

4. 技术要点

  • 使用阈值检测避免微小数据波动导致的频繁发送
  • 保持定时检测机制,确保数据及时性
  • 维持与现有 BLE API 的兼容性
  • 按照现有代码的注释格式编写新代码
  • 确保内存使用合理,避免内存泄漏

5. 预期效果

  • 减少不必要的蓝牙数据传输
  • 只在数据发生实际变化时发送
  • 保持数据的实时性和准确性
  • 与现有小程序控制逻辑完全兼容