SDK_APP/RAW_DATA_DISPLAY_GUIDE.md

3.8 KiB
Raw Blame History

蓝牙原始数据显示测试指南

🎯 功能说明

现在应用已经支持立即显示蓝牙接收到的原始数据,无需等待信号处理完成。

数据流处理顺序

  1. 蓝牙数据接收 → 立即解析
  2. 原始数据显示 → 立即画图(新增)
  3. 信号处理 → 后台处理
  4. 处理后数据显示 → 可选显示

📱 测试步骤

第一步:连接蓝牙设备

  1. 点击"连接蓝牙"按钮
  2. 等待扫描完成
  3. 选择你的ECG设备
  4. 等待连接成功

第二步:验证原始数据显示

  1. 观察状态信息

    蓝牙状态: 设备已连接
    蓝牙状态: 服务发现成功
    蓝牙状态: 数据通道已建立,开始接收数据
    
  2. 检查数据接收日志

    接收到蓝牙数据: X 字节
    解析出 X 个数据包
    立即发送原始数据到图表,处理 X 个数据包
    发送原始数据到通道 X数据长度: X
    显示原始数据到图表,通道: X数据长度: X
    
  3. 观察图表显示

    • ECG图表立即变为可见
    • 原始波形立即开始显示
    • 双视图同步更新10秒节奏视图 + 2.5秒波形视图)

第三步:验证实时性

  1. 数据接收延迟:应该几乎无延迟
  2. 图表更新频率:与蓝牙数据接收频率一致
  3. 波形连续性:原始数据应该连续显示

🔍 关键代码位置

1. 原始数据发送

// DataManager.kt - 第97行
sendRawDataToCharts(packets)

// DataManager.kt - 第177行
private fun sendRawDataToCharts(packets: List<SensorData>) {
    // 直接处理原始数据包,不进行通道映射
    for (packet in packets) {
        val channelData = packet.getChannelData()
        if (channelData != null) {
            for ((channelIndex, channel) in channelData.withIndex()) {
                // 立即发送原始数据到图表
                realTimeCallback?.onRawDataAvailable(channelIndex, channel)
            }
        }
    }
}

2. 原始数据显示

// MainActivity.kt - 第572行
override fun onRawDataAvailable(channelIndex: Int, rawData: List<Float>) {
    // 立即显示原始数据到图表
    binding.ecgChartContainer.visibility = View.VISIBLE
    binding.ecgRhythmView.updateData(rawData)
    binding.ecgWaveformView.updateData(rawData)
}

🎉 预期效果

连接成功时:

  • 蓝牙设备连接成功
  • 数据通道建立
  • 开始接收ECG数据

原始数据显示时:

  • ECG图表立即可见
  • 原始波形立即显示
  • 双视图同步更新
  • 无延迟实时显示

数据特点:

  • 原始性:未经任何滤波处理
  • 实时性:接收即显示
  • 连续性:数据流连续
  • 完整性:包含所有通道数据

⚠️ 注意事项

1. 数据格式

  • 支持的数据类型:所有已定义的数据类型
  • 通道数量:根据设备类型自动识别
  • 采样率:根据数据类型自动设置

2. 显示特点

  • 原始信号:包含噪声和基线漂移
  • 实时更新:与蓝牙数据接收同步
  • 多通道:支持多通道同时显示

3. 性能考虑

  • UI线程:原始数据显示在主线程
  • 内存使用:图表自动管理数据缓冲
  • 更新频率:与蓝牙数据接收频率一致

🔧 调试信息

关键日志

DataManager: 立即发送原始数据到图表,处理 X 个数据包
DataManager: 发送原始数据到通道 X数据长度: X
MainActivity: 显示原始数据到图表,通道: X数据长度: X

状态检查

  • 蓝牙连接状态
  • 数据接收频率
  • 图表更新状态
  • 通道数据完整性

现在你的应用可以立即显示蓝牙接收到的原始数据了!连接设备后就能看到实时波形。🚀