3275|4

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

winCE 触摸屏驱动 触摸屏原点和屏幕原点不在一个方向上 [复制链接]

进入winCE系统后,发现我的触摸屏原点和屏幕原点不在一个方向上。屏幕的原点在左上角,而触摸屏的原点在右下角。找到驱动程序源码,我把左上角和右下角的代码交换,左下角和右上角的交换。重新编译,再次进入系统后,发现貌似正常了,但是很不准,进入笔针去校正,怎么都校正不出来。我知道我这种办法是很笨的,也不是正确的。奈何刚接触嵌入式系统,对驱动程序一点都不了解。只想尽快弄一个能跑起来的系统,好好的从最基础的东西开时学习。请大家指点一下如何让它正常的跑起来,用什么方法才是正确的。先谢谢了。这里贴一下之前的代码。
extern "C" BOOL TouchDriverCalibrationPointGet(TPDC_CALIBRATION_POINT *pTCP)
{
  INT32 cDisplayWidth = pTCP->cDisplayWidth;
  INT32 cDisplayHeight = pTCP->cDisplayHeight;

  int CalibrationRadiusX = cDisplayWidth/10;
  int CalibrationRadiusY = cDisplayHeight/10;


  switch (pTCP->PointNumber)
  {
    case  0:  // Middle
      pTCP->CalibrationX = cDisplayWidth/2;
      pTCP->CalibrationY = cDisplayHeight/2;
      break;

    case  1:  // Upper Left
      pTCP->CalibrationX = CalibrationRadiusX*2;
      pTCP->CalibrationY = CalibrationRadiusY*2;
      break;

    case  2:  // Lower Left
      pTCP->CalibrationX = CalibrationRadiusX*2;
      pTCP->CalibrationY = cDisplayHeight - CalibrationRadiusY*2;
      break;

    case  3:  // Lower Right
      pTCP->CalibrationX = cDisplayWidth - CalibrationRadiusX*2;
      pTCP->CalibrationY = cDisplayHeight - CalibrationRadiusY*2;
      break;

    case  4:  // Upper Right
      pTCP->CalibrationX = cDisplayWidth - CalibrationRadiusX*2;
      pTCP->CalibrationY = CalibrationRadiusY*2;
      break;

    default:
      pTCP->CalibrationX = cDisplayWidth/2;
      pTCP->CalibrationY = cDisplayHeight/2;
      SetLastError(ERROR_INVALID_PARAMETER);
      return FALSE;
    }

  return TRUE;
}
此帖出自WindowsCE论坛

最新回复

问题解决了,原来我的触摸屏坐标系跟我们普通见到的不一样,是屏幕坐标,原点在屏幕左上角,x轴向右,y轴向下。改注册表就行了。  详情 回复 发表于 2008-8-6 18:16
点赞 关注
 

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你看看PLATFORM.reg文件里面是不是也有定义触摸屏初始化的东西。有的话那里也要修改的
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
按道理说,你需要将触摸屏的坐标转换成屏幕坐标。也就是说,你在函数DdsiTouchPanelGetPoint(..)中每次读到的X,Y坐标是基于触摸屏的,你要在把他转换成屏幕的坐标,具体公式如下:
X_lcd=(x-x_min)/(x_max-x_min)*W_lcd
Y_lcd=(y-y_min)/(y_max-y_min)*H_lcd

其中x,y为你采集到的触摸屏的x,y坐标。x_min,x_max为你的触摸屏上X轴的最小坐标值和最大坐标值,y_min,y_max为Y轴上的最小坐标值和最大坐标值。W_lcd和H_lcd为屏幕的宽和高。

在函数DdsiTouchPanelGetPoint(..)每次从ADC中读到数值为触摸屏坐标,然后利用上面的公式再转换成LCD屏幕坐标就应该可以了。
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
多谢!我试试先。找到厂家,说是要换电容。换了还是一样,再调一下看看先。
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
问题解决了,原来我的触摸屏坐标系跟我们普通见到的不一样,是屏幕坐标,原点在屏幕左上角,x轴向右,y轴向下。改注册表就行了。
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表