触摸屏驱动实现

发布时间:2011-05-20 阅读量:709 来源: 发布人:

中心议题:
      *  WinCE触摸屏驱动的设计和实现

嵌入式设备触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式和表面声波式。其中电阻式触摸屏在嵌入式系统中用的较多,电阻式触摸屏可分为四线、五线、七线等几种。一般来说,WinCE触摸屏驱动的设计和实现有以下几个步骤:

(1)配置和初始化触摸屏

 触摸屏驱动在初始化过程会调用TouchPanelEnable函数,该函数调用的DDSI函数为DdsiTouchPanelEnable和 DdsiTouchPanelDisable。这两个DDSI接口函数是驱动实现的关键所在,分别用于打开和关闭触摸屏硬件。但是为了降低功耗,这两个函数其实可以不真正操作硬件,而只是实现软件上的控制。 同时,在初始化时还需要进行这几个配置和初始化:一是创建事件hTouchPanelEvent和 hCalibrationSampleAvailable,前者是在正常状态下当有触摸笔按下或者按下后需要定时采集数据时被触发;而后者是在校准状态下当有校准数据输入时被触发。二是检查初始化所需的中断gIntrTouch(触摸屏中断)和gIntrTouchChanged(定时器中断),并将这两个中断关联到事件hTouchPanelEvent。三是创建一个ISR线程TouchPanelpISR,用于等待和处理触摸屏事件 hTouchPanelEvent,它也是整个驱动程序中唯一的事件源。

(2)校准触摸屏基准参数

完成前面繁琐的工作后,驱动程序的各种功能就都已经准备就绪了,现在就可以实际操作触摸屏幕了。但一般来说,电阻式触摸屏需要校准,也就是说在驱动启动过程中MDD层要调用相应的DDSI函数来读取注册表中的校正数据校正触摸屏。理想情况下,校准程序只要在嵌入式设备初次加电测试过程中运行一次就可以了,参考值会被存储在非易失性存储器中,以免让用户在以后的加电启动期间再做校准。不过,高质量的触摸屏驱动程序是应该要向用户提供一种进入校准例程的途径,从而在由于温度漂移或其它因素造成校准不准确时进行重新校准。 在理想情况下,校正触摸屏基准只需两组原始数据,即在屏幕对角读取的最小和最大值。但在实际应用中,因为许多电阻式触摸屏存在明显的非线性,如果只在最小和最大值之间简单的插入位置数值会导致驱动程序非常的不精确。因此,在WinCE中需要获取多个校准点,常用的校准点数量为5个。

 方法是:①首先驱动程序在函数DdsiTouchPanelGetDeviceCaps 中设置校准点的个数;②是系统在 TouchDriverCalibrationPointGet中获取每个校准点的屏幕坐标;③是在屏幕界面的校准点坐标处显示一个位置符号,用户需要精确地在位置符号按下触摸屏;④驱动程序通过TouchPanelReadCalibrationPoint函数读取相应的触摸屏坐标值;⑤然后再开始下一个校准点,直到循环设定的次数后将采集到的触摸屏坐标值和校准点屏幕坐标送到TouchPanelSetCalibration函数中进行处理,该函数将产生校准基准参数。校准完成之后,触摸屏便可以开始正常的操作了。

 (3)判断屏幕是否被触摸

一旦完成了触摸屏硬件设置、初始化和基准参数校准后,接下来就需要用一种可靠的方法来判断屏幕是否被触摸了。WinCE提供了屏幕是否被触摸的检测机制,而且当触摸事件发生时还可选择是否中断主处理器。判断屏幕是否被触摸的驱动程序的函数名叫WaitForTouchState()。当屏幕被初次触摸时唤醒主机的中断,称为PEN_DOWN中断。这样做可以让驱动程序在屏幕没有被触摸时中断自己的执行,而不消耗任何CPU资源,而一旦用户触摸屏幕,驱动程序就被唤醒并进入转换模式。

 当被唤醒后就有一组模数数据等待转换并产生中断信号。中断是硬件与软件打交道的重要方法,所以大多数驱动程序都涉及到中断处理。就中断处理而言, WinCE采用了一种独特的方法。它将中断处理分为两步:中断服务例程(ISR)和中断服务线程(IST)。具体来讲就是把每个硬件的设备中断请求 (IRQ) 和一个ISR 联系起来,当一个中断发生并未被屏蔽时,内核调用该中断注册的ISR。因为ISR 运行于内核模式,所以应该被设计得尽可能的短,ISR 的基本职责是引导内核调度和启动合适的IST。IST 在设备驱动程序软件模块中编写,它从硬件获取或向硬件发送数据和控制代码,并进一步处理设备中断。

  WinCE触摸屏驱动程序是采用中断方式对触摸笔的按下状态进行检测,当检测到触摸笔按下时产生的中断,就会触发一个事件通知一个工作线程开始采集数据。同时,驱动将打开一个硬件定时器,只要检测到触摸笔仍然在按下状态,将定时触发同一个事件通知这个工作线程继续采集数据,直到触摸笔抬起后关闭该定时器。简单的说,就是驱动程序会同时采用触摸屏中断和定时器中断这两个中断源。目的在于不仅可以监控触摸笔按下和抬起状态,而且可以检测触摸笔按下时的拖动轨迹。触摸屏中断的两个逻辑中断分别是:SYSINTR_TOUCH是用于触摸笔点击触摸屏时产生相应的中断;SYSINTR_TOUCH_CHANGE 则用于触摸笔离开时产生相应的中断。

在理想情况下,校正触摸屏基准只需两组原始数据,即在屏幕对角读取的最小和最大值。但在实际应用中,因为许多电阻式触摸屏存在明显的非线性,如果只在最小和最大值之间简单的插入位置数值会导致驱动程序非常的不精确。因此,在WinCE中需要获取多个校准点,常用的校准点数量为5个。

方法是:①首先驱动程序在函数DdsiTouchPanelGetDeviceCaps 中设置校准点的个数;②是系统在 TouchDriverCalibrationPointGet中获取每个校准点的屏幕坐标;③是在屏幕界面的校准点坐标处显示一个位置符号,用户需要精确地在位置符号按下触摸屏;④驱动程序通过TouchPanelReadCalibrationPoint函数读取相应的触摸屏坐标值;⑤然后再开始下一个校准点,直到循环设定的次数后将采集到的触摸屏坐标值和校准点屏幕坐标送到TouchPanelSetCalibration函数中进行处理,该函数将产生校准基准参数。校准完成之后,触摸屏便可以开始正常的操作了。
 
相关资讯
Allegro公布2025财年首季业绩:营收增长22% 工业与电动汽车业务领跑

全球领先的传感器与功率IC解决方案供应商Allegro MicroSystems(纳斯达克:ALGM)于7月31日披露截至2025年6月27日的2025财年第一季度财务报告。数据显示,公司当季实现营业收入2.03亿美元,较去年同期大幅提升22%,创下历史同期新高。业绩增长主要源于电动汽车和工业两大核心板块的强劲需求,其中电动汽车相关产品销售额同比增长31%,工业及其他领域增速高达50%。

三星HBM份额暴跌至17%,SK海力士登顶全球存储器市场

受强劲的人工智能(AI)需求驱动,全球存储芯片市场格局在2025年第二季度迎来历史性转折。韩国SK海力士凭借在高带宽存储器(HBM)领域的领先优势,首次超越三星电子,以21.8万亿韩元的存储业务营收问鼎全球最大存储器制造商。三星同期存储业务营收为21.2万亿韩元,同比下滑3%,退居次席。

跻身英伟达核心圈:英诺赛科成800V HVDC联盟唯一中国GaN供应商

8月1日,英伟达官网更新其800V高压直流(HVDC)电源架构关键合作伙伴名录,中国氮化镓(GaN)技术领军企业英诺赛科(Innoscience)赫然在列。英诺赛科将为英伟达革命性的Kyber机架系统提供全链路氮化镓电源解决方案,成为该名单中唯一入选的中国本土供应商。此重大突破性合作直接推动英诺赛科港股股价在消息公布当日一度飙升近64%,市场反响热烈。

MPS发布强劲季报:毛利率55.1%稳居行业前列,战略转型显成效

全球领先的功率半导体解决方案供应商MPS(Monolithic Power Systems)于7月31日正式公布截至2025年6月30日的第二季度财务报告。数据显示,公司本季度业绩表现亮眼,多项核心指标实现显著增长,并释放出持续向好的发展信号。

工业5.0技术落地指南:贸泽电子发布自动化资源中心

贸泽电子(Mouser Electronics)于2025年8月正式推出工业自动化资源中心,为工程技术人员提供前沿技术洞察与解决方案库。该平台整合了控制系统、机器人技术及自动化软件的最新进展,旨在推动制造业向智能化、可持续化方向转型。