优化防误触代码

This commit is contained in:
sunbeam 2024-12-02 13:28:50 +08:00
parent 67a20eefe4
commit 620fa10adf

View File

@ -604,6 +604,53 @@ uint8_t RTE_Get_ACT_LD_OUT_SNS(void)
{
return 0;
}
//统计所有触发的通道数量
uint8_t GetActiveChNum (uint16_t chdata[],uint16_t thdata[],uint8_t num)
{
uint8_t i,count;
count = 0;
for (i = 0; i < num; i++)
{
if (chdata[i] > thdata[i])
{
count++;
}
}
return count;
}
//统计连续触发的通道数量
uint8_t GetContinuousChNum(uint16_t chdata[],uint16_t thdata[],uint8_t num)
{
uint8_t i,count,index;
count = 0;
index = 0;
for (i = 0; i < num; i++)
{
if (chdata[i] > thdata[i])
{
//找到第一个触发的通道
index = i;
break;
}
}
if (i == num)
{
//没有触发的通道
return count;
}
for (i = index; i < num; i++)
{
if (chdata[i] <= thdata[i])
{
//找到第一个触发的通道之后第一个不触发的通道
break;
}
}
count = i - index;
return count;
}
uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
{
@ -643,6 +690,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
th_y[3] = qtlib_key_configs_set1[11].channel_threshold;
th_y[4] = qtlib_key_configs_set1[12].channel_threshold;
Two_Finger_Y_count = GetActiveChNum(Two_Finger_Y_data,th_y,5U);
/*
Two_Finger_Y_count = 0;
for (i = 0; i < 5; i++)
{
@ -651,7 +701,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
Two_Finger_Y_count++;
}
}
*/
Y_count = GetContinuousChNum(Two_Finger_Y_data,th_y,5U);
/*
i = 0;
Y_count = 0;
while (Two_Finger_Y_data[i] <= th_y[i++] && i < 5)
@ -664,7 +716,11 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
else
Y_count++;
}
*/
Two_Finger_X_count = GetActiveChNum(Two_Finger_X_data,th_x,5U);
X_count = GetActiveChNum(Two_Finger_X_data,th_x,5U);
/*
Two_Finger_X_count = 0;
for (m = 0; m < 5; m++)
{
@ -685,7 +741,7 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
else
X_count++;
}
*/
// 触发的通道数量 //连续触发的通道数量
if ((Two_Finger_Y_count > 4 && Two_Finger_X_data[0]>th_x[0]) || Y_count != Two_Finger_Y_count
|| Two_Finger_X_count > 4 || X_count != Two_Finger_X_count)