TCC TP调试心得

原创:常青

 

现在的嵌入式产品,基本上都用到TouchPanel ,希望我的一点经验会带给大家一点帮助。我这里以TELECHIP7901为例。

 

一、确定X,Y是否镜像:在屏幕上任意拖动出一个矩形虚线框,然后随意上下左右拖动,这时看虚框是否根随触摸笔移动,如果虚线框能跟随触摸笔动,说明X+,X-,Y+,Y-四线极性是接对了。
X,Y坐标的算方法如下:
        posX = (MAX_X-*x)*iScreenWidth/(MAX_X-MIN_X);
        posY = (*y-MIN_Y)*iScreenHeight/(MAX_Y-MIN_Y);
如果触摸笔向上而虚框向下移动,说明Y+,跟Y-接反了,同样如果触摸笔向左而虚框向右移动,说明X+,跟X-接反了。对于这个情况软件可作如下处理,在上面的算法之前,加入如下的算式:
   *x = (MIN_X-MAX_X)*(*x-MIN_X)/(MAX_X - MIN_X)+MAX_X;X接反的时候加
    *y = (MIN_Y-MAX_Y)*(*y-MIN_Y)/(MAX_Y - MIN_Y)+MAX_Y;Y接反的时候加
这四个算式可以组合出四种情况,这要看你具体是哪一种情况了。

 

二、确定触摸屏的边界值:

在程序里面应该有个这样的定义,这个就是设触摸屏的边界。
#define MAX_X   3940//3940
#define MIN_X          93
#define MAX_Y         3860//3870ww
#define MIN_Y          200 //


还是在屏幕上用触摸笔拖出一个虚线框,分两类情况:
(1)确定最大值:从左上到右下拖动,然后按住不要松,这时看虚线框跟触摸笔的位置,(假设虚线框的右下顶点坐标为(X1,Y1)触摸笔的坐标为(X,Y)),如果X > X1,Y > Y1 说明MAX_X,MAX_Y过大了。要减小MAX_X,MAX_Y。这里要多试几次。(如图一)


(2)确定最小值:从右下到左上拖动,然后按住不要松,这时看虚线框跟触摸笔的位置,(假设虚线框的右下顶点坐标为(X1,Y1)触摸笔的坐标为(X,Y)),如果X < X1,Y ><Y1 说明MIN_X,MIN_Y小了。要增大MIN_X,MIN_Y。这里要多试几次。(如图一)

如下图所示:

三、去掉或改变TP校屏上的字:

找到PUBLIC/COMMON/OAK/DRIVERS/CALIBRUI/calibrui.cpp
TouchCalibrateDrawScreenText()函数里面的的ExtTextOut()注释掉。    
//        Draw this line.
                ExtTextOut(
                                  hdc,
                                  xText, yText,
                                  NULL, NULL,         //  rectangle options
                                  buf, cChars,
                                  NULL);
                }
注释掉。
或者将
IdStringBase = 0;这里的取值是一个资源文件的ID。可以自己定义的。

注意如果将TouchCalibrateDrawScreenText()整个函数都注掉的话,屏幕就没有白色了,十字架直接显示在背景图片上,这里我没有试过自已加背景图片,不过有了这个思路,应该实现起来不难。

 

四、让触摸屏校屏程序校完后自动退出。

有些人觉得每次校完屏后还要点一下屏然后再退出太麻烦,想校完后直接退出。可以在TouchCalibrateUI_WaitForConfirmation()函数里面做修改,可以在函数开头加上: TouchCalibrateUI_Done(TCS_ACCEPTED);意思就是不需要做等待,直接接受校屏参数。

五、保存校屏注册表值:

校屏完成之后,其计算出来的值可以通过注册表查看到,

通过Microsoft ActiveSync工具连接目标硬件平台,然后在PB的tools菜单中点击“Remote Registry Editor”以运行远程注册表编辑工具查看WinCE的注册表内容。
在注册表编辑器中打开[HKEY_LOCAL_MACHINE/Hardware/DeviceMap/Touch]键,就可以看到触摸屏的校验数值,

“CalibrationData”键值就是触摸屏的校验值,将这个值复制一下,然后打开PB的平台的project.reg 文件,加入如下的触摸屏注册信息,其中"CalibrationData"=之后的值就是上面我们复制的触摸屏校验值。 [HKEY_LOCAL_MACHINE/Hardware/DeviceMap/Touch]
     "CalibrationData"="1484,1168 584,536 568,1820 2356,1812 2356,488"

添加完毕后,保存, 重新编译平台,生成新的映像文件,运行映像,就可以看到触摸屏校验信息已经在注册表里了。

另外要加一点,如果你的系统不是HIVE注册表,以后校屏的数据将不能被保存。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值