触摸屏驱动程序的设计和实现
WinCE触摸屏驱动程序是采用中断方式对触摸笔的按下状态进行检测,当检测到触摸笔按下时产生的中断,就会触发一个事件通知一个工作线程开始采集数据。同时,驱动将打开一个硬件定时器,只要检测到触摸笔仍然在按下状态,将定时触发同一个事件通知这个工作线程继续采集数据,直到触摸笔抬起后关闭该定时器。简单的说,就是驱动程序会同时采用触摸屏中断和定时器中断这两个中断源。目的在于不仅可以监控触摸笔按下和抬起状态,而且可以检测触摸笔按下时的拖动轨迹。触摸屏中断的两个逻辑中断分别是:SYSINTR_TOUCH是用于触摸笔点击触摸屏时产生相应的中断;SYSINTR_TOUCH_CHANGE则用于触摸笔离开时产生相应的中断。
(4)获得稳定的、去抖动的测量数据
在进行触摸屏程序开发时,一定要注意原始的触摸测量数据经常会有一些噪声和偏差,这是正常的。一般来说,只有用户紧紧压住电阻触摸屏才能得到两个连续的读数,然而我们会发现当触控笔或手指按上或离开触摸屏时,读数的变化要比保持稳定压力时大得多。这是因为用户是以机械的方式连通二个平面电阻-触摸层,当用户按压和释放触摸屏时,在很短的一段时间内触摸屏的电气连接均处于临界状态。这时,我们需要丢弃这些读数直到系统稳定下来,否则提交的触摸位置读数会产生大幅跳跃,导致严重的失真或触摸位置漂移。
这时就需要进行折衷考虑,这也是触摸屏驱动设计的关键所在。如果我们要求较窄的稳定窗口,那么驱动程序将无法跟踪快速的“拖曳”操作;如果加宽稳定窗口,就可能面临着许多风险,这些风险包括接收到不精确的触摸数据,或上面描述处于临界状态的层连接结果。这时,就需要通过实验来确定适合系统的最佳值。