P8UWaterPlasticIES4G/app/UWater_TemperatureCalculate...

779 lines
30 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "UWater_gp22_app.h"
#include "UWater_lcd_app.h"
#include "UWater_frame_app.h"
#include "UWater_TemperatureCalculate_app.h"
#include "UWater_gp22_driver.h"
#include "UWater_rtcc_driver.h"
//0-100<30><30><EFBFBD><EFBFBD>Ӧ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> <20><>λm/s
const float sound_speed_in_water[101]=
{1402.336,
1407.31196 ,1412.173988,1416.924022,1421.563966,1426.095691,
1430.521033,1434.841795,1439.059749,1443.176633,1447.194154,
1451.113987,1454.937777,1458.667135,1462.303645,1465.84886 ,
1469.304301,1472.671463,1475.95181 ,1479.146777,1482.257772,
1485.286175,1488.233337,1491.100583,1493.889211,1496.600493,
1499.235674,1501.795973,1504.282585,1506.69668 ,1509.039401,
1511.311869,1513.515181,1515.65041 ,1517.718606,1519.720794,
1521.657981,1523.531149,1525.341257,1527.089246,1528.776035,
1530.40252 ,1531.969579,1533.478071,1534.928834,1536.322685,
1537.660427,1538.942839,1540.170687,1541.344717,1542.465656,
1543.534218,1544.551096,1545.51697 ,1546.432504,1547.298344,
1548.115124,1548.88346 ,1549.603957,1550.277204,1550.903775,
1551.484234,1552.01913 ,1552.508999,1552.954367,1553.355746,
1553.713636,1554.028529,1554.300904,1554.53123 ,1554.719965,
1554.86756 ,1554.974453,1555.041077,1555.067854,1555.055198,
1555.003516,1554.913207,1554.784663,1554.61827 ,1554.414405,
1554.173443,1553.89575 ,1553.581689,1553.231616,1552.845885,
1552.424843,1551.968835,1551.478204,1550.953285,1550.394416,
1549.801928,1549.176154,1548.517423,1547.826062,1547.102399,
1546.346762,1545.559476,1544.740868,1543.891267,1543.011 ,
};
#if WENDU_FANSUAN_OPEN
/*-----------------------------------------------------------------------------*/
TEMP_IVVERSE_UNION_MSG temp_inverse_struct_msg;//<2F>¶ȷ<C2B6><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Temp_Inverse_Data1 Temp_Inverse_Data;//<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȶ<C2B6><C8B6>ڵ<EFBFBD><DAB5><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B4A6>
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
u32 gp30_tof_up_down_head =0;//
u32 gp30_tof_up_down_length=0;
u32 gp30_tof_up_data[MAX_TEMP_NUM]; //<2F><><EFBFBD>ڲɼ<DAB2>up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 2020-12-05
u32 gp30_tof_down_data[MAX_TEMP_NUM]; //<2F><><EFBFBD>ڲɼ<DAB2>up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 2020-12-05
u32 gp30_tof_up_filter_value =0;//up<75>˲<EFBFBD>ֵ
u32 gp30_tof_down_filter_value =0;//down<77>˲<EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>ֵ<EFBFBD><D6B5><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
u8 gp30_tof_buchang_head =0;
u8 gp30_tof_buchang_length =0;
float gp30_tof_up_chazhi_filter_value =0;//up<75>˲<EFBFBD>ֵ
float gp30_tof_down_chazhi_filter_value =0;//down<77>˲<EFBFBD>ֵ
float gp30_tof_up_buchang_data[MAX_TOF_BUCHANG_NUM]={0};
float gp30_tof_down_buchang_data[MAX_TOF_BUCHANG_NUM]={0};
u8 tof_caliberate_state = TOF_BUCHANG_IDLE;//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ԭʼ<D4AD><CABC><EFBFBD>ݴ洢BUF
static u32 s_g_fhl_tof_up_data[GP22_APP_TEMP_INVERSE_DATA_SIZE_FIVE]={0}; //FHL_TOF_UP<55>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
static u32 s_g_fhl_tof_down_data[GP22_APP_TEMP_INVERSE_DATA_SIZE_FIVE]={0}; //FHL_TOF_DOWN<57>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
u32 tof_down_data[MAX_TEMP_NUM]={0};//<2F><>¼down<77>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ӧλ<D3A6>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
//<2F>̳б<CCB3><D0B1><EFBFBD>
extern GP30_SYS_Date gp22_app_data; //gp22<32><32>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
extern GP30_SYS_Date gp22_test_data; //gp22<32>춨״̬<D7B4>µ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
extern GP30_APP_SAVE_DATA g_sample_save_data; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
extern u32 s_g_up_am[GP22_APP_TEMP_INVERSE_DATA_SIZE+GP22_APP_TEMP_INVERSE_DATA_SIZE]; //am<61>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ4<C7B0><34><EFBFBD><EFBFBD><E6B4A2>4~<7E><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><E6B4A2>8~<7E><>11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern u32 s_g_down_am[GP22_APP_TEMP_INVERSE_DATA_SIZE+GP22_APP_TEMP_INVERSE_DATA_SIZE]; //down<77>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ4<C7B0><34><EFBFBD><EFBFBD><E6B4A2>4~<7E><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><E6B4A2>8~<7E><>11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern float temp_calculate_last;
/*-----------------------------------------------------------------------------*/
/*<2A>¶ȷ<C2B6><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EBB4A6>*/
/****************************************************************
Function: void Tof_And_AM_Data_Collect(u8 i,u32 s_g_tof_am_pointer)
Description: <EFBFBD>ɼ<EFBFBD>GP30<EFBFBD><EFBFBD><EFBFBD><EFBFBD>up<EFBFBD><EFBFBD>down<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>up<EFBFBD><EFBFBD>down<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
void Tof_And_AM_Data_Collect(u8 i,u32 s_g_tof_am_pointer)
{
u32 s_g_tof_am_data[GP22_APP_QUEUE_SIZE]={0};
s_g_tof_am_data[i] = s_g_tof_am_pointer;
s_g_tof_am_data[i] = (s_g_tof_am_data[i] & 0x000000FFU) << 24 | (s_g_tof_am_data[i] & 0x0000FF00U) << 8 | (s_g_tof_am_data[i] & 0x00FF0000U) >> 8 | (s_g_tof_am_data[i] & 0xFF000000U) >> 24; //<2F><>С<EFBFBD><D0A1>ת<EFBFBD><D7AA>
//<2F>¶ȷ<C2B6><C8B7><EFBFBD><E3B4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TOFֵ<46><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFB4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
if((0==i%GP22_APP_TEMP_INVERSE_DATA_SIZE)&&(i!=GP22_APP_QUEUE_SIZE-1))//<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>1 4 7 10 13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFHL 5-9<><39><EFBFBD><EFBFBD>up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
s_g_fhl_tof_up_data[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=s_g_tof_am_data[i];//<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>1 4 7 10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFHL 5-9<><39><EFBFBD><EFBFBD>up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
}
else if(1==i%GP22_APP_TEMP_INVERSE_DATA_SIZE)//<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>2 5 8 11 14 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFHL 5-9<><39><EFBFBD><EFBFBD>down<77><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
s_g_fhl_tof_down_data[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=s_g_tof_am_data[i];//<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>2 5 8 11 14 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFHL 5-9<><39><EFBFBD><EFBFBD>down<77><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
}
else if((2==i%GP22_APP_TEMP_INVERSE_DATA_SIZE)||(i==GP22_APP_QUEUE_SIZE-1))//<2F><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>3 6 9 12 15 16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪFHL 5-10<31><30><EFBFBD><EFBFBD>up(<28><><EFBFBD><EFBFBD>16λ<36><CEBB>16)|down(<28><>16λ)<29><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
s_g_up_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=s_g_tof_am_data[i]>>16;//<2F><>ȡUP<55><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0xF000==(s_g_up_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]&0xF000))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>ͷ˵<CDB7><CBB5><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
{
s_g_up_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=0;
}
s_g_down_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=s_g_tof_am_data[i]&0x0000FFFF;//<2F><>ȡDOWN<57><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0xF000==(s_g_down_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]&0xF000))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>ͷ˵<CDB7><CBB5><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
{
s_g_down_am[i/GP22_APP_TEMP_INVERSE_DATA_SIZE]=0;
}
}
}
/****************************************************************
Function: void Tof_Calcuate_Average(u32 *tof_up, u32 *tof_down, u8 data_len)
Description: <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>up <EFBFBD><EFBFBD>Down <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡƽ<EFBFBD><EFBFBD>ֵ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
void Tof_Calcuate_Average(u32 *tof_up, u32 *tof_down, u8 data_len)
{
u8 i = 0;
u32 sum_tof_up=0,sum_tof_down=0;
for(i = 0;i< data_len;i++)
{
sum_tof_up += tof_up[i];//<2F><>ȡUP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ
sum_tof_down += tof_down[i];//<2F><>ȡDown<77><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ
}
if((sum_tof_up!=0)&&(sum_tof_down!=0))//<2F><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>
{
gp22_test_data.s.TOF_up = (sum_tof_up/data_len)-TOF_6_US;//<2F><>up<75>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>ƽ<EFBFBD><C6BD>ֵ<EFBFBD><D6B5>6us<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TOF_UP
gp22_test_data.s.TOF_down = (sum_tof_down/data_len)-TOF_6_US;//<2F><>up<75>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>ƽ<EFBFBD><C6BD>ֵ<EFBFBD><D6B5>6us<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TOF_DOWN
}
else
{
gp22_test_data.s.TOF_up = 0;
gp22_test_data.s.TOF_down=0;
}
}
/****************************************************************
Function: AM_Calcuate_Average(u32 *up_am, u32 *down_am, u8 data_len)
Description: <EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>up <EFBFBD><EFBFBD>Down <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡƽ<EFBFBD><EFBFBD>ֵ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
void AM_Calcuate_Average(u32 *up_am, u32 *down_am, u8 data_len)
{
u8 i = 0,down_am_cnt=0,up_am_cnt=0;
u32 sum_am_up=0,sum_am_down=0;
for(i = 0;i< data_len;i++)
{
if((s_g_up_am[i]>0)&&(s_g_up_am[i]<UP_AM_MAX))
{
sum_am_up += s_g_up_am[i];
up_am_cnt++;
}
if((s_g_down_am[i]>0)&&(s_g_down_am[i]<DOWN_AM_MAX))
{
sum_am_down += s_g_down_am[i];
down_am_cnt++;
}
}
if(down_am_cnt!=0)
{
Temp_Inverse_Data.Temp_Inverse_Data.down_am_average = sum_am_down / down_am_cnt;//<2F><>ȡUp<55><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
}
else
{
Temp_Inverse_Data.Temp_Inverse_Data.down_am_average = 0;//<2F><>ȡDown<77><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
}
if(up_am_cnt!=0)
{
Temp_Inverse_Data.Temp_Inverse_Data.up_am_average = sum_am_up / up_am_cnt;//<2F><>ȡUP<55><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
}
else
{
Temp_Inverse_Data.Temp_Inverse_Data.up_am_average = 0;//<2F><>ȡUP<55><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ = 0;
}
}
/***************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> Gp30_Tof_Save(void)
<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>up<EFBFBD><EFBFBD>down<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>BUFFER<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
void Gp30_Tof_Save(void)
{
gp30_tof_up_data[gp30_tof_up_down_head] = gp22_test_data.s.TOF_up; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gp30_tof_down_data[gp30_tof_up_down_head]= gp22_test_data.s.TOF_down; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gp30_tof_up_down_head++;
if(MAX_TEMP_NUM!=gp30_tof_up_down_head)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
if(gp30_tof_up_down_length != MAX_TEMP_NUM)//<2F><>BUF<55><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
{
gp30_tof_up_down_length = gp30_tof_up_down_head;//
}
}
else
{
gp30_tof_up_down_length = MAX_TEMP_NUM;
}
gp30_tof_up_down_head %= MAX_TEMP_NUM;
}
/****************************************************************
Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Description:*p ָ<EFBFBD>򵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ len <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> flag 0:tof_up 1:tof_down
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
u32 Filter_FOR_TOFDOWN(u32 *p, u8 len) //
{
u8 i,cnt=0,max_count=0,min_count=0;//max_count:<3A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> min_count:<3A><>¼С<C2BC><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 sum=0,sum_max=0,sum_min=0,tof_max=0,tof_min=0,tof_dif_max=0,tof_dif_min=0,tof_current=0;/*sum:<3A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ۼӺ<DBBC>;sum_max<61><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>֮<EFBFBD><D6AE><EFBFBD>ۼӺ<DBBC>
sum_min<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ۼӺ<EFBFBD> tof_max:<EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD>
tof_min:<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> tof_dif_max<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ
tof_dif_min:<EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ tof_current: <EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>*/
static u32 tof_down_last=0;//<2F><>¼up<75><70>down<77><6E><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>
if(0==tof_down_data[0])
{
tof_current = tof_down_last;
return tof_current;
}
for(i=0;i<len;i++)
{
if(0==tof_down_data[i])
{
break;//ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
}
}
cnt = i;//<2F><>¼<EFBFBD><C2BC>Ч<EFBFBD><D0A7><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
if(1==cnt)
{
tof_current = tof_down_data[0];
tof_down_last = tof_current; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
return tof_current;
}
tof_max = tof_down_data[0];
tof_min = tof_down_data[0];
//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD> <20><>Сֵ
for(i=0;i<cnt;i++)
{
if((tof_down_data[i]>=tof_max))
{
tof_max = tof_down_data[i];
}
if((tof_down_data[i]<=tof_min))
{
tof_min = tof_down_data[i];
}
}
//<2F>ж<EFBFBD>
for(i=0;i<cnt;i++)
{
tof_dif_max = tof_max - tof_down_data[i];
if(tof_dif_max <= TOF_MAX_DIF_FOR_HUADONG)//200ns
{
max_count++;
sum_max += tof_down_data[i];
}
tof_dif_min = tof_down_data[i] - tof_min;
if(tof_dif_min <= TOF_MAX_DIF_FOR_HUADONG)
{
min_count++;
sum_min +=tof_down_data[i];
}
}
//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
if(max_count==min_count)//
{
if((tof_max-tof_min) <= TOF_MAX_DIF_FOR_HUADONG)
{
tof_current = sum_max / max_count;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
else
{
tof_current = tof_down_last; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
}
else if(max_count>min_count)
{
len = max_count;
sum = sum_max ;
tof_current = sum / len;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
else
{
len = min_count;
sum = sum_min;
tof_current = sum / len;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
//<2F><><EFBFBD>жϺϷ<CFBA><CFB7>ԣ<EFBFBD><D4A3>ٽ<EFBFBD><D9BD>и<EFBFBD>ֵ
if(tof_current!=0)
{
tof_down_last = tof_current; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
else
{
tof_current = tof_down_last;
}
return tof_current;
}
/****************************************************************
Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Description:*p ָ<EFBFBD>򵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ len <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> flag 0:tof_up 1:tof_down
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
u32 Filter_FOR_TOFUP(u32 *tof_up, u32 *tof_down, u8 len) //
{
u8 i,max_count=0,min_count=0;//max_count:<3A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> min_count:<3A><>¼С<C2BC><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32 sum=0,sum_max=0,sum_min=0,tof_max=0,tof_min=0,tof_dif_max=0,tof_dif_min=0,tof_current=0;/*sum:<3A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ۼӺ<DBBC>;sum_max<61><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>֮<EFBFBD><D6AE><EFBFBD>ۼӺ<DBBC>
sum_min<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ۼӺ<EFBFBD> tof_max:<EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD>
tof_min:<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> tof_dif_max<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ
tof_dif_min:<EFBFBD><EFBFBD><EFBFBD>󵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ tof_current: <EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>*/
static u32 tof_up_last=0;//<2F><>¼up<75><70>down<77><6E><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>
u32 temp_max[MAX_TEMP_NUM]={0},temp_min[MAX_TEMP_NUM]={0};//ͳ<><CDB3>
tof_max = tof_up[0];
tof_min = tof_up[0];
if(len==1)
{
tof_current = tof_up[0];
tof_up_last = tof_current; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
tof_down_data[0] = tof_down[0];//
return tof_current;
}
//<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD> <20><>Сֵ
for(i=0;i<len;i++)
{
if((tof_up[i]>=tof_max))
{
tof_max = tof_up[i];
}
if((tof_up[i]<=tof_min))
{
tof_min = tof_up[i];
}
}
//<2F><EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<D0A1>Ƿ<EFBFBD>ͬΪһ<CEAA><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0;i<len;i++)
{
tof_dif_max = tof_max - tof_up[i];
if(tof_dif_max <= TOF_MAX_DIF_FOR_HUADONG)//200ns
{
temp_max[max_count]= tof_down[i];
max_count++;
sum_max += tof_up[i];
}
tof_dif_min = tof_up[i] - tof_min;
if(tof_dif_min <= TOF_MAX_DIF_FOR_HUADONG)
{
temp_min[min_count]= tof_down[i];
min_count++;
sum_min +=tof_up[i];
}
}
//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
if(max_count==min_count)//
{
if(max_count == MAX_TEMP_NUM)
{
tof_current = sum_max / max_count;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
memcpy(tof_down_data,temp_max,MAX_TEMP_NUM*4);
}
else
{
tof_current = tof_up_last; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
memset(tof_down_data,0,MAX_TEMP_NUM*4);
}
}
else if(max_count>min_count)
{
len = max_count;
sum = sum_max ;
tof_current = sum / len;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
memcpy(tof_down_data,temp_max,MAX_TEMP_NUM*4);
}
else
{
len = min_count;
sum = sum_min;
tof_current = sum / len;//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
memcpy(tof_down_data,temp_min,MAX_TEMP_NUM*4);
}
//<2F><><EFBFBD>жϺϷ<CFBA><CFB7>ԣ<EFBFBD><D4A3>ٽ<EFBFBD><D9BD>и<EFBFBD>ֵ
if(tof_current!=0)
{
tof_up_last = tof_current; //<2F><EFBFBD>ϴεĵ<CEB5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ֵ
}
else
{
tof_current = tof_up_last;
}
return tof_current;
}
/***************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> Gp30_TOF_and_DOWN_Data_Collect(void)
<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
void Gp30_Tof_Collect_and_Deal()
{
Tof_Calcuate_Average(s_g_fhl_tof_up_data,s_g_fhl_tof_down_data,5);//<2F>Ե<EFBFBD><D4B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>
Gp30_Tof_Save();//<2F><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>
gp30_tof_up_filter_value = Filter_FOR_TOFUP(gp30_tof_up_data,gp30_tof_down_data,gp30_tof_up_down_length);//
gp30_tof_down_filter_value = Filter_FOR_TOFDOWN(tof_down_data,gp30_tof_up_down_length);//
AM_Calcuate_Average(s_g_up_am,s_g_down_am,6);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
}
/*<2A>¶ȷ<C2B6><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵ڶ<CCB5><DAB6><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>У׼ 2<><32>У׼<D0A3>󵥳<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>*/
/***************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD> time_dof_temp_float <EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> time_tof_up_float<EFBFBD><EFBFBD>Up<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> time_tof_up_float<EFBFBD><EFBFBD>Down<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
void Water_Meter_Caliberate(u32 time_dof,float time_tof_up_float,float time_tof_down_float)
{
float time_tof_up_xishu = 0,time_tof_down_xishu = 0;
float temp_jiaozhun=0;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>У׼<D0A3><EFBFBD>
float sound_speed_C = 0;//<2F><><EFBFBD><EFBFBD>
float calculate_decimal ; //<2F>¶ȵ<C2B6>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float time_tof_up_float_jiaozhun_value =0;//У׼<D0A3><D7BC>UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
float time_tof_down_float_jiaozhun_value =0;//У׼<D0A3><D7BC>DOWN<57><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u8 calculate_num=0;
float time_dof_temp_float=0;
if(tof_caliberate_state==TOF_BUCHANG_START_SAMPLE)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>״̬<D7B4>ͽ<EFBFBD><CDBD><EFBFBD>
{
temp_jiaozhun = Get_Temperature_Caliberate();//<2F><>ȡ̨<C8A1><CCA8><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ֵ---<2D><><EFBFBD><EFBFBD><EFBFBD>սӿں<D3BF><DABA><EFBFBD>
if((temp_jiaozhun < 0) || (temp_jiaozhun > 100)) //<2F><EFBFBD><EFBFBD><C2B6>жϣ<D0B6><CFA3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
{
sound_speed_C = sound_speed_in_water[20];
}
else
{
calculate_num = (u8) (temp_jiaozhun); //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
calculate_decimal = temp_jiaozhun - calculate_num; //<2F>¶ȵ<C2B6>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sound_speed_C = sound_speed_in_water[calculate_num] + calculate_decimal * (sound_speed_in_water[calculate_num + 1] - sound_speed_in_water[calculate_num]);
}
time_dof_temp_float = Gp30DataToFloat(time_dof); //<2F>Ȱ<EFBFBD><C8B0><EFBFBD>Чʱ<D0A7><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>
time_dof_temp_float = time_dof_temp_float * (float)250;// <20><>usת<73><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ns<6E><73> /4 *1000=ns
float ins_flow_rate_float = sound_speed_C * sound_speed_C * time_dof_temp_float * LEGENTH_SPEED_SOUND_DAOSHU;//C^2*(t2-t1)/2L---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m/s
time_tof_up_float_jiaozhun_value = LEGENTH_SPEED_SOUND / (sound_speed_C+ins_flow_rate_float); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>us
time_tof_down_float_jiaozhun_value = LEGENTH_SPEED_SOUND / (sound_speed_C-ins_flow_rate_float); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DOWN<57><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>us
time_tof_up_xishu = time_tof_up_float-time_tof_up_float_jiaozhun_value;//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Up<55><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
time_tof_down_xishu = time_tof_down_float-time_tof_down_float_jiaozhun_value;//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Down<77><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ժ<EFBFBD><D4BA><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ӷֱ<D3B7>Up<55><70>Down<77>ĺϷ<C4BA><CFB7><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ж<EFBFBD>
if(((time_tof_down_xishu - time_tof_up_xishu)>(float)0.5)||((time_tof_down_xishu - time_tof_up_xishu)<(float)-0.5))
{
time_tof_up_xishu = 0;
time_tof_down_xishu = 0;
}
gp22_app_data.s.up_tof_dif.gp30_float = time_tof_up_xishu;//<2F><>ȡEE<45>д洢<D0B4><E6B4A2>UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ϵ<EFBFBD><CFB5>
gp22_app_data.s.down_tof_dif.gp30_float = time_tof_down_xishu;//<2F><>ȡEE<45>д洢<D0B4><E6B4A2>DOWN<57><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ϵ<EFBFBD><CFB5>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>˲<EFBFBD>-----------------------
gp30_tof_up_buchang_data[gp30_tof_buchang_head] = gp22_app_data.s.up_tof_dif.gp30_float; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gp30_tof_down_buchang_data[gp30_tof_buchang_head]= gp22_app_data.s.down_tof_dif.gp30_float; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gp30_tof_buchang_head++;
if(MAX_TOF_BUCHANG_NUM!=gp30_tof_buchang_head)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
if(gp30_tof_buchang_length != MAX_TOF_BUCHANG_NUM)//<2F><>BUF<55><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
{
gp30_tof_buchang_length = gp30_tof_buchang_head;
}
}
else
{
gp30_tof_buchang_length = MAX_TOF_BUCHANG_NUM;
}
gp30_tof_buchang_head %= MAX_TOF_BUCHANG_NUM;
//-------------<2D><><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!!!!!
// if(gp30_tof_buchang_length == MAX_TOF_BUCHANG_NUM)
// {
// FrameClearMsgApp(MsgCaliberate);//<2F><><EFBFBD><EFBFBD><E3B5A5>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>־
// GP30_tof_buchang_filter(NOT_ALLOW_CALIBREATE);
// }
}
}
/***************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD> time_dof_temp_float <EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
void Water_Meter_Temp_calculate(u32 time_dof_temp_float)
{
float time_tof_temp_float =0,temp_calculate_app=0,temp_buchang_chazhi=0,wendu=0;//time_tof_temp_float<61><74>up<75><70>Down <20>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B5B9><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
float time_tof_up_float =0,time_tof_down_float =0;//ʵʱ<CAB5>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>
u32 heat_temp = 0;
float heat_temp_xishu=0;//<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȸ<C2B6><C8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((gp22_test_data.s.TOF_up==0)||(gp22_test_data.s.TOF_down==0))//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ0----<2D><>Ϊ<EFBFBD>ǿչ<C7BF>״̬
{
Temp_Inverse_Data.Temp_Inverse_Data.gp30_tof_up_filter_value_test = 0;//<2F>չ<EFBFBD><D5B9><EFBFBD>UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Temp_Inverse_Data.Temp_Inverse_Data.gp30_tof_down_filter_value_test = 0;//<2F>չ<EFBFBD><D5B9><EFBFBD>DOWN<57><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GP30_tof_buchang_filter(NOT_ALLOW_CALIBREATE);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЧԤ<D0A7><D4A4>NB<4E><42>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD>У׼
return;
}
heat_temp = FrameCheckParaApp(FramePara_Tc0);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD>ϵ<EFBFBD><CFB5>
if(heat_temp >= 0x80000000)//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
heat_temp &= 0x7FFFFFFF;
heat_temp_xishu= 0- Gp30DataToFloat(heat_temp);
}
else
{
heat_temp_xishu = Gp30DataToFloat(heat_temp);
}
time_tof_up_float = Gp30DataToFloat(gp30_tof_up_filter_value)/(float)4; //UP<55><50><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>---ת<><D7AA>Ϊus
time_tof_down_float = Gp30DataToFloat(gp30_tof_down_filter_value)/(float)4;//Down<77><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>---ת<><D7AA>Ϊus
Water_Meter_Caliberate(time_dof_temp_float,time_tof_up_float,time_tof_down_float);//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>ҪУ׼<D0A3><D7BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----
time_tof_up_float = time_tof_up_float - gp22_app_data.s.up_tof_dif.gp30_float;
time_tof_down_float = time_tof_down_float - gp22_app_data.s.down_tof_dif.gp30_float;
Temp_Inverse_Data.Temp_Inverse_Data.gp30_tof_up_filter_value_test = FloatToGp30Data(time_tof_up_float)*(float)4;//<2F><><EFBFBD><EFBFBD>̨<EFBFBD>ӵĵ<D3B5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>---GP30<33><30>ʽ
Temp_Inverse_Data.Temp_Inverse_Data.gp30_tof_down_filter_value_test = FloatToGp30Data(time_tof_down_float)*(float)4;//<2F><><EFBFBD><EFBFBD>̨<EFBFBD>ӵĵ<D3B5><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>---GP30<33><30>ʽ
time_tof_temp_float = (float)1/time_tof_up_float+(float)1/time_tof_down_float;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ת<EFBFBD><D7AA> 1/up + 1/down
#if ROUND_LLGS_WDFS_DN15_BRASS_40KPA_GP30_32768 || Buxiugang_LLGS_WDFS_DN15_BXG_40KPA_GP30_32768 || Plastic_LLGS_WDFS_DN15_PALSTIC_40KPA_GP30_32768
if(time_tof_temp_float <= TOF_UP_DOWN_DAOSHUHE_LOW) //С<><D0A1>35<33><35>
{
temp_calculate_app = (float)1164325060.28*time_tof_temp_float*time_tof_temp_float*time_tof_temp_float-(float)117666513.36*time_tof_temp_float*time_tof_temp_float + (float)3974951.33*time_tof_temp_float-(float)44879.30;
}
else if(time_tof_temp_float <= TOF_UP_DOWN_DAOSHUHE_MIDDLE) //35<33><35>45<34><35>
{
temp_calculate_app = (float)18099447.719*time_tof_temp_float*time_tof_temp_float - (float)1264215.524*time_tof_temp_float +(float)22102.772;
}
else
{
temp_calculate_app = (float)93075924.43*time_tof_temp_float*time_tof_temp_float -(float)6658976.07*time_tof_temp_float +(float)119144.49;
}
#elif ROUND_LLGS_WDFS_DN20_BRASS_40KPA_GP30_32768 || Buxiugang_LLGS_WDFS_DN20_BXG_40KPA_GP30_32768
if(time_tof_temp_float <= TOF_UP_DOWN_DAOSHUHE_LOW) //С<><D0A1>35<33><35>
{
temp_calculate_app = (float)1523999897.62*time_tof_temp_float*time_tof_temp_float*time_tof_temp_float-(float)147356593.93*time_tof_temp_float*time_tof_temp_float +(float) 4761092.78*time_tof_temp_float -(float)51396.5;//<2F>¶Ȳ<C2B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
}
else if(time_tof_temp_float <= TOF_UP_DOWN_DAOSHUHE_MIDDLE) //35<33><35>45<34><35>
{
temp_calculate_app = (float)18709611.192*time_tof_temp_float*time_tof_temp_float -(float)1245577.831*time_tof_temp_float +(float)20757.105 ;
}
else
{
temp_calculate_app = (float)147329123.77*time_tof_temp_float*time_tof_temp_float -(float)10079793.85*time_tof_temp_float +(float)172450.97 ;
}
#endif
temp_calculate_app = temp_calculate_app - temp_buchang_chazhi + heat_temp_xishu;//Ĭ<><C4AC>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Ϊ0
//3<><33><EFBFBD>¶ȺϷ<C8BA><CFB7><EFBFBD><EFBFBD>ж<EFBFBD>
temp_calculate_app = temp_calculate_app - wendu;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---<2D><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>
if((temp_calculate_app<0)||(temp_calculate_app>60))
{
temp_calculate_app = temp_calculate_last;//
}
else
{
#if Buxiugang_LLGS_WDFS_DN15_BXG_40KPA_GP30_32768 || Buxiugang_LLGS_WDFS_DN20_BXG_40KPA_GP30_32768
if(temp_calculate_app<(float)22.8)
{
temp_calculate_app=temp_calculate_app+((float)-0.05*temp_calculate_app+(float)1.54); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>22.8 - 0<><30>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
}
else
{
temp_calculate_app=temp_calculate_app+((float)-0.1296*temp_calculate_app+(float)3.3556); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>22.8 - 60<36><30>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
}
#endif
}
temp_calculate_last = temp_calculate_app;
// else //
// {
// temp_calculate_last = temp_calculate_app;//<2F><>¼<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>-----<2D><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>ˮʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// }
}
/*******************************************************************************
* @fun_name: TempInverseSetMsgApp
* @brief : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
******************************************************************************/
void TempInverseSetMsgApp(TempInverse_MsgTypeDef msgType)
{
if(msgType<TEMP_INVERSE_MSG_TYPE_CNT)
{
temp_inverse_struct_msg.MsgBuf[msgType] = 1;
}
}
/*******************************************************************************
* @fun_name: TempInverseCheckMsgApp
* @brief : <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>msg<EFBFBD>ӿ<EFBFBD>
* @param[out]: msg <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ0
******************************************************************************/
u8 TempInverseCheckMsgApp(TempInverse_MsgTypeDef msgType)
{
if(msgType < TEMP_INVERSE_MSG_TYPE_CNT)
{
return temp_inverse_struct_msg.MsgBuf[msgType];
}
else
{
return ERROR;
}
}
/*******************************************************************************
* @fun_name: TempInverseClearMsgApp
* @brief : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>msg<EFBFBD>ӿ<EFBFBD>
* @param[out]: 1<EFBFBD>ɹ<EFBFBD> 0ʧ<EFBFBD><EFBFBD>
******************************************************************************/
u8 TempInverseClearMsgApp(TempInverse_MsgTypeDef msgType)
{
if(msgType < TEMP_INVERSE_MSG_TYPE_CNT)
{
temp_inverse_struct_msg.MsgBuf[msgType] = 0;
return SUCCESS;
}
else
{
return ERROR;
}
}
/****************************************************************
Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>
Description:*p ָ<EFBFBD>򵥳<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ len <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> ----<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
float Filter_FOR_TOF_CHAZHI(float *p, u8 len) //
{
u8 i;
float sum=0,tof_current=0,temp_max=p[0],temp_min=p[0];
if(len>3)
{
for(i=0;i<len;i++)
{
if((p[i]>=temp_max))
{
temp_max = p[i];
}
if((p[i]<=temp_min))
{
temp_min = p[i];
}
sum += p[i];
}
tof_current = (sum-temp_min-temp_max) / (len-2);//<2F><><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD>˲<EFBFBD>ֵ
}
else //<2F><>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
{
tof_current = p[len-1];
}
return tof_current;
}
/****************************************
Function: GP30_tof_buchang_filter
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹رյ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Return: 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵУ׼ 1<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵУ׼ 2<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼ 3:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>
Others: <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
void GP30_tof_buchang_filter(u8 flag)
{
u8 i=0;
switch (flag)
{
case START_CALIBREATE:
{
gp30_tof_buchang_head = 0;//<2F><>ֵָ<D6B5><D6B8>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
gp30_tof_buchang_length = 0;//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
gp30_tof_up_chazhi_filter_value =0;//up<75>˲<EFBFBD>ֵ
gp30_tof_down_chazhi_filter_value =0;//down<77>˲<EFBFBD>ֵ
gp22_app_data.s.up_tof_dif.gp30_float = 0;//<2F><><EFBFBD><EFBFBD><E3B5A5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
gp22_app_data.s.down_tof_dif.gp30_float = 0;//<2F><><EFBFBD><EFBFBD><E3B5A5>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
for(i=0;i<MAX_TOF_BUCHANG_NUM;i++)
{
gp30_tof_up_buchang_data[i] = 0; //
gp30_tof_down_buchang_data[i]= 0; //
}
tof_caliberate_state = TOF_BUCHANG_START_SAMPLE;//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B5A5>ʱ<EFBFBD><EFBFBD><E4B2B9>ϵ<EFBFBD><CFB5>ֵ
break;
}
case STOP_CALIBREATE:
{
if(tof_caliberate_state == TOF_BUCHANG_START_SAMPLE)//<2F><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>״̬<D7B4>²<EFBFBD>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
tof_caliberate_state = TOF_BUCHANG_IDLE;
TempInverseSetMsgApp(TofCaliberateMsg);
if(0!=gp30_tof_buchang_length)
{
gp30_tof_up_chazhi_filter_value = Filter_FOR_TOF_CHAZHI(&gp30_tof_up_buchang_data[0],gp30_tof_buchang_length);
gp30_tof_down_chazhi_filter_value = Filter_FOR_TOF_CHAZHI(&gp30_tof_down_buchang_data[0],gp30_tof_buchang_length);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>в<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>[-4,4]֮<><D6AE><EFBFBD><EFBFBD>Ϊ<EFBFBD>ϸ<EFBFBD>
if(((gp30_tof_up_chazhi_filter_value)>TOF_COMPENSATION_COEFFICIENT)||((gp30_tof_down_chazhi_filter_value)>TOF_COMPENSATION_COEFFICIENT)|| \
((gp30_tof_up_chazhi_filter_value)< -TOF_COMPENSATION_COEFFICIENT)||((gp30_tof_down_chazhi_filter_value)<-TOF_COMPENSATION_COEFFICIENT))
{
gp30_tof_up_chazhi_filter_value = 0;
gp30_tof_down_chazhi_filter_value = 0;
}
gp22_app_data.s.up_tof_dif.gp30_float = gp30_tof_up_chazhi_filter_value;
gp22_app_data.s.down_tof_dif.gp30_float = gp30_tof_down_chazhi_filter_value;
}
}
break;
}
case NOT_ALLOW_CALIBREATE:
{
tof_caliberate_state = TOF_BUCHANG_IDLE;//<2F><><EFBFBD><EFBFBD>״̬
gp22_app_data.s.up_tof_dif.gp30_float = g_sample_save_data.s.up_tof_dif.gp30_float;//
gp22_app_data.s.down_tof_dif.gp30_float = g_sample_save_data.s.down_tof_dif.gp30_float;
break;
}
default:
{
break;
}
}
}
/****************************************************************
Function: GetTemperatureCalculateParameter
Description: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>up<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>down<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>up<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>down<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
u32 GetTemperatureCalculateParameter(u8 flag)
{
if(flag < TemperatureCalculateParameterTotal)
{
return Temp_Inverse_Data.Temp_Inverse[flag];
}
else
{
return ERROR;
}
}
/****************************************************************
Function: void
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> <EFBFBD>ⲿ<EFBFBD>ӿں<EFBFBD><EFBFBD><EFBFBD>
*****************************************************************/
void FanSuan_Caliberate_Timeout(void)
{
if(TRUE == FrameCheckMsgApp(MsgCaliberate))//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>־<EFBFBD><D6BE>ѯ
{
if(0==RtccCheckTimer(RTCC_TOF_CALIBERATE_TIME))//90sУ׼<D0A3><D7BC>ʱʱ<CAB1>
{
FrameClearMsgApp(MsgCaliberate);//<2F><><EFBFBD><EFBFBD><E3B5A5>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>־
GP30_tof_buchang_filter(NOT_ALLOW_CALIBREATE);
}
}
}
#endif