SDK_APP/RAW_DATA_DISPLAY_GUIDE.md

133 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 蓝牙原始数据显示测试指南
## 🎯 功能说明
现在应用已经支持**立即显示蓝牙接收到的原始数据**,无需等待信号处理完成。
### 数据流处理顺序
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. 原始数据发送
```kotlin
// 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. 原始数据显示
```kotlin
// 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
```
### 状态检查
- 蓝牙连接状态
- 数据接收频率
- 图表更新状态
- 通道数据完整性
现在你的应用可以立即显示蓝牙接收到的原始数据了!连接设备后就能看到实时波形。🚀