4.3寸电容屏触摸太灵敏的问题!!!

2019-10-11 13:47发布

做一个多级菜单的界面,但是由于电容触摸屏不知道什么原因,我按了一下触摸屏,进入下级菜单,然后下级菜单的这个位置的按钮也启动了。。。这个要怎么处理,,,急急急!就算延时也没有用啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
likunxue
2019-10-12 04:05
本帖最后由 likunxue 于 2017-3-22 21:24 编辑
ken233333 发表于 2017-3-22 20:50
如何检测是否放开呢?

做个软件计数器,多少时间内没有触摸,就发送弹起消息
如果资源不紧张,用一个定时器设置为单脉冲摸式,当有触摸发生时,检测是否是有效触摸,如果是,给定时器的计数器付一个初值,并开启计时器,在这段时间内如果手没有离开触屏,会产生重复触摸检测,每次都给定时器重置计数初值,这样,如果要触摸的时间不大于弹起的时间,定时器就不会产生中断,当没有触摸的时间大于定时器的计数值后,定时器产生中断,发送弹起消息,自动关闭定时器,

当然如果是多任务,可以开启一个任务来单独处理触摸屏事件,用消息机制的方式处理触摸的按下,弹起,长按,点按,及向下或向下滑动等!

/********************************************************************************************
函 数 名: 根据初点与终点反回滑动方向
调    用: CTP_HUADONGSHIBIE(void)
参    数: 在全局数据结构体中        
反 回 值: 0示滑动,1向上,2向下,3向左,4向右
********************************************************************************************/   
char CTP_HUADONGSHIBIE(void)
     {
     if(CTP.JiShuQi >= 2 )
       {
       int dy = CTP.my - CTP.By; //计算坐标变化值
       int dx = CTP.Bx - CTP.mx;  
       if((CD_abs(dx) > 10)||(CD_abs(dy) > 10))
         { //做滑动方向识别  
         float fa = atan2(dy,dx)*57.29578f;//得到角度  
         if(fa >= -45 && fa < 45)return CHUMOXIAOXI_YOU;     //向右
         if(fa >= 45 && fa < 135)return CHUMOXIAOXI_SHANG;   //向上
         if(fa >= -135 && fa < -45)return CHUMOXIAOXI_XIA ;  //向下  
         if((fa >= 135 && fa <= 180)||(fa >= -180 && fa < -135))return CHUMOXIAOXI_ZUO; //向左
         }
       }
     return 0;
     }       





一周热门 更多>