# 数据格式说明 ## 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解析库处理 - 注意缓冲区大小限制和清理