触摸屏调试经验谈

   //========================================================================
  //TITLE:
  //    触摸屏调试经验谈
  //AUTHOR:
  //    norains
  //DATE:
  //    Thursday 19-March-2009
  //Environment:
  //    WINDOWS CE 5.0
  //========================================================================
  
  1.校准之后依然无法正确使用
  
   这种情况最容易发生驱动和硬件上的错位,很可能是因为驱动对X+,X-(或Y+,Y-)的定义与硬件不一致造成。这种情况是无法通过wince的触摸屏校准程序来转换坐标的。唯一的方法只能在驱动层对坐标进行转换,例如:
  
  #ifdef REVERSE_X
   *x = MAX_X - *x + MIN_X;
  #endif
  
  #ifdef REVERSE_Y
   *y = MAX_Y - *y + MIN_Y;
  #endif
  
  
  2.点击时会无规律飘忽不定
  
   该问题一般因为电压不稳,可以先查一下ADC芯片在工作时,电压是否处于一种稳定的状态。
  
  
  3.点击时有规律的漂移
  
   这点和第二点不同,该点主要是出在软件方面。最直观的例子是点击explorer的图标,它会呈一定规律的移动。这种情况一般发生于触摸屏大小改变,比如从4.3'变成7'。问题根源是驱动定义的数值和实际的触摸屏采样值不一致造成。比如,之前4.3的MAX_X是4300,可能更换为7'后就变成了4600。
  
   变更触摸屏后的数值,需要实际去测量。最简单的方式,就是通过代码获取数值的范围,然后通过串口打印出来,再在所获得的数据基础上进行微调。
  
   例如:
  
   int getrawdata(int * x, int * y)
   {
     ...
    
     static unsigned int iMaxX = 0,iMinX = MAX_X,iMinY = MAX_X,iMaxY = 0;
    
     ...
   
    if(bValidate != FALSE)
    {
     iMaxX = iMaxX > r_x[ValidNum] ? iMaxX : r_x[ValidNum];
    iMaxY = iMaxY > r_y[ValidNum] ? iMaxY : r_y[ValidNum];
    iMinX = iMinX < r_x[ValidNum] ? iMinX : r_x[ValidNum];
    iMinY = iMinY < r_y[ValidNum] ? iMinY : r_y[ValidNum];
    RETAILMSG(TRUE,(TEXT("iMinX:%d,iMaxX:%d,iMinY:%d,iMaxY:%d/r/n"),iMinX,iMaxX,iMinY,iMaxY));
   }
   
   ...
   }
  
  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值