增加主机端0x9C与0x9D功能码
0x9C调整心率拟合公式 0x9D告知治疗阶段与疾病类型
This commit is contained in:
@ -29,6 +29,7 @@ To view a copy of this license, visit [https://creativecommons.org/licenses/by-n
|
||||
2.增加头戴设备部分功能码
|
||||
* V0.4: 2025.0729.1457 江鑫辉
|
||||
1.增加头戴设备功能控制指令
|
||||
2.增加主机端0x9C与0x9D功能码
|
||||
|
||||
---
|
||||
|
||||
@ -129,15 +130,17 @@ HEX: 5A 01 FF 40 00 64 00 00 00 93 9E FF 3F 93 9E FF 3F 93 9E FF 3F 7F 4B 00 00
|
||||
#### 5.1. 0x80~0x9f: 向头戴设备发送数据或指令
|
||||
|
||||
| 功能码 | 功能名称 | 数据段数据个数 | 每个数据的类型 | 备注 |
|
||||
| ------ | ------------------ | -------------- | -------------- | ---------------------------------------------------- |
|
||||
| ------ | ---------------------- | -------------- | -------------- | ---------------------------------------------------- |
|
||||
| 0x80 | 一个表示正常的编码 | 0 | \\ | 直接被头戴设备丢弃 |
|
||||
| 0x81 | 接收的信息出错 | 1 | uint8_t | 提示接收出现问题,不一定被处理 |
|
||||
| 0x90 | 启动配对流程 | 0 | \\ | 头戴设备接收此指令后清除设备ID等信息,并重新尝试配对 |
|
||||
| 0x91 | 告知设备ID | 1 | uint8_t | 告知设备ID |
|
||||
| 0x98 | 控制开启下位机功能 | 1 | uint16_t | 开启 FFT LPF HPF NOTCH 等功能 |
|
||||
| 0x99 | 控制关闭下位机功能 | 1 | uint16_t | 关闭 FFT LPF HPF NOTCH 等功能 |
|
||||
| 0x9A | 控制下位机灯光 | 1 | uint8_t | 控制LED灯 |
|
||||
| 0x9A | 控制下位机灯光 | 1 | uint8_t | 控制LED灯 可用于寻找设备 |
|
||||
| 0x9B | 控制播放音频与音量 | 2 | uint8_t | |
|
||||
| 0x9C | 修改下位机心率拟合系数 | 9 | int32_t | 微调心率计算结果 |
|
||||
| 0x9D | 告知治疗阶段与疾病类型 | 2 | uint8_t | 告知治疗阶段与疾病类型 |
|
||||
|
||||
### 5.2 功能码详解
|
||||
|
||||
@ -219,7 +222,7 @@ HEX: 5A 00 00 98 00 02 00 00 00 data1_L data1_H crc16_L crc16_H A5
|
||||
**data1参数值对应功能描述:**
|
||||
|
||||
| bit Num | 对应功能 | 参数值对应功能描述 |
|
||||
| ---------- | ------------- | ------------------ |
|
||||
| ---------- | -------------- | ------------------ |
|
||||
| MSB ==> 15 | 暂无 | |
|
||||
| 7~14 | 暂无 | |
|
||||
| 6 | EMG 带通滤波器 | NOTCH |
|
||||
@ -282,6 +285,113 @@ HEX: 5A 00 00 9B 00 02 00 00 00 audio_id volume crc16_L crc16_H A5
|
||||
| volume | 设置音量 | uint8_t | 0xFF | 不设置音量仅播放音频 |
|
||||
| crc16 | crc16校验值 | uint16_t | xx | \\ |
|
||||
|
||||
#### 5.2. 0x9C 微调心率计算结果
|
||||
|
||||
数据帧示例:
|
||||
|
||||
``` HEX
|
||||
HEX: 5A 00 00 9C 00 24 00 00 00 data1_LL data1_LH data1_HL data1_HH (data2_ * 4) (data3_ * 4) ... (data9_ * 4) crc16_L crc16_H A5
|
||||
```
|
||||
|
||||
| 参数名称 | 参数描述 | 参数类型 | 参数值 | 参数值对应功能描述 |
|
||||
| -------- | ------------------ | -------- | --------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| data_n | 对应下方公式的参数 | uint8_t | 0x00~0xFE | 接收到的9个数据会作为数组传入下方代码中的HR_fitting_update_parameters (int32 *HR_fitting_parameters); |
|
||||
| crc16 | crc16校验值 | uint16_t | xx | \\ |
|
||||
|
||||
```C
|
||||
// ====== HR 三段拟合的9个参数 =======
|
||||
// a与b需乘以0.000001保证小数点后6位
|
||||
static int32_t HR_fitting_parameters_f1;
|
||||
static float HR_fitting_parameters_a1;
|
||||
static float HR_fitting_parameters_b1;
|
||||
|
||||
static int32_t HR_fitting_parameters_f2;
|
||||
static float HR_fitting_parameters_a2;
|
||||
static float HR_fitting_parameters_b2;
|
||||
|
||||
static int32_t HR_fitting_parameters_f3;
|
||||
static float HR_fitting_parameters_a3;
|
||||
static float HR_fitting_parameters_b3;
|
||||
// ===== 更新 HR 三段拟合的9个参数 ========
|
||||
static void
|
||||
HR_fitting_update_parameters (int32 *HR_fitting_parameters)
|
||||
{
|
||||
HR_fitting_parameters_f1 = HR_fitting_parameters[0];
|
||||
HR_fitting_parameters_a1 = HR_fitting_parameters[1] * 0.000001;
|
||||
HR_fitting_parameters_b1 = HR_fitting_parameters[2] * 0.000001;
|
||||
HR_fitting_parameters_f2 = HR_fitting_parameters[3];
|
||||
HR_fitting_parameters_a2 = HR_fitting_parameters[4] * 0.000001;
|
||||
HR_fitting_parameters_b2 = HR_fitting_parameters[5] * 0.000001;
|
||||
HR_fitting_parameters_f3 = HR_fitting_parameters[6];
|
||||
HR_fitting_parameters_a3 = HR_fitting_parameters[7] * 0.000001;
|
||||
HR_fitting_parameters_b3 = HR_fitting_parameters[8] * 0.000001;
|
||||
WriteParametersIntoFlash (); // 保存参数
|
||||
};
|
||||
// ===== HR 三段拟合 ========
|
||||
static void
|
||||
HR_fitting (uint16_t *inputHR_p, uint16_t *outputHR_p)
|
||||
{
|
||||
uint16_t HR_temp = *inputHR_p;
|
||||
|
||||
if (HR_temp < HR_fitting_parameters_f1)
|
||||
{
|
||||
*outputHR_p = (uint16_t)(HR_fitting_parameters_a1 * HR_temp
|
||||
+ HR_fitting_parameters_b1);
|
||||
}
|
||||
else if (HR_temp < HR_fitting_parameters_f2)
|
||||
{
|
||||
*outputHR_p = (uint16_t)(HR_fitting_parameters_a2 * HR_temp
|
||||
+ HR_fitting_parameters_b2);
|
||||
}
|
||||
else if (HR_temp < HR_fitting_parameters_f3)
|
||||
{
|
||||
*outputHR_p = (uint16_t)(HR_fitting_parameters_a3 * HR_temp
|
||||
+ HR_fitting_parameters_b3);
|
||||
}
|
||||
else
|
||||
{
|
||||
*outputHR_p = HR_temp;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始] --> B{更新矫正参数}
|
||||
B --> C[从输入获取新参数]
|
||||
C --> D[对a/b乘以0.000001转小数]
|
||||
D --> E[保存到存储器]
|
||||
E --> F[参数更新完成]
|
||||
|
||||
G[心率矫正] --> H{判断心率值}
|
||||
H --> |心率 < f1| I[用第一段公式矫正:\n输出 = a1*心率 + b1]
|
||||
H --> |f1 ≤ 心率 < f2| J[用第二段公式矫正:\n输出 = a2*心率 + b2]
|
||||
H --> |f2 ≤ 心率 < f3| K[用第三段公式矫正:\n输出 = a3*心率 + b3]
|
||||
H --> |心率 ≥ f3| L[直接输出原始心率]
|
||||
L --> M[矫正结束]
|
||||
```
|
||||
|
||||
#### 5.2. 0x9D 告诉下位机当前治疗阶段与疾病类型
|
||||
|
||||
数据帧示例:
|
||||
|
||||
``` HEX
|
||||
HEX: 5A 00 00 9D 00 02 00 00 00 TreatmentPhase DiseaseTypes crc16_L crc16_H A5
|
||||
```
|
||||
|
||||
| 参数名称 | 参数描述 | 参数类型 | 参数值 | 参数值对应功能描述 |
|
||||
| -------------- | -------------- | -------- | --------- | ------------------------------------------------ |
|
||||
| TreatmentPhase | 治疗阶段的编号 | uint8_t | 0x00 | 待机阶段 用于停止基线采集 或 仅指定疾病类型 |
|
||||
| TreatmentPhase | 治疗阶段的编号 | uint8_t | 0x01 | 前基线评估 开始记录各指标平均值 直到切换模式结束 |
|
||||
| TreatmentPhase | 治疗阶段的编号 | uint8_t | 0x02 | 后基线评估 开始记录各指标平均值 直到切换模式结束 |
|
||||
| DiseaseTypes | 疾病类型编号 | uint8_t | 0x00 | 不传输疾病类型 仅传输治疗阶段的编号 |
|
||||
| DiseaseTypes | 疾病类型编号 | uint8_t | 0x01~0xFE | 疾病类型编号 |
|
||||
| crc16 | crc16校验值 | uint16_t | xx | \\ |
|
||||
|
||||
治疗阶段的编号
|
||||
|
||||
疾病类型编号
|
||||
|
||||
## 六.头戴设备功能码表
|
||||
|
||||
当连接建立后,头戴设备向电脑发送数据时的功能码对应的功能
|
||||
@ -504,3 +614,5 @@ HEX: 5A 01 ID 60 00 02 00 00 00 AA_L AA_H crc16_L crc16_H A5
|
||||
### 7.1 TODO
|
||||
|
||||
--TODO
|
||||
|
||||
## 附录
|
||||
|
Reference in New Issue
Block a user