WinCETouchPanel驱动详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WinCEWinCE1WinCE Touch Panel驱动详解

WinCE中的Touch Panel驱动是由GWES模块来管理的,Touch Panel驱动接收用户的触摸信息,并将其转换为屏幕上的坐标信息,传给GWES模块。在WinCE中,Touch Panel驱动是分层的,分为MDD层和PDD层,这和其他WinCE设备驱动是一样的。MDD层由微软提供,用户只需要实现MDD和PDD层间的 DDSI函数就可以了。如图

WinCE中的GWES模块负责加载和管理Touch Panel驱动,Touch Panel的MDD

层向上提供DDI接口,PDD层是针对硬件的实现,对MDD层提供DDSI接口。

1 Touch Panel驱动中的数据结构

(1) TOUCH_PANEL_SAMPLE_FLAGS

用于描述一个采样点的信息,这些信息被定义在一个枚举结构中:

enum enumTouchPanelSampleFlags {

TouchSampleValidFlag = 0x01,

TouchSampleDownFlag = 0x02,

TouchSampleIsCalibratedFlag = 0x04,

TouchSamplePreviousDownFlag = 0x08,

TouchSampleIgnore = 0x10,

TouchSampleMouse = 0x40000000

};

TouchSampleValidFlag:一个有效的采样值

TouchSampleDownFlag:第一次按触摸屏时,返回该flag

TouchSampleIsCalibratedFlag:采样的x和y坐标值不需要再被校验

TouchSamplePreviousDownFlag:表示上一次采样状态是按在触摸屏上

TouchSampleIgnore:忽略这次采样值

TouchSampleMouse:预留

(2) TPDC_CALIBRATION_POINT

用于描述一个校验点的相关信息,结构如下:

struct TPDC_CALIBRATION_POINT {

INT PointNumber;

INT cDisplayWidth;

INT cDisplayHeight;

INT CalibrationX;

INT CalibrationY;

};

PointNumber:校验点索引值,用于描述校验点在LCD上的位置

0:中间

1:左上

2:左下

3:右下

4:右上

cDisplayWidth:显示的宽度

cDisplayHeight:显示的高度

CalibrationX:校验点的x坐标值

CalibrationY:校验点的y坐标值

(3) TPDC_CALIBRATION_POINT_COUNT

用于描述需要校验的点的个数,结构如下:

struct TPDC_CALIBRATION_POINT_COUNT {

DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags;

INT cCalibrationPoints;

};

flags:一般为0

cCalibrationPoints:需要校验的点的个数,一般是5

(4) gIntrTouch和gIntrTouchChanged

这是两个被MDD层用到的中断,需要在PDD层中定义,如下:

DWORD gIntrTouch = SYSINTR_NOP;

DWORD gIntrTouchChanged = SYSINTR_NOP;

gIntrTouch用于描述触摸屏中断,要和硬件的触摸屏中断相关联。

gIntrTouchChanged用于在触摸屏按下后,每隔一段时间进行一次采样,应该和硬件的一个定时器中断相关联。

这两个值应该在DdsiTouchPanelEnable(..)函数中和硬件中断关联,并在函数DdsiTouchPanelGetPoint(..)中根据情况清除相应的中断。

2 MDD层API

MDD为上层导出所需的Touch Panel驱动接口函数,上层通过这些函数可以完成对Touch Panel的操作,下面会介绍这些函数的功能。

(1) BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback):

使能Touch Panel设备,用于初始化Touch Panel。

pfnCallback:指向处理Touch Panel事件的回调函数

(2) Void TouchPanelDisable(void):

禁用Touch Panel设备。

(3) BOOL TouchPanelGetDeviceCaps(INT iIndex, LPVOID lpOutput ):

获得Touch Panel设备的相关信息。

iIndex:索引值

TPDC_SAMPLE_RATE_ID:采样率信息

TPDC_CALIBRATION_POINT_COUNT_ID:采样点个数信息

TPDC_CALIBRATION_POINT_ID:采样点坐标信息

lpOutput:指向一个内存区域,用于存放获得的相关信息

(4) VOID TouchPanelCalibrateAPoint(INT32 UncalX, INT32 UncalY, INT32* pCalX, INT32* pCalY):

将输入的未经过校验的坐标信息转换成校验后的坐标信息。

UncalX:输入的X坐标

相关文档
最新文档