3.设计中的几个关键问题

3.1定制Windows CE平台

Windows CE是一个多平台的、可裁减的32位嵌入式操作系统。他既适用于工业设备的嵌入式控智模块,也适用于消费类电子产品的开发。针对不同的目标设备硬件环境,在其内核基础上添加各种模块,从而形成一个定制的嵌入式操作系统。它包括了定制设备所需的一切,例如:联网能力、实时性和小内存占用以及多媒体和Web浏览功能等。

3.2 Windows CE`的驱动模式

Windows CE`设备的驱动模型有两种形式:流接口驱动(Stream Interface Driver)和本地设备驱动(Native Device Driver)从实现方式来看,无论那种驱动都可以采用单层和分层两种方式,多层设备驱动中实现的代码分两层:MDD(Model Device Driver,模型设备驱动)和PDD(Platform Dependent Driver,平台相关驱动)。MDD层中向GWES模块提供了DDI(Device Driver Interface,设备驱动接口)函数接口,实现了对于同一类设备的驱动程序所公用的功能,而PDD则实现了与平台的具体硬件设备相关的代码。MDD通过调用特殊的PDD函数来访问硬件。

3.3触摸屏与显示器的配合算法

FM 7843送回控制器的X与Y值仅是对当前触摸点的电压值的A/D转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏与LCD贴合的情况有关。而且,LCD分辨率与触摸屏的分辨率一般来说是不一样,坐标也不一样,因此,如果想得到体现LCD坐标的触摸屏位置,还需要在程序中进行转换。转换公式如下:

x=(x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin)

y=(y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin)

其中,TchScr_Xmax、TchScr_Xmin、TchScr_Ymax和TchScr_Ymin是触摸屏返回电压值x、y轴的范围,LCDWIDTH、LCDHEIGHT是液晶屏的宽度与高度。

3.4操作系统对触摸屏的支持

操作系统对触摸屏的支持是按分层的思想进行的。首先是应用层,编写的应用程序调用触摸屏/鼠标事件API(在牵引层有相关的API函数);其次,在驱动层有支持触摸屏的驱动程序。通过统一接口来调用操作系统内核的触摸屏设备驱动程序完成最终的设备控制。从中取出触摸屏的实际坐标值,把该值记录在初始化程序中,当下次有应用程序需要调用触摸屏驱动程序时,触摸屏驱动程序就会去检查初始化程序,读取其中的校正值,并把经过校正,影射后相对坐标值返回该应用程序。

3.5触摸屏的坐标的确认

通过上述方式采集的坐标是相对于触摸屏的坐标,需要转换成为LCD坐标,这个过程之前需要进行两种坐标的校准工作,这里采用取平均值法。首先从触摸屏的4个顶角得到2个最大值和2个最小值,分别计为x_min,y_min和x_max,y_max.X,Y方向的确定如表1所示。

表1 X,Y方向的确定


当系统处于休眠状态时,Q1,Q3和Q4处于截止状态,Q2导通。当触摸屏被按下时,首先导通MOS管组Q1和Q4,X+与X-回路加上+3.3V电源,同时将MOS管组Q2和Q3关闭,断开Y+和Y-,再启动处理器的A/D转换通道1(AIN1),电路电阻与触摸屏按下产生的电阻输出分量电压,并由A/D转换器将电压值数字化,计算X轴的坐标。接着先导通MOS管组Q2和Q3,Y+与Y-回路加上+3.3V电源,同时将MOS管组Q1和Q4关闭,断开X+和X-,再启动处理器的A/D转换通道0(AIN0),电路电阻与触摸屏按下产生的电阻输出分量电压,并由A/D转换器将电压值数字化,计算Y轴的坐标。系统读到坐标值后,关闭Q1、Q3和Q4,打开Q2,回到初始状态,等待下一次笔触。

确定X,Y方向后,坐标值的计算公式如下:

X=(x_max-Xa)×320/(x_max-x_min)

Y=(y_max-Ya)×240/(y_max-y_min)

式中:

Xa=(X1+X2+……+Xn)/n

Ya=(Y1+Y2+……+Yn)/n

一般触摸屏将触摸时的X、Y方向的电压值送到A/D转换接口,经过A/D转换后的X与Y值仅是对当前触摸点的电压值的A/D转换值,它不具有实用价值。这个值的大小不但与触摸屏的分辨率有关,而且与触摸屏与LCD贴合的情况有关。如果想得到体现LCD坐标的触摸屏位置,还需要在程序中进行转换。