在嵌入式系统中较为常用的是四线电阻式触摸屏,通过检测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的第一个参数就不起作用,且第二个参数必须设为一个有限值,这个值就决定来轮询的频率。

wince7 屏幕控制_技术干货:WinCE 7.0下的触摸屏驱动相关推荐

  1. wince7 屏幕控制_触摸屏控制方法,个人总结(欢迎拍砖,但不要打脸)

    最近几天研究了下触摸屏,发现也并不像感觉中的那么神秘. 本人用的触摸屏方案是 4线电阻屏+xpt2046(这个和ADS7843完全一样). 控制过程主要分一下几步: 1,读数--这里读出来的是触摸屏控 ...

  2. wince7 屏幕控制_WinCE中触摸屏驱动开发详解

    本文向您介绍WinCE中采用分层驱动程序结构实现的触摸屏驱动,包括对触摸屏驱动模型的讲解.触摸屏驱动程序的实现及接口实现等知识. 1.触摸屏驱动程序的模型 1.1分层触摸屏驱动程序结构 本触摸屏驱动采 ...

  3. 技术干货 | jsAPI 方式下的导航栏的动态化修改

    简介:操作指导:通过 jsAPI 实现导航栏的动态修改. 很多开发同学在接入 H5 容器后都会对容器的导航栏进行深度定制,除了 Native 的定制化之外,还有很多场景是使用到 jsAPI 的方式,通 ...

  4. UT2416 wince 6.0 调试LCD35 触摸驱动参考

    UT2416 wince6.0 调试LCD35 触摸屏驱动参考 硬件平台:UT2416BV02  [友坚恒天ARM开发平台] 软件平台:wince6.0           [友坚恒天wince6.0 ...

  5. 反arp攻击软件_技术干货透析中间人攻击

    作者:甜橙安全团队 免责声明;下述内容用仅用于技术研究与探讨,禁止任何非法利用,由此造成的后果概不负责,如有侵权请联系版主,我们会及时处理. 欢迎各位添加微信号:qinchang_198231     ...

  6. python 自动化运维 读取交换机数据_技术干货|数据中心自动化运维技术探索之交换机零配置上线...

    近几年来,互联网行业处于一个快速发展的快车道,一个又一个风口不断地涌向周边行业.共享单车的出现解决了人们出行***一公里的问题:新零售概念的提出,无人货柜的出现,更是将线上和线下的数据打通,优化了人们 ...

  7. 数栈技术干货:从0到1实现谷歌插件开发探索及应用

    本文整理自:技术干货丨谷歌插件开发探索及其应用 数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,记得给我们点个star!star!star! g ...

  8. 技术干货丨隐私保护下的迁移算法

    摘要:本文稍微回顾一下传统迁移算法的流程.特性和局限之处,然后文章介绍几种解决当源域数据有某些访问限制的场景下实现迁移的算法.具体包括:ADDA-CVPR2017,FADA-ICLR2020,SHOT ...

  9. MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生

    原标题:技术实战 MySQL 8.0.17 克隆插件分享-爱可生 背景 很神奇,5.7.17 和 8.0.17,连续两个17小版本都让人眼前一亮.前者加入了组复制(Group Replication) ...

最新文章

  1. 麦肯锡《2020年人工智能状况》报告:企业收入增长,AI真的出了力
  2. 日志库EasyLogging++学习系列(3)—— 配置功能
  3. LeetCode 78. 子集(回溯)
  4. 分析设计网上书店数据库,并画E-R图
  5. Cow Contest(POJ-3660 )
  6. 生产库中遇到mysql的子查询
  7. ruby中数组的常用函数
  8. C/C++如何读取整行字符串
  9. python代码混淆工具_Intensio-Obfuscator:一款专业Python代码混淆处理工具
  10. 汇编语言学习笔记 - 杂记(寄存器,寻址方式,指令操作合法性)
  11. c语言中错误executing,RetryableException: Read timed out executing POST 问题解决
  12. 跌破150美元、市值蒸发3600亿美元,这个圣诞节苹果过得“太冷了”!
  13. 【Tensorflow】卷积层
  14. Linux下安装google浏览器
  15. Illustrator script 脚本 基本的使用
  16. 手把手教你安装 Fedora
  17. 百度细雨算法2.0正式上线
  18. 西工大计算机博士好难毕业,西工大博士好考吗
  19. nginx已经启动 无法访问页面
  20. ibus输入法没有选词框

热门文章

  1. Java并发:五种线程安全类型、线程安全的实现、枚举类型
  2. 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
  3. Example of Zookeeper and Solr cluster with Docker networking
  4. SpringMVC框架----MVC 模型
  5. js中字符串操作函数
  6. 通过管道进行线程间通信
  7. Django的rom
  8. linux下的shell操作mysql
  9. shell脚本常见错误
  10. ASP.NET MVC的JavaScriptResult