当前位置:主页 > 系统教程 > Win8教程 >
‘南宫28圈官网’WinCE7.0下的触摸屏驱动
  • 时间:2024-09-08
  • 浏览:

本文摘要:在嵌入式系统中更为常用的是四线电阻式触摸屏,通过检测x轴和y轴的电压,来确认触点的方位。一般触摸屏系统结构为:触摸屏-触摸屏控制器-处理器。 wince7下触摸屏的驱动分成PDD层(坐落于bsp目录中)和MDD层(坐落于public目录中)。PDD层和MDD层通过DDSI接口函数相连,MDD层和上层通过DDI函数相连。其中MDD层一般需要改动,我们只需改动PDD层的代码。

南宫28圈官网

在嵌入式系统中更为常用的是四线电阻式触摸屏,通过检测x轴和y轴的电压,来确认触点的方位。一般触摸屏系统结构为:触摸屏-触摸屏控制器-处理器。

  wince7下触摸屏的驱动分成PDD层(坐落于bsp目录中)和MDD层(坐落于public目录中)。PDD层和MDD层通过DDSI接口函数相连,MDD层和上层通过DDI函数相连。其中MDD层一般需要改动,我们只需改动PDD层的代码。

  比如我的bsp目录下触摸屏驱动中的touchscreenpdd.cpp文件中主要有如下函数:  TchPdd_Init()  TchPdd_Ioctl()  PDDTouchIST()  PDDInitializeHardware()  PDDTouchPanelEnable()  PDDTouchPanelGetPoint()  PDDCalibrationThread()  PDDStartCalibrationThread()  PDDDeInitailzeHardware()  PDDTouchPanelDisable()  其中TchPdd结尾的函数就是DDSI函数,PDD结尾的函数就是PDD层的函数。MDD层会年所调用TchPdd_Init()函数,该函数不会将DDSI函数以函数指针的形式传送给MDD层,并调用PDD层的函数展开适当的初始化,如调用PDDInitializeHardware()来初始化SPI,GPIO(我的触摸屏控制器用于SPI模块),调用PDDTouchPanelEnable()来创立触摸屏事件,创立IST线程等。

  IST线程函数PDDTouchIST()中会有一个while循环,如下图右图:  循环中有一个WaitForSingleObject(,)函数。该函数有两个参数,第一个参数是触摸屏事件的句柄,第二个参数用来设置等候超时的时间。IST线程继续执行到这个函数不会等候触摸屏事件再次发生或者超时。当这两种情况之一再次发生后,线程就不会往下继续执行,并调用PDDTouchPanelGetPoint()函数来加载触点座标。

在触摸屏事件再次发生之前,超时时间不会设置为无限等候。只有当触摸屏事件再次发生后(触点按下)才不会开始读书座标,并辨别否还是按下状态,如果还是按下状态,那么就不会设置超时时间为某一个受限值,这样当WaitForSingleObject等待时间多达这个值后又不会去加载座标。这种机制就能确保我们能加载到触点移动的轨迹。  当然要想要用于触摸屏事件,必需要有一个触摸屏的中断(当触点按下,这个中断再次发生),并将这个中断和触摸屏事件关联一起,这样中断再次发生后,才不会启动时触摸屏事件。

  还有一种方法:不用于中断,必要使用轮询方式来加载座标,通过加载坐标值的合法性来要求否有触点按下。这种方式下,WaitForSingleObject的第一个参数就不起作用,且第二个参数必需另设为一个受限值,这个值就要求来轮询的频率。


本文关键词:‘,南宫,28圈,官网,’,WinCE7.0,下,的,南宫28圈官网,触摸屏,在

本文来源:南宫28圈官网-www.kubernetek.com

相关推荐