战舰的触摸按键实验中,TPAD_Scan函数中,有一个变量keyen不知道有什么用,求助

2019-07-21 07:51发布

[mw_shl_code=c,true]//扫描触摸按键 //mode:0,不支持连续触发(按下一次必须松开才能按下一次);1,支持连续触发(可以一直按下) //返回值:0,没有按下;1,有按下; #define TPAD_GATE_VAL 100 //触摸的门限值,也就是必须大于tpad_default_val+TPAD_GATE_VAL,才认为是有效触摸. u8 TPAD_Scan(u8 mode) { static u8 keyen=0; //0,可以开始检测;>0,还不能开始检测 u8 res=0; u8 sample=3; //默认采样次数为3次 u16 rval; if(mode) { sample=6; //支持连按的时候,设置采样次数为6次 keyen=0; //支持连按 } rval=TPAD_Get_MaxVal(sample); if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于tpad_default_val+TPAD_GATE_VAL,有效 { if((keyen==0)&&rval>(tpad_default_val+TPAD_GATE_VAL))res=1; //keyen==0,有效 //printf("r:%d ",rval); keyen=3; //至少要再过3次之后才能按键有效 } if(keyen)keyen--; return res; }[/mw_shl_code] 这段代码来自战舰的触摸按键实验,其中有一个变量keyen,首先定义static u8 keyen=0;
进入
if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于tpad_default_val+TPAD_GATE_VAL,有效
{  
if((keyen==0)&&rval>(tpad_default_val+TPAD_GATE_VAL))res=1; //keyen==0,有效 
//printf("r:%d ",rval);           
keyen=3; //至少要再过3次之后才能按键有效   


然后这个keyen==3 还有后面的keyen-- 没啥用啊,求解释,论坛也搜索了,没找到有解释这个keyen变量的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
长昵称不被占用
2019-07-22 07:08
烟酒不沾 发表于 2015-12-19 21:13
这个变量作用是触摸按键不支持连续触摸功能时,在一次触摸有效后必须松开后程序运行keyen——次数后再次触 ...

把代码稍作改变,之后就会达到和按键试验几乎相同的效果了[mw_shl_code=c,true]#define TPAD_GATE_VAL 3000

u8 TPAD_Scan(u8 mode)
{
        static u8 keyen=0; //0,可以开始检测;>0,还不能开始检测
        u8 res=0;
        u8 sample=3; //默认采样次数为 3 次
        u16 rval;
        if(mode)
        {
                sample=6; //支持连按的时候,设置采样次数为 6 次
                keyen=0;  //支持连按
        }
        rval=TPAD_Get_MaxVal(sample);
        if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于 tpad_default_val+TPAD_GATE_VAL,有效
        {
                if(keyen==0)res=1; //keyen==0,有效
                printf("r:%d ",rval);
                keyen=3; //至少要再过 3 次之后才能按键有效
        }
//        if(keyen)keyen--;
        if(rval<(200)) keyen=0;
        return res;
}[/mw_shl_code]

一周热门 更多>