OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6458|回复: 9

触摸屏核心问题!

[复制链接]

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2012-6-16
在线时间
0 小时
发表于 2012-9-28 09:55:11 | 显示全部楼层 |阅读模式
TP触摸屏坐标和LCD像素坐标的转换关系式如下:

LCDx=xfac*Px+xoff;
LCDy=yfac*Py+yoff;

那位兄台可以解释一下关系式是怎样得来?

万分感激!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-28 09:57:35 | 显示全部楼层
回复【楼主位】yyingj:
---------------------------------
因为电阻触摸的坐标与LCD坐标之间是线性对应的关系.所以根据线性方程求解即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-28 09:57:55 | 显示全部楼层
线性方程:
y=ax+b
这个不用解释吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2012-6-16
在线时间
0 小时
 楼主| 发表于 2012-9-28 10:11:00 | 显示全部楼层
那为什么电阻触摸屏坐标与LCD坐标之间是线性对应的关系??
回复 支持 反对

使用道具 举报

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2012-6-16
在线时间
0 小时
 楼主| 发表于 2012-9-28 10:14:27 | 显示全部楼层
if(abs(Pen_Point.xfac)>2||abs(Pen_Point.yfac)>2)//触屏和预设的相反了.???

另一个贴:不同的TP,其x,y轴方向可能不一样,有的是xy,有的是yx,所以需要做一个判断.以适应不同的TP. 

这个线性关系是怎样的?比喻a,b的取值范围??
要去上课了,先下线。谢谢!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-28 10:56:21 | 显示全部楼层
回复【4楼】yyingj:
---------------------------------
搞个二次关系的触摸屏给你,我看你怎么用
y=ax?+bx+c
那真是奇葩了...

x,y某些情况是需要x,y判决,单是绝大部分情况不需要,具体看我们的代码,我们新版本代码加入了这个的.也就是4次校准之后会需要再多一次校准.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2012-9-11
在线时间
4 小时
发表于 2012-9-28 14:32:25 | 显示全部楼层
 

1)触摸屏为什么需要校正?
    
触摸屏与LCD显示屏是两个不同的物理器件。LCD处理的像素,例如我们通常所说的分辨率是600x800,实际就是指每行的宽度是600个像素,高度是800个像素,而触摸屏处理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。两者之间需要一定的转换。
    
其次, 在安装触摸屏时,不可避免的存在着一定的误差,如旋转,平移的,这同样需要校正解决。
    
再次,电阻式触摸屏的材料本身有差异而且随着时间的推移,其参数也会有所变化,因此需要经常性的校正(电容式触摸屏只需要一次校正即可,这是由两者不同的材料原理造成的)
 
2)如何校正?
    
触摸屏的校正过程一般为: 依次在屏幕的几个不同位置显示某种标记(如"+", 用触摸笔点击这些标记, 完成校正。
    
如果PT(x, y)表示触摸屏上的一个点, PL(x, y)表示LCD上的一个点,校正的结果就是得到一个转换矩阵M, 使PL(x, y) = M·PT(x, y)
 (3)
校正原理
    
我们知道二维几何变换包含三种平移、旋转和缩放。这三者的矩阵表示为:
 
平移MT

 缩放MS

 
 
旋转MR
 所以  PL =MR·MT·MS· PT, 将这个公式展开,其结果为:
 
    
在上面的公式中,LCD上的坐标(XL YL)和触摸屏上的坐标(XT YT)是已知的,而其他的则是我们需要求的:θ, Sy, Sx, Ty, Tx共有5个变量,至少需要五个方程,因为每组点坐标(PL, PT)可以得到两个方程,因此我们需要采集三组点坐标。但是上面的方程涉及三角函数,运算复杂,我们可以进一步简化为:
 
 
变量虽然多了一个,但是解题过程简单多了,更适合计算机计算,而且采集点的数量仍然为3组。
    
假设LCD三个点的坐标为(XL1 YL1),(XL2 YL2),(XL2 YL2, 对应触摸屏上的三个点是(XT1 YT1),(XT2 YT2)。(XT3 YT3, 则联立两个方程组为:
 
    这样,触摸屏的校正实际上就是解上面的方程组,得到6个系数:ABCDEF。而上面方程组按照克莱姆法则解即可。
   
在得到6个系数后,以后通过触摸屏得到的所有坐标,带入公式(1)中就可以得到LCD上以像素表示的坐标。
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2012-9-11
在线时间
4 小时
发表于 2012-9-28 14:40:49 | 显示全部楼层
回复【楼主位】yyingj:
TP触摸屏坐标和LCD像素坐标的转换关系式如下:
LCDx=xfac*Px+xoff;
LCDy=yfac*Py+yoff;那位兄台可以解释一下关系式是怎样得来?万分感激!
---------------------------------

这个关系式只考虑了平移和缩放,所以X、y互不相关。xfac是缩放的因子,xoff是平移因子。如果考虑旋转,x、y就有关系了。但还是一次关系。
LCDx=xxfac*Px+xyfac*Py+xoff;
LCDy=yyfac*Py+yxfac*Px+yoff;
另外其实3个点就可以校准了。
回复 支持 反对

使用道具 举报

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2012-6-16
在线时间
0 小时
 楼主| 发表于 2012-9-28 15:45:42 | 显示全部楼层
谢谢楼上两位。
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-9-7 19:58:38 | 显示全部楼层
回复【7楼】TYZZD:
---------------------------------
你的公式不见啦
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 13:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表