作者: Multitouch 时刻:2013-07-12 源于:EEPW电子产品世界总点击:
【导读】:为了便利了解,咱们首要引进2个概念,坐标和逻辑坐标。物理坐标便是接触屏上点的实践方位,咱们一般以液晶上点的个数来衡量。逻辑坐标便是接触屏上这一点被接触时A/D转化后的坐标值。
为了便利了解,咱们首要引进2个概念,坐标和逻辑坐标。物理坐标便是接触屏上点的实践方位,咱们一般以液晶上点的个数来衡量。逻辑坐标便是接触屏上这一点被接触时A/D转化后的坐标值。咱们假定液晶最左下角为坐标轴原点A,咱们在液晶上再任取一点B(十字线穿插中心),B在X方向间隔A 10个点,在Y方向间隔A 20个点,那么咱们就说液晶上B点所正对的解摸屏上这一点的物理坐标为(10,20)。假设咱们接触这一点时得到的X向A/D转化值为100,Y向A/D,转化值为200,咱们就说这一点的逻辑坐标为(100,200)。
由于电阻式接触屏的电压成线性均匀分布,那么A/D转化后的坐标也成线性。假设咱们将液晶最左下角点对应的解摸屏上的点定为物理坐标原点A其物理坐标记为(XA=0,YA=0)其逻辑坐标记为(XLA,YLA)(纷歧定为0)。那么接触屏上恣意一点B的逻辑坐标可表达为:
其间KX、KY别离为接触屏X方向和Y方向的因子系数,这就像绷簧相同(咱们知道绷簧也是线性的),拉力与绷簧伸长正比。KX、KY或许为正,也或许为负,这依据详细接触屏装置的方向和特性。每个液晶接触屏,咱们也应该独自核算每一个接触屏的K系数。
在液晶上固定的方位显现五个点,由于是固定的方位,所以这五个点的物理坐标是预知的。这五个点不该太靠边,由于边际点对应的接触屏线) 首要在ABCDE对应的方位逐渐用尖状物接触,得到五个点的逻辑坐标。
(2) 别离比较A 和C、B和D的横坐标,假设差值不在答应规模(你自己规则一个即可,比方5),则重复操作(1)(2)步。
(3) 别离比较A和B、C和D 的纵坐标,假设差值不在答应规模(你自己规则一个即可,比方5),则重复操作(1)(2)(3)步。
(6) 将C点逻辑坐标作为基坐标,依据式2-2则接触屏上恣意一点F逻辑坐标与基坐标的关系为:
(7) 用公式2-4求出E点逻辑坐标,并与(1)步得到的E点坐标比较,假设差值不在答应规模(你自己规则一个即可,比方5),则重复操作以上过程直到满意要求。
咱们关怀的是,咱们怎么经过用户接触恣意一点得到的逻辑坐标,来判别这一点是否在液晶的某个特定显现区内。一般咱们在液晶的特定区域供给一些按钮(Button)式的矩形区域,以便用户操作,所以这个区域所对应接触屏区域的逻辑坐标最小点(咱们假定为这个区域的左下角)和逻辑坐标最大点(咱们假定为这个区域的右上角)两点的物坐标是预知的。假设咱们事先将这两点的物理坐标存在程序里,咱们再利用已核算并存储好的基坐标和k系数,用公式2-5求出接触恣意一点的物理坐标,那么,接触恣意一点得到的物理坐标只需在这两点规模内,咱们就能够断定用户接触的方位,正是液晶上Button的矩形区域内。假设液晶上有若干个Button区域,那么咱们将每个区域逻辑坐标最大点和最小点的物理坐标存成数组或表的方式,运用时选用公式2-5核算出接触点的物理坐标,再从存储设备中提取出区域的两点物理坐标查表即可断定用户接触的区域。
作为用户交互的操作界面,不行能只显现一个Button,也不行能在不同屏总是在同一个方位显现Button,那么怎样才能做一个一致的数据表,以满意林林总总的需求呢?在这里笔者仅讲一个网络法区分区域的办法,这个办法其实很简单,便是编程人员先确认一个最小区域的Button,再以些为最小单位将屏幕区分红网格状,如图3-1,一个Button或许包括一个或几个最小单元。咱们将每个单元编上号,并将每个单元逻辑坐标最大点和最小点的物理坐标存成数组或表的方式,编程人员只需知道每一屏的每一个Button是由哪几个单元组成就能够判别接触了哪一个Button.
咱们知道,接触屏的精度是由A/D转化的位数决议的,有8位、9位、10位或更多,一般来说,精度越高越好,可是像LCD、CRT这样的设备上装置的接触屏并纷歧定需求精度太高的A/D的转器材,LCD、CRT都有自己固定的分辨率,A/D转化器材的精度高出LCD、CRT的分辨率基本是无意义的,反而为单片机核算添加了费事。例如一个320点×240点的LCD,咱们最多只需求1/320的精度就够了,那么最多也就需求一个9位的A/D转化。事实上,咱们也纷歧定需求1/320的精度,在实践运用中,每一个Button都是一个较大的矩形区域,包括若干个点,任两个Button的间隔也都很大,这样咱们就底子用不了这样高的精度,在编程时,咱们能够将A/D转的成果进行必定的右移位来下降转化精度,以求节约单片机的变量资源,添加代码履行功率,这样做有或许好几个点是同一个逻辑坐标,可是对咱们的运用毫无影响。