基于Android车载虚拟仪表人机界面设计.docx
- 文档编号:10245003
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:11
- 大小:115.37KB
基于Android车载虚拟仪表人机界面设计.docx
《基于Android车载虚拟仪表人机界面设计.docx》由会员分享,可在线阅读,更多相关《基于Android车载虚拟仪表人机界面设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于Android车载虚拟仪表人机界面设计
摘要
车载虚拟仪表人机界面,是驾驶员获取汽车工况数据的主要界面,便于驾驶员实时全面地掌握汽车工作状态,有效地与汽车进行人机交互,对保障汽车安全稳定的行驶有着重要意义,目前普遍使用的是WindowsCE和Linux操作系统。
WindowsCE操作系统功能稳定,有完善的技术支持,但价格昂贵、源代码封闭、网络可利用资源较少;Linux操作系统的最大优势在于免费和开源,是车载信息显示系统的主流操作系统,但其并不是基于移动设备开发的,不能完全满足移动设备的需求。
Android是Google开发的一款基于开源操作系统Linux的开放、开源移动平台,对于目前主流的嵌入式平台支持良好,Android系统的优越性能己在多款移动设备上得到验证。
它包括操作系统用户界面和应用程序而且不存在任何以往阻碍移动产业创新的专有权障碍。
文中提出利用Android作为车载虚拟仪表软件开发平台,在Android提供的应用程序框架上来实现虚拟仪表的人机界面。
关键词:
虚拟仪表操作系统人机界面Android
Abstract
Vehiclevirtualinstrumentinterface,isthemaininterfacedrivergetsconditiondataofautomobile,itisconvenientforthedrivertoreal-timetograsptheworkingconditionsofautomotive,effectivehuman-computerinteractionandtheautomobile,hasthevitalsignificancetoguaranteesafeandstablerunningofthecar,atpresentthewidespreaduseofWindowsCEandtheLinuxoperatingsystem.FunctionofWindowsCEoperatingsystemstability,asoundtechnicalsupport,butthepriceisexpensive,thesourcecode,canusefewerresourcesclosednetwork;maximumadvantageofLinuxoperatingsystemisfreeandopensource,isavehicleinformationdisplaysystemofmainstreamoperatingsystem,butitisnotbasedonthemobiledevicedevelopment,cannotmeetthedemandsofmobileequipmentdemand.
AndroidisthedevelopmentofaGooglebasedonopensourcemobileplatform,opensourceoperatingsystemLinux,forthecurrentmainstreamembeddedplatformsupport,superiorperformanceoftheAndroidsystemhasbeenvalidatedinavarietyofmobiledevices.Itincludestheoperatingsystemuserinterfaceandapplicationprogramandthereisnopasthinderthemobileindustryinnovationproprietaryobstacles.InthispaperusingAndroidasthevirtualinstrumentsoftwaredevelopmentplatform,applicationframeworkprovidedbyAndroidtorealizevirtualinstrumentinterface.
KEYWORD:
VirtualinstrumentoperatingsysteminterfaceAndroid
目录
第一章绪言1
第一节系统硬件体系1
第二章Android软件系统的定制4
第一节Android系统架构4
第二节程序重新开发5
第三章应用程序的设计与实现8
第一节模块的分类8
第四章结束语10
结论11
致谢12
参考文献13
第一章绪言
第一节系统硬件体系
虽然Android是作为一款手机软件平台进行开发的应用程序框架和应用程序但其本质是一个嵌入式软件开发平台。
若将Android用于车载虚拟仪表系统的开发,需要对仪表系统应用的特点进行调整,系统采用的硬件平台是REAL210,CPU处理速度600MHz~1GHz,基于Cortex—A8架构。
系统中主要的硬件模块有音频模块、CAN模块、液晶显示模块、串口和以太网通信模块,如图1.1所示。
图1.1硬件系统架构
以嵌入式系统的硬件为背景,对主要部件给予客观的分类和评价。
硬件是软件的基石,固然它硬件是有多么的重要。
嵌入式系统开发与软件开发有巨大的差别!
只有充分了解硬件,软件才能更大限度的挖掘硬件的能力。
所谓硬件系统,是指构成计算机的物理设备,即由机械、光、电、磁器件构成的具有计算、控制、存储、输入和输出功能的实体部件。
如CPU、存储器、软盘驱动器、硬盘驱动器、光盘驱动器、主机板、各种卡及整机中的主机、显示器、打印机、绘图仪、调制解调器等等,整机硬件也称“硬设备”。
随着电子系统的复杂化,系统设计已经成为一门重要的学科,传统的反复试验法已经越来越不适应时代的发展。
发展迅速的软硬件协同设计技术越来越受到人们的重视。
它是在系统目标要求的指导下,通过综合分析系统软硬件功能及现有资源,最大限度地挖掘系统软硬件之间的并发性,协调设计软硬件体系结构,以使系统工作在最佳工作状态。
硬件系统分为三种典型结构
一、单总线结构
即用一组系统总线将计算机系统的各部分连接起来,各部分之间可以通过总线交换信息。
这种结构的优点是易于扩充新的I/O设备,并且各种I/O设备的寄存器和主存器的存储单元可以统一编址,使CPU访问I/O设备更方便灵活;其缺点是同一时刻只能允许挂在总线上的一对设置之间互相传送信息,也即分时使用总线,这就限制了信息传送的吞吐量,这种结构一般用在微型计算机和小型计算机中。
二、双总线结构
为了消除信息传送的瓶颈,常设置多组总线,最常见的是在主存和CPU之间设置一组专用的高速存储总线。
这种结构的优点是控制线路简单,对I\O总线的传送速率要求低;其缺点是CPU的工作效率较低,因为I/O设备与主存之间的信息交换要经过CPU进行。
以存储器为中心的双总线结构中,主存储器可通过存储总线与CPU交换信息,同时还可以通过系统总线与I/O设备交换信息,这种结构的优点是信息传送速率高;其缺定是需要增加硬件的投资。
三、采用通道的大型系统结构
为了扩大系统的功能和提高系统的效率,在大、中型计算机系统中采用通道结构,在这种结构中,一台主机可以连接多个通道,一个通道可以连接一台或多台I/O控制器,一台I/O控制器又可以连接一台或者多台I/O设备,所以它具有较大的扩展余地,另外由通道来管理和控制I/O设备,减轻了CPU负担,提高了整个系统的效率。
最小硬件系统
嵌入式系统的硬件设计与其应用场合和应用系统的不同而有所差别。
一般情况下,用户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路搭配不同类型外设,构成不同用途、不同不同规模的应用系统。
这些系统,无论其规模多大,从硬件上看,都可以分为由核心电路构成的最小系统以及各种各样外部设备所需的外围接口电路。
通常最小硬件系统指的是,由处理器以及SDRAM和FLASH构成的存储电路,再加上一些必要的辅助电路构成的核心系统。
最小硬件系统不仅是整个硬件系统的核心部分,它的构成对软件系统也有重要的影响,其构成决定了处于软件系统最底层的Bootloder的设计,同时它也是嵌入式操作系统正常运行的基础。
换而言之,最小硬件系统及其之上的最底层的最小软件系统构成了嵌入式系统最基本最核心的部分
第二章Android软件系统的定制
第一节Android系统架构
由于Android最初是基于手机软件开发平台进行设计的,而且其中大部分模块都是为手机通信所设计,为节约开发板资源,需要将Android系统中不必要的组件剪裁掉,保留必要的最小系统。
因此必须对框架进行修改,将与电话、短信等相关的模块移除。
仅留下必需的Android的核心模块,包括PackageManager、SystemService、InputService、HardwareSerVice和SystemServer等。
通过修改SystemServer的加载过程可以去掉不需要的服务和模块,另外还要实现底层硬件的驱动程序,重新交叉编译Linux2.6内核,并在驱动程序实现的基础上封装函数库,以便Android的应用程序通过JNI的方式访问底层驱动。
经过定制和修改过的Android系统架构如图2所示。
图2.1定制的Android系统架构
车载虚拟仪表人机界面的应用程序需要进行重新开发,主要是界面模块、CAN模块、数据访问模块和告警模块。
其中CAN模块设计成Service的方式。
数据访问模块设计为ContentProvider。
告警模块采用的通知方式为BroadcastReceiver和Notifica。
系统通电后,在Android的SystemServer中首先启动CAN模块,然后启动主界面的程序
第二节程序重新开发
应用程序的设计与实现
应用程序的系统架构。
通过PackageManager提供的各个APK的信息以菜单方式对各个功能模块进行调用。
51CTO为大家介绍过《AndroidSNK初探》,Android开发必须要了解构造块,Android应用程序是由四个重要组成部分组成的,这四种构造块如下:
◆Activity
◆IntentReceiver
◆Service
◆ContentProvider
51CTO推荐专题:
Android开发应用详解
但是,并不是每一个Android应用程序都需要这四种构造块,这不是必须的,某些时候,我们只需要这四种中的几种组合成我们的应用。
当我们明确了我们的应用需要哪些构造块后,我们就需要在AndroidManifest.xml中登记这些构造块的清单。
这是一个XML配置文件,这个配置文件用于定义我们的应用程序的组件、组件的功能及必要条件等。
这个配置文件是每个Android应用必需的。
对于AndroidMainfest.xml的Schema,参考SDK包附带的文档。
以下,我们对四种构造块做一些说明:
一、Activity
Activity是Android构造块中最基本的一种,在应用中,一个activity通常就是一个单独的屏幕。
每一个activity都被实现为一个独立的类,并且继承于Activity这个基类。
这个activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应。
大部份的应用都会包含多个的屏幕。
例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。
每一个这样的屏幕,就是一个activity。
从一个屏幕导航到另一个屏幕是很简单的。
在一些应用中,一个屏幕甚至会返回值给前一个屏幕。
当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。
用户可以返回到历史堆栈中的前一个屏幕。
当屏幕不再使用时,还可以从历史堆栈中删除。
默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。
Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动。
Intent类用于描述一个应用将会做什么事。
在Intent的描述结构中,有两个最重要的部分:
动作和动作对应的数据。
典型的动作类型有:
MAIN(activity的门户)、VIEW、PICK、EDIT等。
而动作对应的数据则以URI的形式进行表示。
例如:
要查看一个人的联系方式,你需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI。
与之有关系的一个类叫IntentFilter。
相对于intent是一个有效的做某事的请求,一个intentfilter则用于描述一个activity(或者IntentReceiver)能够操作哪些intent。
一个activity如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI。
IntentFilter需要在AndroidManifest.xml中定义。
通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。
当向前导航时,activity将会调用startActivity(IntentmyIntent)方法。
然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的activity。
新的activity接收到myIntent的通知后,开始运行。
当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:
A、Activities能够重复利用从其它组件中以Intent的形式产生的一个请求;
B、Activities可以在任何时候被一个具有相同IntentFilter的新的Activity取代。
二、IntentReceiver
当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个IntentReceiver。
虽然IntentReceiver在感兴趣的事件发生时,会使用NotificationManager通知用户,但它并不能生成一个UI。
IntentReceiver在AndroidManifest.xml中注册,但也可以在代码中使用Context.registerReceiver()进行注册。
当一个intentreceiver被触发时,你的应用不必对请求调用intentreceiver,系统会在需要的时候启动你的应用。
各种应用还可以通过使用Context.broadcastIntent()将它们自己的intentreceiver广播给其它应用程序。
三、Service
一个Service是一段长生命周期的,没有用户界面的程序。
比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。
在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。
然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。
在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。
同时,系统也将保持这个service一直执行,直到这个service运行结束。
另外,我们还可以通过使用Context.bindService()方法,连接到一个service上(如果这个service还没有运行将启动它)。
当连接到一个service之后,我们还可以service提供的接口与它进行通讯。
拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。
四、ContentProvider
应用程序能够将它们的数据保存到文件中、SQL数据库中,甚至是任何有效的设备中。
当你想将你的应用数据与其它的应用共享时,ContentProvider将会很有用。
一个ContentProvider类实现了一组标准的方法,从而能够让其它的应用保存或读取此ContentProvider处理的各种数据类型。
第三章应用程序的设计与实现
第一节模块的分类
模块可以分为四大类,CAN模块、数据访问模块、功能模块和告警模块。
CAN模块
CAN模块用于数据的采集和处理,CAN模块接到数据后,要对数据进行解析,判断出接收到的数据类型。
最终得到所需要的值。
计算方法为根据参数所在数据域的字节位置提取其对应的原始数,再根据该参数对应的分辨率和偏移量得到参数值,其参数值的计算方法为:
参数值=参数原始数×分辨率+偏移量。
通过编程计算出数据代表的实际发动机状态值,即可准确地在车辆实时功能模块中显示当前的车辆状态。
数据访问模块
程序的数据访问模块,采用Android系统内置的SQLite数据库,对一些重要车况信息自动记忆存储,便于分析和维修,起到汽车“黑匣子”的作用。
存储的车况信息可以通过点击回放按钮直接在仪表界面上回放,真实再现汽车行进过程中的状况。
首先调用.openOrCreateDatabase()创建vehicle_database.db数据库,然后配置SQLite数据库属性通过。
创建一个数据表分别定义:
行驶日期、出厂信息、车速、转速信号、启动、停止时刻、行使里程、报警信息等。
将黑匣子接收到的数据对应数据表定义的格式通过.insert()向数据表中插入数据,通过.delete()指定日期来删除过期的数据。
显示历史数据需要先通过DatePicker获取用户输入的年、月、日,并将具体日期数值提取出来,将条件放入SQL查询语句.query()中来查询,定义一个Cursor返回结果,然后创建一个数据适配器将Cursor的结果直接映射到ListView中的对应的TextView上。
功能模块
功能模块用于测控车辆的速度、发动机转速、水温和燃油、告警事件的显示。
系统设计的功能模块界面显示如图3所示。
如图3功能模块界面显示
告警模块
告警模块本身是一个BroadcastReceiver,它负责接收其他模块的告警事件,超速、油量、水温、油压等,并将这些信息写入数据库,同时调用告警显示界面显示对应的信息或以Notification的方式在状态栏进行提示。
在Android系统中,所有的应用程序之间都通过Binder进行通信,这种IPC机制是基于Linux底层驱动实现的,与传统的进程间通信机制相比,它的执行具有更高的效率和更好的扩展性。
第四章结束语
利用Android作为人机界面所开发的框架通过对各个功能模块的细化,可以使系统设计更合理,模块结构更独立,容易进行软件维护和代码二次开发,基于Android应用程序框架设计的各个模块,可以进行自由修改和替换,提高了系统的可定制性,虽然Android是手机软件开发平台,但凭借其优秀的系统架构设计和理念,会有越来越多的车载虚拟仪表采用Android作为开发平台。
结论
本系统是基于Android车载虚拟仪表人机界面设计,该系统具备一个可以商用的几乎所有的条件,实现了用户的管理,
致谢
从这篇文论选题到论文撰写结束的这段时间里,我要感谢我的指导老师,在整个设计过程中,她给予了我耐心的指导和帮组,当然我还要感谢帮组过我的同学,我们在相互学习和交流中,解决问题共同进步,最后还要感谢信息系的老师们,感谢你们为我们的学习与成才创造各种条件和付出的辛勤劳动。
感谢所有关心和帮组我成长的老师们,有你们的支持和帮组,才使我顺利完成了毕业设计。
在这道一句:
您们辛苦了,感谢您们!
最后,衷心感谢在百忙之中评阅论文和参加各位答辩的老师们。
参考文献
【1】岳传真,Android系统移植和应用程序开发【D】上海:
复旦大学,2010.
【2】普措才仁,冯旭.基于Linux的ARM9嵌入式车载系统的设计与实现【J】.自动化于仪器仪表,2010(4);39—42,.
【3】陈璟,陈平华,李文亮,Android内核分析【J】.现代计算,2009(11):
112—115.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 车载 虚拟 仪表 人机界面 设计