版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。版权
Linux同时被 2 个专栏收录
43 篇文章0 订阅
订阅专栏
14 篇文章1 订阅
订阅专栏最近做了一点触摸屏的驱动工作,总结了一下,触摸屏的校准的核心其实就是坐标的变换问题。
下面将触屏校准的思路简单记录一下:
第一步,记录LCD的4个角上的Touch坐标值(不是LCD坐标值,而是Touch传出来的坐标值)
第二步,根据这4个点判断触屏的坐标原点的位置,思路如下:
1. 校准坐标值,即如果x1,x2,x3,x4中任意二者之间误差在某个值(如:20)以内,则将这二者置为一致;y坐标做一样的处理。
2. 得到最小的x,y值,找到(x,y)与4个角的哪一个重叠,如此就找到了原点。
找原点的示例代码如下:
第三步,判断触摸屏的坐标类型:
可能的坐标类型有8种,列举如下:
根据原点位置和4个点的坐标可以判断当前touch screen的坐标类型(其实就是知道触屏是怎么放的):
得到了当前触屏的坐标类型,LCD的坐标类型又是已知的(如:CS-0)就能知道3个信息:
1)X,Y坐标是否需要对调(坐标旋转)
2)X坐标是否需要折叠
3)Y坐标是否需要折叠
记住:坐标变换遵循先旋转,后折叠的计算方法
第四步,坐标值计算:
把其他坐标转换成CS-0类型的标准坐标的计算方法:
xmax,ymax就是折叠轴。
第五步,坐标伸缩:
因为LCD尺寸像素与TouchScreen的采样值是不一样的,所以需要坐标伸缩:
好了,方法大概就是这样了,当然,最后还需要一个中心点来判断校准结果是否正确。。。。