Compare commits

...

2 Commits

Author SHA1 Message Date
8f9b8966d4 [Feature:Speed Up Version] 2025-04-22 15:14:36 +08:00
d1a7b23ea8 [Add:Branch Check] 2025-04-22 11:17:13 +08:00
12 changed files with 11723 additions and 134 deletions

View File

@ -2,6 +2,6 @@
"idf.openOcdConfigs": [
"board/esp32-wrover-kit-3.3v.cfg"
],
"idf.portWin": "COM12",
"idf.portWin": "COM22",
"idf.flashType": "UART"
}

View File

@ -13,4 +13,6 @@
```
Date 2025年4月22日
Log : 旧版本体征监测垫程序 ,兼容最新算法
新建分支
韩国提速版本
```

View File

@ -101,17 +101,17 @@
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>615</Top>
<Left>-1920</Left>
<Right>-800</Right>
<Bottom>1256</Bottom>
<Top>257</Top>
<Left>0</Left>
<Right>1120</Right>
<Bottom>898</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>1114</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000050443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D79546F6F6C2E6300000000084D79546F6F6C2E6300000000FFDC7800FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C6377745C4D79416C676F726974686D2E63000000000D4D79416C676F726974686D2E6300000000BECEA100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C434F52455C737461727475705F73746D33326634305F34317878782E730000000018737461727475705F73746D33326634305F34317878782E7300000000BCA8E100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C555345525C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E68000000000C66696E645F7065616B732E6800000000F7B88600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E63000000000C66696E645F7065616B732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000095F9FFFFA2010000000000005C040000</Data>
<Len>1241</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000009000000030000000100000050443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D79546F6F6C2E6300000000084D79546F6F6C2E6300000000FFDC7800FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C6377745C4D79416C676F726974686D2E63000000000D4D79416C676F726974686D2E6300000000BECEA100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C434F52455C737461727475705F73746D33326634305F34317878782E730000000018737461727475705F73746D33326634305F34317878782E7300000000BCA8E100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C555345525C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E68000000000C66696E645F7065616B732E6800000000F7B88600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E63000000000C66696E645F7065616B732E6300000000D9ADC200FFFFFFFF5F443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D7942616E644669747465722E63000000000E4D7942616E644669747465722E6300000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000001501000066000000D50500008D020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>

View File

@ -345,16 +345,16 @@ void arm_iir_f32_bp_stream_Breath_Output(float32_t *Input, float32_t *Output)
#define COUNT_BODY_CHECK_VAL 12
#define COUNT_BODY_CHECK_THRESHOLD 8
#define OPM_BODY_CHECK_THRESHOLD 1.0f
#define OPM_BODY_CHECK_THRESHOLD 1.5f
#define OPM_BODY_CHECK_HUGE_THRESHOLD 3.5f
#define LEN_Max_array 20 // Max_array长度
float i_count_Std = 0.0f;
float i_count_Max = 0.0f;
float Diff_detail_Past_2 = 0.05f; // Diff_Detail(t-2)
float Diff_detail_Past_1 = 0.05f; // Diff_Detail(t-1)
float Diff_detail_Record = 0.0f; // 记录阶梯值
float Diff_detail_Past_2 = 0.0f; // Diff_detail(t-2)
float Diff_detail_Past_1 = 0.0f; // Diff_detail(t-1)
float Diff_detail_Record = 0.0f; // 记录阶梯值
float FFT_br = 0.0f; // 未经后处理的FFT呼吸输出值
char i_count_No_Breath = 0; // 呼吸暂停指数
@ -431,16 +431,7 @@ void breathInBedCheck(float32_t *Input)
{
if (i == (LEN_Max_array - 1))
{
FFT_br = fft_Output(outPutFitterOPMData_Breath,
BREATH_FITTER_LENGTH - BREATH_IGNORE_LENGTH, TYPE_BREATH);
if ((FFT_br <= 10.0f) || (FFT_br >= 25.0f)) // 此处需计算一次FFTbr确认无呼吸特征
{
Max_array[i] = Max;
}
else
{
Max_array[i] = 0;
}
Max_array[i] = Max;
}
else
{
@ -467,7 +458,7 @@ void breathInBedCheck(float32_t *Input)
{
FiveMinutesCount = 120;
}
if ((OffBed_Flag == 0) && (Max < 0.002f)) // 记录空床光功
if ((OffBed_Flag == 0) && (Max < 0.005f)) // 记录空床光功
{
if (OPM_CountDown_2 == 0) // 进行在床倒计时(即在床判断过程中)不记录空床光功
{
@ -476,7 +467,7 @@ void breathInBedCheck(float32_t *Input)
if (fabs(OPM_Record_2 - dbm_value_1310) > 0.3) // 当空床状态下光功数值发生大幅变化时,连续检测到3次变化再记录新空床光功
{
i_count_change++;
if (i_count_change == 10)
if (i_count_change == 5)
{
OPM_Record_2 = dbm_value_1310;
}
@ -528,56 +519,26 @@ void breathInBedCheck(float32_t *Input)
{
OPM_Record_2 = OPM_Original;
}
if ((OffBed_Flag == 4) && (Diff_Detail < 0.03f)) // 在床状态下检测Diff_detail下降沿
/*
if ((OffBed_Flag == 4) && (Diff_Detail < 0.2f)) // 在床状态下检测Diff_detail下降沿
{
if (((Diff_Detail - Diff_detail_Past_2) < (-0.5 * Diff_detail_Past_2)) && (i_count_No_Breath == 0))
if (((Diff_Detail - Diff_detail_Past_2) < -0.008f) && (i_count_No_Breath == 0))
{
Diff_detail_Record = Diff_detail_Past_2;
if (Diff_Detail < 0.03f)
Diff_detail_Record = Diff_detail_Past_2;
}
}
if ((Diff_detail_Record > 0) && ((Diff_Detail - Diff_detail_Record) < (-0.5 * Diff_detail_Record))) // 检测下降沿保持时间
if ((Diff_detail_Record > 0) && ((Diff_Detail - Diff_detail_Record) < -0.008f)) // 检测下降沿保持时间
{
if (OffBed_Flag == 4)
{
i_count_No_Breath++;
}
//----------------------------------------------------------------
FFT_br = fft_Output(outPutFitterOPMData_Breath,
BREATH_FITTER_LENGTH - BREATH_IGNORE_LENGTH, TYPE_BREATH);
if (i_count_No_Breath >= 10) // 当呼吸暂停指数大于阈值时开始检测呼吸率频谱是否满足暂停要求
{
if ((FFT_br <= 7.0f) || (FFT_br >= 45.0f)) // 若满足呼吸率频谱要求则将指数增加,使得呼吸置零能保持一小段时间
{
i_count_No_Breath = i_count_No_Breath + 2;
i_wait_FFT = 0;
}
else // 若不满足要求则将指数减1等待频谱满足要求
{
i_count_No_Breath--;
i_wait_FFT++;
if (i_wait_FFT >= 4) // 只等待频谱固定时间防止FFT错误数据影响判断。
{
i_wait_FFT = 0;
i_count_No_Breath = 0;
}
}
if (i_count_No_Breath >= 10) // 当频谱满足要求后指数也要逐次递减,在频谱偶尔满足要求的情况下能够减少误报暂停
{
i_count_No_Breath--;
i_wait_FFT = 0;
if ((FFT_br >= 7.0f) && (FFT_br <= 45.0f)) // 若不满足呼吸率频谱要求则将指数置零
{
i_count_No_Breath = 0;
}
}
}
if (i_count_No_Breath >= 15) // 限制参数不要过大,在出现误报后能迅速修正
if (i_count_No_Breath >= 5)
{
i_count_No_Breath = 15;
i_count_No_Breath = 5;
}
}
else
@ -585,30 +546,9 @@ void breathInBedCheck(float32_t *Input)
Diff_detail_Record = 0;
i_count_No_Breath = 0;
}
//----------------------------------------------------------------
if (i_count_No_Breath >= 13) // 当呼吸暂停指数大于阈值时。将呼吸置零,并开始计数呼吸暂停预警参数
{
// BR = 0; // 呼吸置零
FFT_Count_State_Flag = FFT_No_breath; //
i_count_No_Breath_alarm++;
}
else
{
i_count_No_Breath_alarm = 0;
}
if (i_count_No_Breath_alarm >= 60) // 当呼吸暂停预警参数大于阈值时,上报一次预警并将该参数重新置零
{
// No_Breath_alarm = 1; // 呼吸暂停预警
i_count_No_Breath_alarm = 0;
}
if (Diff_Detail < 0.25f) // 只在相对静止情况下更新Diff_detail相关的记录值
{
Diff_detail_Past_2 = Diff_detail_Past_1;
Diff_detail_Past_1 = Diff_Detail;
}
Diff_detail_Past_2 = Diff_detail_Past_1; //
Diff_detail_Past_1 = Diff_Detail; //
*/
// StdRecord = Std;
// printf("\r\n-----------------------------------------\n");
// printf("dbm_value_1310 %f\r\n", dbm_value_1310);
@ -634,7 +574,7 @@ void breathInBedCheck(float32_t *Input)
}
}
#else
if ((dbm_value_1310 - OPM_Record_2 > -0.5f) && (Max < 1.5f)) // 若和空床光功连续接近6s则判为离床
if ((dbm_value_1310 - OPM_Record_2 > -0.8f) && (Max < 1.5f)) // 若和空床光功连续接近6s则判为离床
{
OPM_CountDown_3++;
if (OPM_CountDown_3 >= 6)
@ -675,13 +615,13 @@ void breathInBedCheck(float32_t *Input)
{
i_count_no_human = 12;
}
if ((Max > 0.009f)) // 在床判断的保险机制连续30s有体征则判为在床
if ((Max > 0.02f)) // 在床判断的保险机制连续20s有体征则判为在床
{
OPM_Count_2++;
OPM_CountDown_3 = 0;
if (OPM_Count_2 >= 60)
if (OPM_Count_2 >= 20)
{
OPM_Count_2 = 60;
OPM_Count_2 = 20;
i_count_no_human = 0;
OPM_Record_2 = OPM_Original; // 防止空床光功误报,将其初始化
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1324,9 +1324,9 @@ void MyFitter(void)
Diff_Detail = MyToolFindMaxValue(ResultBuffer + 400, BREATH_FITTER_LENGTH - BREATH_IGNORE_LENGTH - HEART_IGNORE_LENGTH - 400) -
MyToolFindMinValue(ResultBuffer + 400, BREATH_FITTER_LENGTH - BREATH_IGNORE_LENGTH - HEART_IGNORE_LENGTH - 400);
// 如果小于0.5开始计算
if (Diff_Detail < 0.3f)
if (Diff_Detail < 0.5f)
FFT_Count_State_Flag = FFT_Still_state;
else if (Diff_Detail < 1.2f)
else if (Diff_Detail < 2.0f)
FFT_Count_State_Flag = FFT_Mild_body_motion;
else if (Diff_Detail <= 4.0f)
FFT_Count_State_Flag = FFT_Medium_body_motion;

View File

@ -35,7 +35,7 @@
#define THE_VERSION 1
// 1 表示是 提速 0 表示 正常
#define SPEED_UP_MODE_EN 0
#define SPEED_UP_MODE_EN 1
// 1 表示是 开启睡眠报告 0 表示 关闭睡眠报告
#define SLEEP_REPORT_EN 0

View File

@ -101,17 +101,17 @@
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>615</Top>
<Left>-1920</Left>
<Right>-800</Right>
<Bottom>1256</Bottom>
<Top>257</Top>
<Left>0</Left>
<Right>1120</Right>
<Bottom>898</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>1114</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000050443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D79546F6F6C2E6300000000084D79546F6F6C2E6300000000FFDC7800FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C6377745C4D79416C676F726974686D2E63000000000D4D79416C676F726974686D2E6300000000BECEA100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C434F52455C737461727475705F73746D33326634305F34317878782E730000000018737461727475705F73746D33326634305F34317878782E7300000000BCA8E100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C555345525C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E68000000000C66696E645F7065616B732E6800000000F7B88600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E63000000000C66696E645F7065616B732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000095F9FFFFA2010000000000005C040000</Data>
<Len>1241</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000009000000030000000100000050443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF59443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D79546F6F6C2E6300000000084D79546F6F6C2E6300000000FFDC7800FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C6377745C4D79416C676F726974686D2E63000000000D4D79416C676F726974686D2E6300000000BECEA100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C555345525C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF62443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C434F52455C737461727475705F73746D33326634305F34317878782E730000000018737461727475705F73746D33326634305F34317878782E7300000000BCA8E100FFFFFFFF50443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D33322D4941505C555345525C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E68000000000C66696E645F7065616B732E6800000000F7B88600FFFFFFFF5D443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C66696E645F7065616B732E63000000000C66696E645F7065616B732E6300000000D9ADC200FFFFFFFF5F443A5C4A6F625F576F726B5C436F64655C305F50726F6A6563745C4A6F625F5369676E7350616473286769746561295C53544D33325C436F64655C53544D3332463430355C4170706C69636174696F6E5C4D7942616E644669747465722E63000000000E4D7942616E644669747465722E6300000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000001501000066000000D50500008D020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>

View File

@ -603,7 +603,7 @@
<Group>
<GroupName>USER</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@ -891,7 +891,7 @@
<Group>
<GroupName>Application</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>

View File

@ -187,12 +187,12 @@
<RvdsMve>0</RvdsMve>
<hadIRAM2>1</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>16</StupSel>
<StupSel>8</StupSel>
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
<nSecure>0</nSecure>
<RoSelD>4</RoSelD>
<RoSelD>3</RoSelD>
<RwSelD>4</RwSelD>
<CodeSel>0</CodeSel>
<OptFeed>0</OptFeed>
@ -204,8 +204,8 @@
<Ro1Chk>0</Ro1Chk>
<Ro2Chk>0</Ro2Chk>
<Ro3Chk>0</Ro3Chk>
<Ir1Chk>0</Ir1Chk>
<Ir2Chk>1</Ir2Chk>
<Ir1Chk>1</Ir1Chk>
<Ir2Chk>0</Ir2Chk>
<Ra1Chk>0</Ra1Chk>
<Ra2Chk>0</Ra2Chk>
<Ra3Chk>0</Ra3Chk>

File diff suppressed because one or more lines are too long