修复HP203B求平均值导致的数据错误
This commit is contained in:
parent
34c91c3099
commit
83a9a79dcd
|
@ -84,6 +84,18 @@ BOOL Hp203bReadTempture(float *press)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static float calculateAverage(float arr[], int avgLength) {
|
||||
float sum = 0;
|
||||
|
||||
// 遍历数组(最多10个元素),收集非零值直到达到指定数量
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
sum += arr[i];
|
||||
}
|
||||
|
||||
// 计算平均值并限制最大值
|
||||
float average = sum / avgLength;
|
||||
return average;
|
||||
}
|
||||
/****************************
|
||||
*名称:get_press_data
|
||||
*功能:获取气压与备用温度数据
|
||||
|
@ -99,12 +111,12 @@ BOOL get_HP203_data(float* tempdata, float* press)
|
|||
uint8_t temp_falt = 0;
|
||||
uint8_t press_falt = 0;
|
||||
// 压强
|
||||
U_DataType collect_pressure[COLLECT_HB203_DATA_NUM]={0x00};
|
||||
float collect_pressure[COLLECT_HB203_DATA_NUM]={0x00};
|
||||
|
||||
for(int i=0; i<COLLECT_HB203_DATA_NUM; i++){
|
||||
hp203_set_mode();
|
||||
osDelay(5);
|
||||
ret = Hp203bReadPressure(&collect_pressure[i].fValue);
|
||||
ret = Hp203bReadPressure(&collect_pressure[i]);
|
||||
if(ret == FALSE)
|
||||
{
|
||||
press_falt++;
|
||||
|
@ -117,25 +129,25 @@ BOOL get_HP203_data(float* tempdata, float* press)
|
|||
{
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
U_DataType tmp_press = filter_middle(collect_pressure, COLLECT_HB203_DATA_NUM - press_falt, FILTER_DATA_TYPE_FLOAT);
|
||||
if(tmp_press.fValue < 300)
|
||||
//求平均
|
||||
float tmp_press = calculateAverage(collect_pressure, COLLECT_HB203_DATA_NUM - press_falt);
|
||||
if(tmp_press < 300)
|
||||
{
|
||||
// return FALSE;
|
||||
goto error_return;
|
||||
}
|
||||
if(tmp_press.fValue > 1200)
|
||||
if(tmp_press > 1200)
|
||||
{
|
||||
// return FALSE;
|
||||
goto error_return;
|
||||
}
|
||||
// 温度
|
||||
U_DataType collect_tempture[COLLECT_HB203_DATA_NUM]={0x00};
|
||||
float collect_tempture[COLLECT_HB203_DATA_NUM]={0x00};
|
||||
|
||||
for(int i=0; i<COLLECT_HB203_DATA_NUM; i++){
|
||||
hp203_set_mode();
|
||||
osDelay(5);
|
||||
ret = Hp203bReadTempture(&collect_tempture[i].fValue);
|
||||
ret = Hp203bReadTempture(&collect_tempture[i]);
|
||||
if(ret == FALSE)
|
||||
{
|
||||
temp_falt++;
|
||||
|
@ -148,21 +160,21 @@ BOOL get_HP203_data(float* tempdata, float* press)
|
|||
{
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
U_DataType tmp_tempture = filter_middle(collect_tempture, COLLECT_HB203_DATA_NUM - temp_falt, FILTER_DATA_TYPE_FLOAT);
|
||||
if(tmp_tempture.fValue < -50)
|
||||
//求平均
|
||||
float tmp_tempture = calculateAverage(collect_tempture, COLLECT_HB203_DATA_NUM - temp_falt);
|
||||
if(tmp_tempture < -50)
|
||||
{
|
||||
// return FALSE;
|
||||
goto error_return;
|
||||
}
|
||||
if(tmp_tempture.fValue > 95)
|
||||
if(tmp_tempture > 95)
|
||||
{
|
||||
// return FALSE;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
*tempdata = tmp_tempture.fValue;
|
||||
*press = tmp_press.fValue;
|
||||
*tempdata = tmp_tempture;
|
||||
*press = tmp_press;
|
||||
return TRUE;
|
||||
|
||||
error_return:
|
||||
|
|
Loading…
Reference in New Issue