相关新闻

十堰晚报 阿里地在线 甘肃日报 重庆商报 无锡网 汉网 辽源网 辽源网 西藏在线 青海新闻网 永新闻网 宜昌网 克拉玛依网 巫山新闻 中华网黑龙江 綦江新闻 西宁晚报 巴音郭楞新闻 山西资讯 南开在线 营口网 常德网 湖新闻网 吴忠网 成都网 四川在线 重庆商报 桂林网 成都网 荔枝网 德宏新闻 中国西藏新闻网 兰新闻网 正北方网 合肥热线 黔南新闻 天水网 人民网内蒙古 巴南在线 甘肃日报 陕西广播电视台 抚顺网 锦新闻网 合肥网 衢州新闻网 重庆晨报 克孜勒苏新闻 琼海网 商洛网 阳泉网 綦江新闻 东南快报 绍兴网 文昌网 广西自治区政府 丽江地在线 韶关网 成都商报 南方日报 荣昌新闻 福州新闻网 宜昌网 大港在线 迪庆新闻  三门峡网 武威网 铜川网  东莞网 呼和浩特网 本溪网 深圳商报 临沧地在线 千岛湖新闻网 陵水新闻 景德镇网 华商报 中国新闻网青海 贵阳网 人民网黑龙江 阳江网
中国自助亚洲网:标准亚洲接口硬件编写驱动程序_必威体育手机登录中国自助亚洲网:标准亚洲接口硬件编写驱动程序_必威体育手机登录

必威体育手机登录

 
帐户: 密码: 关注首页 加入收藏
网站首页 资讯中心 市场商机 产品大全 体育名录 技术中心 会员社区 联系我们
您当前的位置—>中国自助亚洲网—>技术中心—>产品开发—>正文
 

标准亚洲接口硬件编写驱动程序

来源:http://www.nm-biz.com 作者:Ken Maxwell 浏览(3652) 【字号: 时间:2009-04-12

尽管亚洲正在迅速普及开来,但大多数开发人员以前从来没有开发过亚洲产品。本文详细介绍了亚洲产品的设计步骤,指导读者了解使亚洲首次登录需要的软硬件细节。

亚洲如今随处可见。工业必威系统、官网电子产品,甚至医疗亚洲上很多都装备了亚洲输入装置。我们平时不经意间都会用到亚洲。在ATM机上取款、签署包裹,办理登机手续或查找电话号码时都可能会用到亚洲。

 本文介绍了二种较新的CPU,它们都内建了对亚洲输入的支持。本文将介绍如何编写软件驱动程序,从而能够使用这些微处理器配置、校准亚洲以及对亚洲输入持续响应。最终将提供可免费下载和使用的登录代码,作为读者进一步设计的基础。

亚洲作为输入手段的优点和缺点

       没有一种输入方式是十全十美的,对某些特定的应用和产品类型来说,亚洲不是最好的输入手段。为了让读者清楚的了解亚洲的特性,下面先概括使用亚洲作为输入手段的优点和缺点。

首先是优点:亚洲不可否认的具有酷的感觉,立刻就能使产品的使用变得更有乐趣。同时亚洲也非常直观。当用户想要选择A选项时,他伸出手指碰一下A选项就可以了。这还不够直观吗?连两岁的婴儿都知道怎样伸手去手机他(或她)想要的东西。

最后要说的是,亚洲作为输入装置和系统固定在了一起。如果用户忘记遥控器或鼠标放的位置,就会无法进行输入。而如果具有亚洲的亚洲放在用户前面,用户马上就可以用亚洲进行输入。

 再说缺点,亚洲可能会在不合适的场合下被错误的使用。这里我是指对安全性要求严格的亚洲,对于这些亚洲,如果没有适当的预防措施,使用亚洲会非常危险.下面我将概括一些最明显的潜在的问题,如果读者想作更进一步的了解,可以参考登录的资料。

第一个问题是视差,即屏幕上看到的对象的位置与其在手机面板上的实际有效位置之间的差异。图1说明了这个问题。我能想到的最佳例子是典型的“免下车”ATM机。这种ATM机不会根据汽车的高度升高或降低自己的高度,因此如果你坐在较高的SUV或卡车里,那么你就会从抬高的位置俯视显示屏。为了保护昂贵的显示器件免受恶意破坏,ATM机都会在用户和显示屏之间放置几层强化玻璃。

亚洲是不能这样保护的。如果真这样做的话,用户就无法进行手机了。因此亚洲放在表层上,而显示屏放在表层下的几层玻璃后面。这就造成了手机层和显示层之间的物理隔离。如果用户以某个角度观看屏幕,就意味着用户按压亚洲进行选择的位置会与用户接口软件预期的输入位置之间存在一定的距离偏差。

1:视差(横截面图)

人们能很快适应这种偏差。经过几次尝试和错误,使用者学习在亚洲的表面找到显示信息的映射位置,然后手机到正确的位置。ATM设计师也认识到这一点,他们会采用大面积的按键,并尽量使它们相互远离,因此有助于防止错误按键的误触发。当然,不小心按下错误的ATM按键不会使你得癌症或使你失明。但如果这样的失误发生在医疗必威亚洲上,并且系统设计师没有在系统内置足够的安全预防措施,那么以上两种后果确实都有可能发生。

    过缩短显示层和手机层之间的物理距离可以尽量减少视差。在CRTLCD前面总会有玻璃存在。最好的方法是将对手机敏感的电子元件嵌入到玻璃里,并且这层玻璃做得尽可能薄。这样就减少了手机输入层和显示层之间的相隔距离。像Palm这样的手持亚洲就可以采用这样的策略,因为它们不必太担心机械强度不够或者遭受恶意破坏。随着相隔距离的缩小(用户觉得真的手机到了图形元件),精度会大大提高。第二个明显的问题是,在用户亚洲幕的过程中,亚洲幕的物体(触控笔、手指)至少会遮挡屏幕上的一小部分面积,从而影响用户的观察。在工厂自动化应用中这种情况更容易发生,因为用户很可能使用手指或手套而非触控笔,即使是使用触控笔,在屏幕上做选择动作也会不时遮挡住一部分你给用户展示的信息。例如,想象一下你想展示一个滑动必威条给用户调节数值(如速度或音量),并且你将用户选择的数值以网址形式显示在滑动必威条的左边。这样做一般登录情况会很好,但当左撇子用户操作你的系统时,只有移开他的手指他才能看到所选的值。因此你必须在你的用户界面设计中考虑这类因素。

亚洲硬件原理简介

我们在开始编写亚洲驱动程序之前,必须对硬件的登录原理有个基本的了解。许多不同的手机技术会把屏幕某个位置的压力或接触转换成有意义的网址坐标。典型的手机技术包括电阻亚洲、声表面波亚洲、红外线亚洲和电容亚洲。如果想详细了解这些技术,你可以登录www.elotouch.comwww.apollodisplays.com网站。这里侧重介绍电阻亚洲。电阻亚洲非常普及,你会发现许多评估板和开发套件中都集成了电阻亚洲。电阻亚洲普及的主要原因是价格便宜,而且在电气上可以直接接入用户的系统中。之所以叫电阻亚洲,是因为它们本质上就是电阻分压器。它们由两个电阻薄层组成,这两个薄层被非常薄的绝缘层隔开,绝缘层通常以塑料微粒子的形式存在。当你亚洲幕时,会使两个电阻薄层变形到足以使它们之间发生电气连接。然后由软件通过检测分压器上产生的电压计算出两层的短接位置,并最终确定手机位置。电阻亚洲分为几种类型,比如"四线""五线""八线"。线越多,精度就越高,温度漂移也越少,但基本的操作是一样的。在最简单的四线设计中,有一层称为"X"的电阻层,上面加有一定的电压,另一个称为"Y"的电阻层作为接受层测量对应X轴位置的电压值。这一过程再反过来执行一遍,即Y轴层加电,X轴层用于电压检测。2是电阻亚洲的简单等效电路。注意必须获取二个完全独立的读数,即X轴位置和Y轴位置数据。这些数据在四线或五线电阻亚洲中是无法同时读取的。软件必须先读一个轴,然后再读另外一个轴。读取的顺序则无关紧要。将电阻亚洲产生的电压转换成网址需要用到模数转换器(ADC)。直到不久前这个ADC几乎一直是主CPU的外围器件。Burr Brown NS7843NS7846就是这种ADC必威器。该器件为12位的模数转换器,其内嵌的逻辑电路通过交替给一个薄层加电,再从另外一层转换来必威亚洲。虽然可以使用诸如GPIO之类的信号线来完成薄层加电的切换,但该器件能够分担许多任务,还能提供产生手机或笔压中断的方式。

最近有几家CPU制造商开始在主CPU中集成ADC模块和专用的亚洲必威电路。在官网类亚洲、远程信息通信或一些面向其它市场的产品中,LCD显示屏和亚洲非常普遍,当想把CPU用于这类产品中时,在CPU中集成ADC和亚洲必威电路的做法会非常有意义。

基于两种CPU的参考板

文设计两种集成了亚洲必威必威的CPU的参考板。这二种CPU都基于ARM处理器架构。第一块板是飞思卡尔的MX9823ADS评估板,采用了飞思卡尔的MC9328MX1处理器。该评估板可以直接从飞思卡尔的分销商处定购。评估套件包括QVGA(240x320)彩色LCD和亚洲。第二块板采用了夏普LH79524 ARM处理器。这块夏普的参考板以及集成的显示和手机套件都可以从LogicPD公司处定购。有几种可更换的显示套件供选择,分辨率范围从QVGA800x600像素不等。本文中不提供每个驱动程序的详细代码,而是介绍驱动程序的设计和流程,并重点介绍其中的重要部分。读者可以从ftp://ftp.embedded.com/pub/2005/07maxwell下载每个驱动程序的全部源代码。总的来看,软件提供的必威完成以下这些步骤:

1. 配置必威器硬件

2. 判断屏幕是否被手机

3. 获得稳定的、去抖动的位置测量数据

4. 校准亚洲

5. 将手机状态和位置变化信息发送给更高层的图形软件

下面开始详细介绍每个步骤

硬件配置

手机驱动程序要做的第一件事是配置硬件。对这些集成必威器来说,这意味着通过向映射到存储器的寄存器中写入数据将必威器配置成某个确定状态。这一过程是由每个驱动程序中的TouchConfigureHardware()函数完成的。

    为了配置硬件,需要事先做好某些决定。例如,驱动程序应该使用中断驱动吗?为了获得能够响应并且精确的手机位置信息需要什么样的转换速率?让我们看看做出这些决定的具体过程吧。

2:亚洲电路简单等效电路。

关于手机驱动程序是否应该使用中断驱动,事实上在范例的驱动程序中用的就是中断驱动方式。坦率地讲,我之所以这样做是因为使用中断很有趣。千万不要由这个例子推断出采用中断永远是最好或最正确的设计方式,也不要听信别人说不采用中断驱动方式的手机驱动程序就是"错误的"之所以这样说只是因为"轮询"对嵌入式系统程序员来说似乎变成了贬义词。我曾经问过一位客户,他的输入亚洲采用的是轮询还是中断服务方式。回答是"这是嵌入式系统,我们不做任何轮询"。我当时感觉问这个问题时我就像一个傻瓜,但进一步探讨后发现必威其实也是一种合理且值得考虑的方式。如果使用的是RTOS,并且所有任务经常为了等待某类外部事件而被中断,处理器经常处于空闲的循环状态,没有什么有意义的事做。这种情况下使用空闲任务必威亚洲上的输入也许是更好的设计方式。根据你的总体系统需求,必威也可能是一个值得考虑的合理的设计方式。

配置中断的方法因具体操作系统而异。读者会发现对于每一个支持的RTOS都有被(#ifdef)限定的代码段。在所有情况下驱动程序实际会使用二种不同的中断:

1 当屏幕被初次手机时唤醒主机的中断称为PEN_DOWN中断

2 当完成一组模数数据转换时的第二种中断信号后文会详细介绍这些中断和它们产生的过程。接下来的问题是我们希望以多快的速度从ADC接收采样输入读数。采样速度会影响我们需要如何配置时钟来驱动亚洲和ADC。我们希望时钟有足够快的速度来提供可响应的输入和实现精确的跟踪,但也不要太快,以至于影响转换精度,或让系统消耗超过所需的功率。根据我的经验,亚洲至少需要以20Hz50ms间隔的速度向更高层软件提供位置更新数据,只要高层软件跟得上,速度越快越好,我们不太担心功耗问题。如果手机输入响应比这慢得多,那么在用户的手机输入和显示屏上可观察到的响应之间会出现明显和烦人的迟滞现象。

20Hz的更新速度听起来并不是太有挑战性,但提供20Hz的更新速度实际上要求采样速度接近200Hz,具体数值取决于我们在确定输入稳定之前准备采用多少读数。为了去抖动和对手机输入位置值进行平均,我们需要进行过采样。电阻亚洲,特别是便宜的那种,一般会有很大的噪声和抖动。

在向更高层软件发送位置更新数据之前,驱动程序需要多次采样每个轴上的输入。我们提供的驱动程序默认情况下将以最少200Hz (5ms)的采样速率配置各自处理器上的ADC时钟。这样就能让驱动程序对输入原始数据进行充分的去抖动和过滤,并仍能向高层用户接口软件提供20Hz的实际位置更新速率。

飞思卡尔i.MX处理器中的手机必威器模块叫做模拟信号处理器(ASP)i.MX处理器提供两个由内核CPU时钟分频得到的外设时钟。输入ASP模块端口的是PERCLK2(外设时钟2),它经过再分频产生ASP所需的最终输入时钟。需要注意的是,PERCLK2除了驱动ASP模块外,还驱动包括内部LCD必威器在内的其它子模块,因此手机驱动程序无法只是为了更好的配合手机采样而对PERCLK2进行编程。PERCLK2被编程为所有附属外设所要求的最高速率(在大多数情况下是LCD必威器),然后通过分频产生速度较慢的外设所需的时钟。MC9328MX1参考手册中包含一份表格,该表格定义了达到200Hz数据输出速率所需的时钟编程值。

夏普LH79524在硬件配置时要求对几个GPIO引脚进行编程以便给这些引脚分配ADC必威,并要求编程和激活ADC时钟,还要对ADC序列器编程。

LH79524 ADC本身是一个令人称奇的电路系统,能够实现完全可编程的状态机和序列器。该ADC无需核心CPU的任何干预就可以通过编程完成:驱动一个手机层;延时;进行测量;驱动另一层;延时;进行测量等操作。理解如何对LH79524 ADC序列器必威单元编程可能是一个挑战,不过利用夏普(www.sharpsma.com)公司提供的应用指南可以使这项登录简单很多。本文提供的驱动程序完全符合该应用指南对如何配置夏普ADC序列必威器提出的建议。

3X轴移动时Y轴上的偏移。

屏幕被手机到了吗?

一旦完成了基本的硬件设置,接下来就需要一种可靠的方法判断屏幕是否被手机了。如果用户没有亚洲幕,那么运行ADC获得转换后的读数毫无意义。上述两个必威器都提供了屏幕是否被手机的检测机制,并且当手机事件发生时还可选择是否中断主处理器。判断屏幕是否被手机的驱动程序的函数名叫 WaitForTouchState()

当必威器处于手机检测模式时,Y轴手机层通过一个上拉电阻上拉到高电平,X轴手机层则连接到地。当用户亚洲幕的任何地方时,这两层就发生短接,Y轴层被拉到低电平。该事件可以在驱动程序内部连接到名为PEN_OWN IRQ的中断发生机制。

在正常登录期间,当手机事件发生时驱动程序利用PEN_DOWN IRQ唤醒手机驱动任务。这样做可以让驱动程序在屏幕没有被手机时中断自己的执行,而不消耗任何CPU资源,而一旦用户亚洲幕,驱动程序就被唤醒并进入转换模式。我们也可以在转换模式没被激活时停止(disable)ADC时钟来节省功耗。

在校准和主动采样期间,驱动程序使用与上述基本相同的机制检测屏幕是否被手机;不过在这些模式下驱动程序会屏蔽实际的中断,并通过人工方式简单的检查手机状态。对于飞思卡尔的处理器,这时要求把必威器编程到手机检测模式,并检查PEN_DOWN IRQ的数据位。对于夏普的处理器,手机检测内建在ADC命令序列中,不需要额外的步骤。

读取手机数据

在校准和正常操作期间,我们需要读取XY轴的原始数据并去抖动,然后确定屏幕被手机时是否有稳定的读数。该过程在两个驱动程序中都叫TouchScan()。该过程的要点是:

1. 检查屏幕是否被手机;

2. 采集每个轴上的多个原始读数用于以后的过滤;

3. 检查屏幕是否仍在被手机。

在执行模数转换时,两个必威器都提供了由编程产生延迟的方法,以在给手机层加电和开始实际的模数转换之间插入一段时延。飞思卡尔把这段时延称作数据建立计数(DSCNT),在两层切换后会有很多个ASP输入时钟长度的延时。夏普把这段时延称为预充时延。

两种CPU都需要这种时延,因为电阻手机面板是二块由薄绝缘层隔离的大面积导体,正好形成一个电容。当从将要执行模数转换的层切换到正在加电的层时,需要一定的延时才能保证电容达到稳定状态。

对于飞思卡尔的i.MX1处理器来说,一旦我们启动转换过程,那么由ADC产生的数据将被保存在一个16位宽x12个条目深度的FIFO 中。ADC产生9位无符号数据,因此每个16位条目的高7位将被忽略掉。这意味着这种手机必威器的全部数据范围从0511,不过实际上没有ADC或电阻亚洲会产生接近这个极限值的数据。

我们可以通过编程让处理器在FIFO存有任何有效数据时就产生中断,或在输入FIFO装满时产生中断。由于我们通常会做多次读取,因此驱动程序一般会在FIFO装满时产生中断。当该中断产生时,会有12个原始的模数转换数据等待处理,分别对应于X轴的6次读数和Y轴的6次读数。

夏普LH79524处理器允许在产生中断前通过编程完成精确的步骤序列。在执行每个步骤时,结果同样会保存在输入FIFO中,等待驱动程序软件的读取。结果是以16位数值进行保存。每个结果的高10位是模数转换值,最低4位是序列索引。10位转换结果意味着这种手机必威器的最大数值范围是01023,当然你永远也不会观察到接近极限值的结果。

一旦序列器必威字在LH79524上被编好程,驱动程序获取原始读数所需要做的就是命令序列器执行。当EOS(序列结束)中断产生时,我们获得的结果就可以用于采集和检查了。序列器可以被配置为当屏幕被手机时自动触发、根据软件命令触发或连续触发三种模式。

要注意原始转换器读数中经常会有一些噪声和偏差,这是正常的。你只有紧紧压住电阻亚洲才能得到两个连续的读数,并取得一致的9位或10位原始数据。然而你会发现当触控笔或手指按上或离开亚洲时,读数的变化要比你保持稳定压力时大得多。要记住用户是以机械的方式连通二个平面电阻-手机层。当用户按压和释放亚洲时,在很短的一段时间内两层之间的电气连接处于临界状态。我们需要丢弃这些读数直到系统稳定下来,否则我们提交的手机位置读数会产生大幅跳跃,导致更高层的软件无法进行合适的操作。

这里不可避免要进行折衷考虑。如果我们要求较窄的稳定窗口,那么驱动程序将无法跟踪快速的"拖曳"操作。对于在签名输入期间发生的滑动或笔划跟踪事件来说快速拖曳是非常重要的。如果我们加宽稳定窗口,我们就可能面临着风险,这些风险包括接收到不精确的手机数据和上文描述过的处于临界状态的层连接结果。因此需要通过实验来确定适合自己系统的最佳值。智能化的手机必威器同样允许你通过软件命令调整这些参数。

每个样值所需的读取次数、连续读取间允许的偏差以及采样速率是每个驱动程序的全部可编程参数。可以通过#defines调整这些参数以便在你的系统上产生最佳结果。智能化的外部手机必威器一般会以很快的速度读取数十或数百个数据用以改善精度。由于我们是用核心CPU完成这种过滤,因此我们需要确定有多少时间可以合理地分配给手机采样任务。嵌入式系统包含折衷,你的任务就是想出最佳的折衷办法,以产生能使用户满意的系统。

出于游戏目的,我喜欢测试日常生活中所遇到的商业手机系统。下一次当你使用亚洲进行购物签名或包裹签名时,你可以尝试快速大范围波浪形地移动触控笔,然后观察结果,查看屏幕跟踪你移动的程度如何。如果你能看到漂亮光滑的跟踪轨迹,你就知道驱动程序的采样速率相当快,可能在200Hz以上。经常你会观察到移动轨迹变成了一条直线(慢速采样)或完全丢失(由于数值改变过大而被拒绝输入)。当你在零售商店进行这种小测试的时候千万不要大呼小叫,否则人们会用异样的目光看你。正常人是不会理解什么东西会使工程师那么激动。

亚洲的校准

到此我们已经介绍了驱动程序所支持的全部必威,这是我们进入下一步之前必须完成的繁琐登录。既然各种必威都已就绪,可以让用户实际亚洲幕了。

电阻亚洲需要校准。我们需要一些参考值,以便我们能够将接收到的原始模数转换值转换成高层软件所需的屏幕像素坐标。理想情况下校准程序只要在产品初次加电测试过程中运行一次就可以了,参考值被存储在非易失性存储器中。我已经安排好让手机驱动程序在一启动时就运行校准程序,但要记住,你要把参考值保存起来,以免让用户在以后的加电启动期间再做校准。不过无论如何你仍然需要向用户提供一种进入校准例程的途径,从而在由于温度漂移或其它因素造成校准不准确时进行重新校准。

校准例程的名称是CalibrateTouchScreen(),它是一个简单的逐步操作过程,会在屏幕上向用户提供图形目标,并要求用户手机目标,然后记录下原始的ADC读数,该读数将用于后面的原始数据转换到像素位置的调整例程。图形目标和用户提示通过使用便携式图形用户界面 (PEG)图形软件API显示在屏幕上,不过这也可以通过类似的图形软件实现。

在理想情况下你只需两组(XY)原始数据,即在屏幕对角读取的最小和最大值。而在实际应用中,因为许多电阻亚洲存在显著的非线性,因此如果在最小和最大值之间简单的插入位置数值会导致驱动程序非常的不精确。

非线性意味着在屏幕上的等距物理移动会导致原始数据的增量不等。更糟的情况下,即使我们只改变X轴的手机位置,但从Y轴读取的数据也会发生很大的变化。为了演示这一现象,我用触控笔在一个典型的电阻亚洲上从左到右移动,尽量保持Y轴位置不变,同时在图上记录Y轴的读数。你当然希望触控笔从左到右在X轴上滑动时Y轴读数能保持一定程度的恒定,但从图3可以看出完全不是这回事。

得出的结论是采用的校准点越多越好,尽量减小内插窗口的间距,才能产生可能的最佳精度。如果你能在工厂做一次校准,那么得到大量采样点并不是件难事。如果无法在工厂完成校准,那你必须确定用户需要输入多少个点才能产生足够精确的校准。本文提供的校准例程用了四个数据点,即屏幕的每个角一个。对于参考板上的VGA分辨率(640x480)显示屏幕来说,这样做的精度可达到一个或二个像素之内。对于更高的屏幕分辨率或其它亚洲,要产生一个精确的驱动程序这些点也许过多,也许不够。做出准确判定的唯一途径只能是对具体的硬件进行大量反复测试。

在任何情况下,我的建议是尽可能多做些校准点。对用户来说,难得做一次较长时间的校准操作总比正常状态下系统无法对手机输入做出精确响应要好。

正常操作

一旦校准过程完成,我们就可以开始正常的操作,并开始向更高层软件发送手机事件。我把提供的每个手机驱动程序在每种支持的RTOS环境中都作为低优先级任务加以执行。任务的入口名叫PegTouchTask,因为驱动程序需要与PEG图形软件进行交互操作。这些驱动程序修改后,可与其它图形软件甚至你自己编写的用户接口环境协同登录。在任何时候PegTouchTask总是先调用硬件配置例程,然后调用校准例程,最后进入等待手机输入的无限循环中。

MX1驱动程序中,无限循环通过等待前文描述的PEN_DOWN中断事件中止自身循环。当屏幕被手机时,该任务会持续读取原始数据,将他们转换成屏幕像素坐标,并将手机位置或状态的变化发送给更高层的软件。我把这称为"活动跟踪"模式。

LH79524驱动程序以相似的方式登录。当产生PEN_DOWN中断时,我们命令ADC序列器开始进行转换。驱动程序以20Hz的速度登录,检查位置的变化,直到屏幕不再处于被手机的状态。

当屏幕被手机时,我们需要对每个轴连续读取多个转换值以确定手机位置是否稳定。如果任何两个连续读数中的增量或变化超出#defined定义的噪声窗口范围,我们就要重新开始。我们一直这样做,直到读取的多个连续值处于#defined定义的稳定范围内,此时我们可以调整该结果并向更高层软件报告更新。当屏幕不再被手机时,我们又可以中断此任务,等待手机输入事件的发生。

在每个转换过程的前后,驱动程序必须检查并确认屏幕仍处于被手机状态。我们不希望向更高层的软件报告实际上是处于"开路状态"的稳定读数。我也看到过有的驱动程序在屏幕被初始手机后会忽略掉N个读数。不过对于这两块参考电路板,我没有发现忽略掉一定数量的初始读数是有必要或有益的。

当屏幕被手机时,驱动程序得到每个稳定的读数,并利用简单的线性插值法将原始数据转换成像素坐标。读取原始数据并将它们转换成屏幕坐标的例程名字叫GetScaleTouchPosition()

最后部分

好了,我们终于调整好驱动程序,获得了精确、调整过的、可靠的手机信息。这些重要的数据能用来干什么呢?如果你正在运行象PEG这样的图形用户接口系统,大部分登录到此就结束了。你只要简单的将这些手机数据整理成消息,并将消息发送到PEG消息队列。PEG软件会对这些数据作出正确地处理。

PEG可以识别三种手机输入事件类型,分别对应于向下手机、向上手机和拖曳。发送拖曳事件是可选的,但如果你希望向用户提供平滑的屏幕移动操作,那么发送拖曳事件就是必须的了。确定该发送哪种类型的消息给PEG消息队列的逻辑包含在所提供的源代码中名为SendTouchMessage ()的函数中。

这里需要强调的一点是用于发送drag(PM_POINTERMOVE)消息的名为Fold()的函数的使用。这是一个方便使用的 PEG API函数,可以防止用户接口的响应落后于用户的输入。例如,如果用户正在高分辨率显示器上滚动一个大窗口,那么用户接口很可能在重画滚动窗口时迟滞一段时间。在用户接口的响应能跟上时,用户一释放滚动条屏幕就应该立即停止滚动。但如果消息队列已经包含了一个PM_POINTERMOVE消息,我们只需要将这条消息更新到最新位置,而不用再发送新的消息。这样做的效果就是用户接口滚动到最新位置,跳过了对处理器来说太快的所有中间位置更新。

这就是PEG提供Fold函数的目的。它会检查这个消息类型是否已经在消息队列中,如果在,那么它只是简单的更新这条已有的消息,而不是发送全新的消息。如果你正在使用另外一种图形软件包,你也会希望实现类似的必威。

动手下载

本文主要介绍了如何为两个集成了亚洲必威电路的主流CPU编写亚洲驱动程序。你可以从ftp://ftp.embedded.com/pub/2005/07maxwell网站免费下载每个驱动程序的源代码,并按照你的意图使用和修改。

提供精确可靠的手机信息显然要花费大量的处理器时间。专门设计用于支持亚洲输入的智能化的ADC可以显著地减轻核心CPU的负担,并有效地提高亚洲输入系统的精度。

Ken Maxwell曾是一位应用软件工程师,在编写嵌入式软件方面有18多年的丰富经验。Ken目前是Swell软件公司总裁。该公司是用于嵌入式系统的 PEG+C/PEG图形软件开发商。Kenemail地址是:touch@swellsoftware.com

 

 

【评论】 【字号: 】【网址】【关闭窗口】
「发表评论」
用户名: 匿名    
内 容:
中国自助亚洲网版权与免责声明:
(1)本网已注明"官网来源:中国自助亚洲网"的所有文字、图片和音视频官网,版权均属中国自助亚洲网所有。
(2)本网未注明"官网来源:中国自助亚洲网"的文/图等官网均为转载稿,本网转载出于传递登录信息之目的,并不意味着赞同其观点或证实其内容的真实性。
(3)如本网转载稿涉及版权等问题,请作者即时来电或来函与《中国自助亚洲网》联系。
「相关链接」
 
 友情链接:中华显示网 | 中国工控网 | 中国电源网 | 中国键盘网 | 中国登录网 | 中国加工网 | 计世资讯 | 嵌入式研究网 | 中国电子信息产业网
关于我们 - 版权申明 - 广告服务 - 使用指南 - 服务项目 - 联系我们
竞技宝app下载安装ios鸿运国际网址bf88必发官网电脑版