新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式触摸屏驱动程序的研究与开

基于嵌入式触摸屏驱动程序的研究与开

作者: 时间:2012-03-21 来源:网络 收藏

4.2 设置中断判断被触摸情况

基本的硬件进行正确设置完成后,接下来就要采用一种可靠的方法来判断屏幕是否被触摸了。在其驱动中采用了两个逻辑中断:

1.SYSINTR_TOUCH,用于触摸笔点击时产生相应的中断;

2.SYSINTR_TOUCH_CHANGE,用于触摸笔离开时产生相应的中断。

该过程有几个判断要点:检查屏幕是否被触摸;采集每个轴上的多个原始数据用于以后的过滤;检查屏幕是否仍在被触摸。

4.3 读取数据并去抖

当屏幕被触摸时,我们首先读取X轴和Y轴的原始数据并进行去抖处理,然后判断得到的数据是否稳定,如果不稳定,继续读取数据并去抖,直到得到稳定的数据为止。读取触摸点的坐标是由DdsiTouchPanalGetPoint()函数实现的。部分实现代码如下:

DdsiTouchPanelGetPoint(TOUCH_PANEL_SAMPLE_FLAGS *pTipStateFlags, INT *pUncalX,INT *pUncalY)//取得样本点信息

{

......

if(status == TOUCH_PEN_UP) {......}//设置中断

else if(status == TOUCH_PEN_DOWN){......}//设置中断

......

}

4.4校准

完成前面繁琐的工作后,驱动程序的各种功能就都已经准备就绪了,现在就可以实际触摸屏幕了。电阻触摸屏在操作前需要校准。这需要一些参考值,以便我们能够将接收到的原始模数转换值转换成高层软件所需的屏幕像素坐标。一般情况下我们只需要测得两组原始数据(X和Y),即在屏幕对角处读取的最小值和最大值,由于许多电阻触摸屏存在着显著的非线性,所以如果在最大值和最小值之间简单的插入几个位置数值会导致驱动程序非常不精确。通常触摸驱动程序在一启动时就运行校准程序,但要记住一定要把这些参考值保存起来,以免我们在以后的加电启动期间再做校准。校正后的坐标必须保证报告到最近的1/4像素。下面是校正算法代码:

TouchPanelEnable(...); //启动面板

TouchPanelGetDeviceCaps(...); //询问校正点数

for(i=0;i#points;i++)

{

TouchPanelGetDeviceCaps(...); //取校正坐标

TouchPanelReadCalibrationPoint(...); //取校正数据

}

TouchPanelSetCalibration(...); //计算校正系数

做出准确判断的唯一途径就是进行大量反复的测试。经过大量试验表明,选取的校准点越多,内插窗口的间距越小,所得到的校准精度就越高。校准完成之后,便可以开始正常的操作了,并开始向更高层的软件发送触摸事件。最后一步,我们利用Platform Builder把编制好的驱动程序加载到WinCE内核中,然后烧录到目标设备。启动后我们就会得到一个友好的触摸屏界面,就能检验该驱动程序是否成功了。

5 结束语

设计Windows CE驱动程序时,首先要选好驱动程序的类型。本文选取的是分层的本机设备驱动,开发的效率比较高,其它的驱动程序可以根据实际情况选择合适的驱动模型。此外,Windows CE的驱动程序可以针对不同的硬件平台进行移植,只要掌握了上述核心思想就能成功实现移植。

参考文献:

[1] 张冬泉等.Windows CE实用开发技术[M].北京:电子工业出版社,2006年.

[2] Samsung Corp. User's ManualX[Z].

[3] 库少平,方俊.基于的Windows CE 5.0 BSP移植.微计算机信息,2008 2-2:116-118.


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭