Files
Radar/data_formats_explanation.md
userName 5e2dfc8ac8 Radar
2025-12-15 09:19:47 +08:00

92 lines
2.3 KiB
Markdown
Raw Permalink 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. 雷达数据格式 (HBR01)
### 格式特征
-`HBR01:` 开头
- 后跟8个用逗号分隔的数值字段
- 每行一条数据记录
### 数据字段说明
```
HBR01:presence,heart_rate,breath_rate,motion,rssi,heartbeat_waveform,breathing_waveform,raw_signal
```
### 字段含义
1. `presence` - 人员存在状态 (0=无人, 1=有人)
2. `heart_rate` - 心率 (bpm)
3. `breath_rate` - 呼吸率 (bpm)
4. `motion` - 运动状态 (0=静止, 1=运动)
5. `rssi` - 信号强度
6. `heartbeat_waveform` - 心跳波形数据
7. `breathing_waveform` - 呼吸波形数据
8. `raw_signal` - 原始信号数据
### 示例数据
```
HBR01:1,72,16,0,-45,120,45,-25
HBR01:0,0,0,0,-50,0,0,10
```
### 处理方式
在ESP32代码中通过 `parseSensorLine()` 函数处理,按行读取并解析逗号分隔的数值。
## 2. JSON数据格式
### 格式特征
- 以花括号 `{` 开始,`}` 结束
- 符合标准JSON格式
- 可能因长度超过BLE MTU而需要分包传输
### 示例数据
```json
{
"type": "radarData",
"deviceId": 1001,
"timestamp": 1640995200000,
"presence": 1,
"heartRate": 72.5,
"breathRate": 16.2,
"motion": 0,
"rssi": -45,
"heartbeatWaveform": 120,
"breathingWaveform": 45,
"rawSignal": -25
}
```
### 分包传输特点
- 每包最大20字节BLE限制
- 需要通过匹配花括号来重组完整JSON
- 可能出现一个完整JSON被分成多个BLE包的情况
### 接收处理方式
使用JavaScript代码中的 `processChunk()` 函数处理:
1. 将接收到的数据片段追加到缓冲区
2. 通过计数花括号来识别完整的JSON对象
3. 提取完整JSON并解析
4. 清理缓冲区中已处理的部分
## 3. 两种格式的主要区别
| 特性 | 雷达数据 (HBR01) | JSON数据 |
|------|------------------|----------|
| 格式标识 | HBR01:开头 | 花括号{}包围 |
| 数据结构 | 固定8个数值字段 | 灵活的键值对 |
| 分隔符 | 逗号分隔 | JSON标准格式 |
| 分包处理 | 按行处理 | 按花括号匹配 |
| 解析方式 | 数值转换 | JSON解析 |
## 4. 处理建议
### 雷达数据处理
- 按行读取处理
- 验证以"HBR01:"开头
- 按逗号分割提取8个字段
- 进行数值有效性检查
### JSON数据处理
- 使用缓冲区累积数据
- 通过花括号匹配识别完整对象
- 使用JSON解析库处理
- 注意缓冲区大小限制和清理