江苏和讯自动化设备有限公司,下设常州公司,苏州公司,是集研发,项目设计,销售,维修,工控自动化培训为一体的专业自动化公司,为您提供专业的自动化产品服务。 电话:0519-85602926 业务: 殷工 代理销售:步科触摸屏,步科步进伺服,伟创变频器,伟创伺服,伟创PLC,威纶触摸屏,显控触摸屏,施耐德PLC,施耐德变频器,西门子PLC,三菱PLC,三菱伺服等,松下变频器,松下plc,松下伺服,松下传感器,欧姆龙plc。欧姆龙传感器,永宏plc,信捷plc,信捷触摸屏,镇江步科触摸屏MT4414T一级代理商/镇江步科触摸屏MT4414T等 服务内容:1.提供 专业非标成套控制柜(设计、制作、安装、调试)及设备改造、PLC/HMI程序设计,常州电气控制柜定制,常州PLC控制柜定制,设备改造 电气自动控制设计改造,我们有从事PLC设计多年的工程师,设计过各类项目,包括水处理自动化系统设计,工业炉自动化系统设计,高炉自动化系统设计,轧钢自动化系统,流水线设备等 2.为方便客户本中心还提供专业的工控自动化解决方案 3.提供变频器,plc,伺服维修服务 4.专业的自动化培训服务 我们承诺: 2.在项目服务方面,我们的在材料的选用、各部件的加工、调试、安装等全过程中有严格遵守客户要求的品质保证。 3.在维修方面,专业的维修团队,专业的服务体验 保证价格优惠的前提下提供优质,优化,先进的技术。人性化的设计,合理的布局,**的操控性能是我们一直恪守的理念。 联系我们: 公司地址:常州新北区太湖路府琛大厦2号楼307 苏州吴中区木渎镇 电话:0519-85602926 业务: 殷工 部分知识参考书籍 触摸屏驱动程序的设计和实现 嵌进式设备触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式和表面声波式。其中电阻式触摸屏在嵌进式系统中用的较多,电阻式触摸屏可分为四线、五线、七线等几种。一般来说,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 则用于触摸笔离开时产生相应的中断。 (4)获得稳定的、往抖动的丈量数据 在进行触摸屏程序开发时,一定要留意原始的触摸丈量数据经常会有一些噪声和偏差,这是正常的。一般来说,只有用户牢牢压住电阻触摸屏才能得到两个连续的读数,然而我们会发现当触控笔或手指按上或离开触摸屏时,读数的变化要比保持稳定压力时大得多。这是由于用户是以机械的方式连通二个平面电阻-触摸层,当用户按压和开释触摸屏时,在很短的一段时间内触摸屏的电气连接均处于临界状态。这时,我们需要丢弃这些读数直到系统稳定下来,否则提交的触摸位置读数会产生大幅跳跃,导致严重的失真或触摸位置漂移。 这时就需要进行折衷考虑,这也是触摸屏驱动设计的关键所在。假如我们要求较窄的稳定窗口,那么驱动程序将无法跟踪快速的“拖曳”操纵;假如加宽稳定窗口,就可能面临着很多风险,这些风险包括接收到不精确的触摸数据,或上面描述处于临界状态的层连接结果。这时,就需要通过实验来确定适合系统的较佳值。 在正常情况下,当屏幕被触摸时驱动程序应会得到每个稳定的读数,并利用简单的线性插值法将原始数据转换成像素坐标。读取触摸点的坐标是由 DdsiTouchPanalGetPoint()函数实现的。另外,在每个转换过程的前后,驱动程序必须检查并确认屏幕仍处于被触摸状态。由于我们不希看采集到实际上是处于“开路状态”的稳定读数。因此,在读取触摸数据时,我们需要对原始数据进行往抖动处理,然后确定屏幕被触摸时是否有稳定的读数;假如不稳定就要继续读取数据并进行往抖动处理,直到得到稳定的数据为止。 最后,触摸屏驱动程序应将触摸状态和位置变化信息发送给更高层的应用软件,以完成一次完整的触摸操纵。