基于Windows CE的触摸屏驱动设计毕业论文之二.docVIP

  • 7
  • 0
  • 约1.17万字
  • 约 17页
  • 2018-10-12 发布于重庆
  • 举报

基于Windows CE的触摸屏驱动设计毕业论文之二.doc

基于Windows CE的触摸屏驱动设计毕业论文之二

第3章 REF _Ref168484495 \h 错误!未找到引用源。 河南科技大学本科毕业设计(论文) PAGE 26 触摸屏驱动接口调用分析 下面需要的是明确接口的触发条件和DDI-DDSI的调用关系。由于DDI有两种实现所以这部分需要分两个不同的情况来看待,在这里仅仅对基本的Touch驱动的情况进行简单的介绍。 与调用关系相关的还有调用时间逻辑,调用的时间逻辑上决定了公共资源初始化的次序,可用的资源的内容。因此,我们最后还需要以时间为主线。对驱动的调用情况作一个简单的分析。 TouchPanelDllEntry()该函数不是DDI接口函数,但是为Driver DLL的入口函数.也就是在驱动中第一个被调用到的函数;被调用到的DDSI函数有:DdsiTouchPanelAttach()和DdsiTouchPanelDetach(),这两个函数分别在DLL加载和卸载的最早和最晚的过程中被加载。 TouchPanelEnable()该函数在驱动的中起到初始化的作用;调用的DDSI函数为DdsiTouchPanelEnable()和DdsiTouchPanelDisable(),该函数的执行动作为:创建事件hTouchPanelEvent,hCalibrationSampleAvailable;互拆量csMutex;校准器初始化;检查并初始化所需的中断gIntrTouch,和gIntrTouchChanged;挂接事件回调函数;关联中断gIntrTouch,gIntrTouchChanged到事件hTouchPanelEvent;创建ISR TouchPanelpISR,并设置ISR的优先级。 TouchPanelDisable()该函数与上面提到的TouchPanelEnable()执行条件相反,提供停用设备的能力;被调用到的DDSI函数有:DdsiTouchPanelDisable()该函数的执行动作为:关闭ISR;停止中断;注销事件及其他同步手段。 TouchPanelPowerHandler()该函数在进入或退出PowerOff状态时产生,由于该内容仅仅与PDD相关内容上仅仅是调用,被调用到的DDSI函数有:DdsiTouchPanelPowerHandler()。 TouchPanelpISR()该函数在也不是DDI的接口。用于等待和处理触摸屏时间中断,为整个驱动程序提供唯一的事件源;调用到的DDSI函数为DdsiTouchPanelGetPoint(),该函数实现的内容为:等待循环,用于接收Touch中断消息,并构成函数的主体;通过DDSI获取当前触摸屏位置和获取信息;. 在获取有效数据且在校准状态下,收集/递交按下的位置信息;在正常状态下,校准数据(如果PDD已经校准,则无需此步),并检查校准后数据的有效性;最后调用由GWES传入的回调函数,提交位置信息和状态信息。 TouchPanelGetDeviceCaps()该函数为DDI接口函数。用于查询触摸屏设备支持的具体功能;调用到的DDSI函数为DdsiTouchPanelGetDeviceCaps()该函数动作为通过DDSI函数查询相应的信息;当查询屏幕坐标信息时保存屏幕信息,供后面程序映射屏幕坐标。 TouchPanelSetMode()该函数同样为DDI接口函数,用于设置触摸屏的工作模式;调用的PDD函数为DdsiTouchPanelSetMode(),该函数的动作为当设置IST优先级时直接通过API完成;直接将其他设置转入PDD完成。 TouchPanelReadCalibrationPoint()该函数同样为DDI接口函数,在效验交互的过程中读取相应的输入值。直到ISR获取相应的tip事件后,通过传入的指针返回位置信息。 TouchPanelReadCalibrationAbort()该函数在效验取消的时候被调用。仅仅设置状态位和事件后返回。 TouchPanelSetCalibration()该函数为DDI接口函数,为校准器的实现函数之一。该函数用于产生校准参数。在校准UI结束校准动作后将按键数据送至本函数,计算基准参数;该函数没有所需要的DDSI.;执行的动作并不为逻辑流控,而是一套数学算法。 驱动的加载 WINCE通过Platform Builder采用自己编写的sources文件(类似LINUX下的MAKEFILE)编译驱动和内核的IDE,还需要一份原始的BSP, 把BSP克隆出来,在BSP里修改或添加新的驱动, 最后用PB编译成DLL并包含到NK.BIN里, 再下载到开发板上运行。通过修改platform.reg, 在 HKEY_LOCAL_MACHINE\Drivers\下面建立子键, 这样在启动时device.exe就会调用我所编写

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档