在嵌入式系统中较为常用的是四线电阻式触摸屏,通过检测
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
(,
)
函数。
该函数有两个参数,
第一个参数是触摸屏事