微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > ctp上下颠倒

ctp上下颠倒

时间:10-02 整理:3721RD 点击:
调试ft5206的ctp,已经调试ok了,发现上下是颠倒的,就是点触屏的最上面,响应屏上最下面的图标,x轴方向正常,请高手指点怎么修改!

mt6572的平台上

y=屏高-y

哪里改y值?

static int touch_event_handler(void *unused){
……
input_y=GTP_MAX_HEIGHT - input_y;
……
}

tpd_touchinfo这里吗?

TP_UP 和TP_DOWN

y方向调好了,x方向左右反了,怎么调,用屏幕宽度去减好像不行?

static  void tpd_down(int x, int y, int p) {

        if(y<TPD_RES_Y )               
        {
                x = ( TPD_RES_X - 1 - x );
                y = ( TPD_RES_Y - 1 - y );
        }
static  void tpd_up(int x, int y,int *count) {
         if(y<800)
         
         {
                 x = ( TPD_RES_X - 1 - x );
                 y = ( TPD_RES_Y - 1 - y );
         }

按上面的试过了吗?


方法是一样的。

  if(x<TPD_RES_X ) 不用在这个判断吗?

static int touch_event_handler(void *unused)函数中
do
         {
          mt65xx_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);
                 set_current_state(TASK_INTERRUPTIBLE);
                  wait_event_interruptible(waiter,tpd_flag!=0);
                                                 
                         tpd_flag = 0;
                         
                 set_current_state(TASK_RUNNING);
                 
                  if (tpd_touchinfo(&cinfo, &pinfo))
                  {
                    //TPD_DEBUG("point_num = %d\n",point_num);
                        TPD_DEBUG_SET_TIME;
                  
            if(point_num >0)
           {
               
               // printk("ft6306_point_num_661= %d\n",point_num);
                                if(cinfo.y[0] < 801 )
                                        tpd_down(480-cinfo.x[0], 800-cinfo.y[0], 200, cinfo.id[0]);
                                else
                                        tpd_down(cinfo.x[0], cinfo.y[0], 200, cinfo.id[0]);
                if(point_num>1)
                     {
                          #if 0
                                    tpd_down(cinfo.x[1], cinfo.y[1], 2);
                               if(point_num >2) tpd_down(cinfo.x[2], cinfo.y[2], 3);
                   #else
                       int i=1;
                       for(; i < point_num ; i ++)
                              {
                            if(cinfo.y[0] < 801 )
                                                                   tpd_down(480-cinfo.x[i], 800-cinfo.y[i], 200, cinfo.id[i]);
                                                        else
                                                                tpd_down(cinfo.x[0], cinfo.y[0], 200, cinfo.id[0]);
                       }
                   #endif
                     }
                input_sync(tpd->dev);            
加上那个运算就行了,我的是480x800的

搞定了,谢谢各位!

我在60A上遇到了,悲剧

请问没有人在60A上遇到上边这个情况呢?

请问没有人在60A上遇到上边这个情况呢?

方法是相同的。
你找到这样的地方,也用这方法就行了。
与智能机无关。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top