基于Windows CE的车载电脑系统人机界面的实现
本文来源:()
介绍了基于Windows CE的车载电脑系统人机界面的设计及其实现,着重论述了虚拟仪表界面和混合动力界面的设计过程与实现技术,并给出车载电脑系统人机界面的实现结果。 1引言
当前我国的汽车工业正处于一个突飞猛进的发展时期,汽车工业已成为我国国民经济发展的重要支柱产业之一。汽车电子在汽车产业中的地位也越来越重要,汽车电子的数字化、信息化、网络化是21世纪消费类汽车电子产品技术发展的必然趋势。但车载电脑系统在汽车中的应用目前还处于探索阶段,缺乏整合信息及网络技术的比较实用的应用模型。而Windows CE是一个抢先式多任务并具有强大通信能力的32位的嵌入式操作系统,良好的图形用户界面提供基本的绘图引擎、窗口管理、界面的事件机制等。将Window CE操作系统嵌入到车载电脑系统中,使得系统中人机界面实现简单,而且直观,方便驾驶员与汽车之间进行信息的交互。 2 Windows CE操作系统简介
Microsoft Windows CE是一个多平台、多任务、多线程、可裁减的32位嵌入式操作系统。它具有强大的通信能力,是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用等非PC领域设计的全新战略性操作系统产品。它只需500KB的RAM就可以把系统全部装下。最新版的Windows CE内核只需200KB的运行空间。Windows CE主要包括内核、持久存储、图形和多媒体、进程间通信、通信服务、安全服务、用户界面服务、Internet服务和本地化支持等模块。Windows CE在可裁减性、可移植性以及实时性等方面都有独特的优势。Windows CE的主要特征为:
⑴具有模块化的可裁减内核结构。
⑵适应小型系统,为低成本弱计算能力系统提供简介、高效、完善的控制手段。
⑶遵循Windows平台的应用开发规范,提供Win32 API等。
⑷灵活的内存访问机制,可以使系统中不同类型的应用程序充分地使用RAM、ROM和闪存,并有选择地有效利用处理器提供地虚存、保护等功能。 ⑸高效地任务管理调度机制,具有256级优先级和动态优先级抢占式调度地功能。
⑹支持实时应用。
⑺提供高级电源管理功能。 3车载系统人机界面的设计
在车载系统人机界面的显示和控制中,我们采用液晶屏和触摸屏相结合的方式。这样就大大减小了系统在车中占有的空间。利用液晶屏实现车内各种信息的显示、菜单操作、图形显示及触摸屏控制,为车载系统提供良好的人机界面。 人机界面设计成四个主要的界面:虚拟仪表界面、故障诊断界面、混合动力界面和视频显示界面。
虚拟仪表界面主要显示车速、水温、油位、油压、轮速、电压等车内的各种信号。并且利用轮速信号计算出里程数进行显示。这样驾驶员能够准确了解到车运行过程中的各种基本信息,能够对各种即将出现的情况作出及时的判断。 故障诊断界面主要显示的是车内各种部件的工作状态,以使驾驶员及时发现车辆行驶中的异常现象,排除发生危险的各种故障,这样对驾驶员的行车安全有非常大的帮助。
混合动力界面主要是利用动画来显示每个时刻车内能量流动的各种状态,包括纯电池能量状态、纯燃油能量状态和混和能量状态。
视频显示界面只要是实时显示从摄像头传送过来的画面,主要应用在倒车的时候。
界面设计中有一个默认的启动界面及几个相关的显示界面用于动态显示采集的数据,界面是通过窗口上的控制按钮产生相应的消息进行切换;控制按钮可以是屏幕上虚拟按钮或实际外设的按键或其他能使系统产生相应消息切换的装置。启动LOGO界面在显示一段时间后自动进入到其中一个特定的显示界面。显示界面中要显示数据通过串口对车内信号进行接收,程序接收采用线程方式,接收程序作为线程独立工作,并在取得相应的数据后产生相应的消息,由不同的消息去触发人机界面的不同区域更新显示数据。图1为开机后的界面显示的切换。
图1 人机界面显示切换
在虚拟仪表界面中为了更加形象的模拟运行中车速和轮速指针的摆动情况,我们对指针的显示采用阻尼的方式进行动态的显示,对要显示的数据进行了适当的处理,达到加速或减速时指针开始快速摆动然后缓慢到达终点的效果。数据的显示大致分成两类,加速和减速,分别对应于图2中曲线的L1,L2。L1是加速曲线,其起点不一定是在零点,在加速过程中其函数可对采集来的数据进行处理,使其在开始阶段上升速度较快,在仪表上表现为指针摆动较快,当快要到达加速的终点时加入适当的阻尼及延时系数,使指针摆动的速度变缓并逐渐停留在终点位置。同样在减速时在靠近减速起点阶段下降速度稍微快些,快到终点时下降速度变缓,逐渐趋向与终点速度,虚拟表盘的指针表现为快速下降然后缓慢稳定在终点上。
图2仪表阻尼显示原理图
4车载系统人机界面的实现
车载电脑系统人机界面的开发环境采用微软提供的eVC4.0,开发系统处理器采用Intel的XScale PXA255,SDK我们采用Platform Builer4.2裁减定制而成。由于在eVC中,并没有多文档框架,而我们要显示多个不同的界面,所以我们采用单文档的形式显示多个不同的窗体来进行窗体的切换。我们创建一个基于CFormView的单文档应用程序,再添加几个窗体和与之对应的基于
CFormView的新视类,然后通过在主框架类里添加控制代码和菜单控制实现这两个窗体的动态切换。这种方法避免了普通WINDOWS窗口界面上的多余的工具条、菜单、文本框等内容,完全符合人机操作界面的要求。
图3混合动力界面采用了动画的显示方法。其关键就是在内存中创建一个与显示动画的窗口区域一样大的位图,先用GDI函数绘制位图,然后在适当的时候从内存中显示出来。因为位图已经绘制好,不像平时编程一样边绘制边显示,所以,显示一帧图形时,减少了闪烁,从而实现平滑动画;并且,图形是从内存中直接显示到当前窗体,所以速度也很快,从而实现高速动画。我们首先建立一个新类CPowerBitmap,利用CreateCompatibleBitmap()函数在内存中建立一个与显示界面相同大小的区域,然后在内存的这个区域中画出要显示的图形,最后通过BitBlt()在屏幕上进行显示。利用OnTimer()函数定时一定的时间对不同位置的箭头进行显示,这样就实现了箭头的动态移动。而且利用OnTimer()函数在不同位置显示时,必须先将原来显示的图形去掉,然在新的位置上画出图形。 在图4虚拟仪表显示界面中轮速和车速的显示是用表盘+指针的形式进行显示。油压、水温和里程用Edit box的形式显示。油位和电压用进度条显示。为了避免在显示时的轮速和车速表盘的闪烁问题,我们只实时的刷新车速和轮速的指针。采用的方法是如果要显示的数据与原来数据相同,指针不变。否则我们先用底色将原来的指针覆盖,然后在新的位置画出指针。
故障诊断界面的显示如图5所示,左侧显示出车内故障的大体位置,然后在右侧显示出出现故障的部件、位置及其故障名称。这样有利于故障的排除与维修。
图3混合动力界面
图4 虚拟仪表界面