毕业论文范文网-论文范文
电气工程 会计论文 金融论文 国际贸易 财务管理 人力资源 学前教育 德语论文 工程管理 文化产业 工商管理 会计专业 行政管理 广告学
机械设计 汉语文学 英语论文 物流论文 电子商务 法律论文 工商管理 旅游管理 市场营销 药学论文 播音主持 人力资源 金融论文 保险学
制药工程 生物工程 包装工程 模具设计 测控专业 工业工程 教育管理 行政管理 计算机论 电子信息 市场营销 法学论文 财务管理 投资学
体育教育 小学教育 印刷工程 土木工程 书法论文 护理论文 心理学论 信息管理 公共事业 给水排水 新闻专业 摄影专业 广电编导 经济学
  • 范文首页 |
  • 毕业论文 |
  • 论文范文 |
  • 计算机论文 |
  • 外文翻译 |
  • 工作总结 |
  • 工作计划 |
  • 现成论文 |
  • 论文下载 |
  • 教学设计 |
  • 免费论文 |
  • 原创论文 |
搜索 高级搜索

原创毕业论文

当前位置:毕业论文范文网-论文范文 -> 免费论文 -> 计算机论文

面向嵌入式系统的图形用户界面研究

作者: 浏览:6次
免费专业论文范文
免费专业论文
政治工作论文
计算机论文
营销专业论文
工程管理论文范文
医药医学论文范文
法律论文范文
生物专业论文
物理教学论文范文
人力资源论文范文
化学教学论文范文
电子专业论文范文
历史专业论文
电气工程论文
社会学专业论文
英语专业论文
行政管理论文范文
语文专业论文
电子商务论文范文
焊工钳工技师论文
社科文学论文
教育论文范文
数学论文范文
物流论文范文
建筑专业论文
食品专业论文
财务管理论文范文
工商管理论文范文
会计专业论文范文
专业论文格式
化工材料专业论文
英语教学专业论文
电子通信论文范文
旅游管理论文范文
环境科学专业论文
经济论文
人力资源论文范文
营销专业论文范文
财务管理论文范文
物流论文范文
财务会计论文范文
数学教育论文范文
数学与应用数学论文
电子商务论文范文
法律专业论文范文
工商管理论文范文
汉语言文学论文
计算机专业论文
教育管理论文范文
现代教育技术论文
小学教育论文范文
机械模具专业论文
报告,总结,申请书
心理学论文范文
学前教育论文范文

收费计算机专业论文范文
收费计算机专业论文
Delphi
ASP
VB
JSP
ASP.NET
VB.NET
java
VC
pb
VS
dreamweaver
c#.net
vf
VC++
计算机论文
毕业论文范文题目:面向嵌入式系统的图形用户界面研究,论文范文关键词:面向嵌入式系统的图形用户界面研究
面向嵌入式系统的图形用户界面研究毕业论文范文介绍开始:
摘  要
伴随着信息家电,手持设备,无线设备等的迅速发展,相应的硬件和软件也得到迅速发展。许多设备都配有 Intel,MIPS,摩托罗拉等公司生产的32位微处理器,甚至还使用了液晶显示器。许多开发商也开始为这些设备提供界面友好的嵌入式操作系统。 利用Linux搭建嵌入式操作系统是近年来出现的最令人振奋的方案。这有多方面的原因。首先,运行在嵌入式系统上的Linux能够提供全功能的桌面计算(Desktop Computing),且由于其开放代码,定制变得非常方便。其次,Linux 已经支持大多数嵌入式系统上使用的芯片,包括 StrongARM , MIPS 和 PowerPC。 最后,Linux是免费的,使用Linux 不需要付出任何费用。所以利用 Linux 作为底层操作系统, 其上使用一个 GUI 系统成为现在日益流行的嵌入式操作系统的解决方案。市场上常见的 PDA 等小型手持式设备上,以前由于硬件条件等的限制,我们看到的用户界面都非常简单,几乎看不到 PC 机上华丽美观的 GUI 界面。但最近出现的 Palm 等手持式电脑或者在 Windows CE 等面向嵌入式系统的操作系统上,我们已经看到了完整的图形用户界面支持。随着手持式设备的硬件条件的提高,估计嵌入式系统对轻量级 GUI 的需求会越来越迫切。近来的市场需求也显示,越来越多的嵌入式系统,包括 PDA、机顶盒、DVD/VCD 播放机、WAP 手机等等系统均要求提供全功能的 Web 浏览器。这包括 HTML 4.0 的支持、java script 的支持,甚至包括 Java 虚拟机的支持。而这一切均要求有一个高性能、高可靠的 GUI 系统的支持。 受导师的影响,本人长期以来对以Linux 操作系统比较感兴趣,并从研二开始加入由魏永明先生发起的 MiniGUI 项目,对整个MiniGUI系统及同类系统如 Microwindows 等进行了一定的研究,并对 MiniGUI 进行了一定的改进和功能扩充。本论文基于这些事实,对面向嵌入式系统的 GUI 系统的体系结构和一些技术内幕做了较深入的探讨。 论文首先概述了嵌入式系统及用户界面的发展情况,接着介绍了几种嵌入式系统下的图形用户界面,通过相互比较,指出和通用的图形用户界面系统相比,嵌入式系统下的图形用户界面需要有轻型、占用资源少,高性能,高可靠性,可配置等特点。第三章介绍了典型系统MiniGUI,第四章介绍了本人实现的MiniGUI对Type1 字体的支持。本文的第五章将介绍 MiniGUI 输入和图形输入/输出引擎的设计,实现难点及相关的一些技术细节。MiniGUI的私有输入和图形输入/输出引擎为本人设计实现,在这些过程中获得的一些宝贵经验将一并介绍。第六章给出MiniGUI的一些应用实例。最后是一点感想和展望。关键词: 图形用户界面; 嵌入式系统;私有输入和图形输入/输出引擎
第一章  嵌入式系统及用户界面概况1.1  嵌入式系统概况1.1.1  嵌入式技术的历史发展嵌入式系统的出现至今已经有30多年的历史了,嵌入式技术也历经了几个发展阶段。进入90年代后,以计算机和软件为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、艺术、社会文化等各个领域,掀起了一场数字化技术革命。多媒体技术与Internet的应用迅速普及,消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式技术再度成为一个研究热点。综观嵌入式技术的发展,大致经历了以下4个阶段[1]。         第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。这一阶段系统的主要特点是:系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格很低,以前在国内工业领域应用较为普遍,但是已经远远不能适应高效的、需要大容量存储介质的现代化工业控制和新兴的信息家电等领域的需求。         第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段系统的主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。         第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API),开发应用程序简单;嵌入式应用软件丰富。         第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。1.1.2  嵌入式系统的技术特点和应用前景嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的“器件”。嵌入式处理器主要由一个单片机或微控制器(MCU)组成。而这些嵌入式CPU目前多是8位和16位的,与32位或64位的高性能处理器相比,具有很强的经济性和现实性。相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通讯设备、IC卡或信用卡的读取设备等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强等特点,可以嵌入到现有任何信息家电和工业控制系统中。从软件角度来看,嵌入式系统具有不可修改性、系统所需配置要求较低、系统专业性和实时性较强等特点。后PC时代是一个真实的阶段,而且是一个可以预测的时代。嵌入式系统就是与这一时代紧密相关的产物,它将拉近人与计算机的距离,形成一个人机和谐的工作与生活环境。从某一个角度来看,嵌入式系统可应用于人类工作与生活的各个领域,具有极其广阔的应用前景。嵌入式系统在传统的工业控制和商业管理领域已经具有广泛的应用空间,如智能工控设备、POS/ATM机、IC卡等;在家庭领域更具有广泛的应用潜力,如机顶盒、数字电视、WebTV、网络冰箱、网络空调等众多消费类和医疗保健类电子设备等;此外还有在媒体手机、袖珍电脑、掌上电脑、车载导航器等方面应用,将极大地推动嵌入式技术深入到生活和工作的方方面面。它在娱乐、军事方面的应用潜力也是巨大的,而且是有目共睹的。1.1.3  典型的嵌入式系统 信息家电商机引发全球嵌入式操作系统平台大战,全球4大操作系统阵营WinCE[35]、Palm OS[36]、EPOC[37]和Linux[38]展开规格战,各拥有软件及硬件合作厂商逐鹿信息家电市场的份额。 全球手持式信息家电快速增长,据预测,2000年至2004年市场增长率将到达77.4%,个人数码助理器(PDA)、智慧型手机等手持式信息家电操作系统竞争日益激烈。除了为后个人电脑时代的硬件大厂带来新一轮商机外,应用软件厂商包括电子字典、电子地图、游戏开发业者的商机也大量涌现。 微软窗口操作系统拥有在个人电脑上的操作系统占有率的优势,使WinCE拥有强大的窗口资源支援。不过Palm OS操作系统拥有全球PDA产品70%的市场占有率;同时获得3COM、IBM和索尼等跨国公司的支持。EPOC是发展自欧洲的操作系统、是由世界上最大的3家移动电话厂商诺基亚、爱立信和摩托罗拉所共同开发、整合组成新公司,开发出来的新操作系统;在3大电话厂商的合作下,EPOC市场潜力很大,且占有率高,但应用功能以手机为主,目前并不开放授权。此外,在3大主流操作系统品牌外,Linux也将是今后一股强劲的力量;由于Linux开放源始码,也成为各家厂商极力发展的操作系统,加上其核心小,潜力可观。1.1.4  把握契机,改变我国在自主产权方面相对匮乏的局面 嵌入式系统将成为IT界的又一个焦点,开发中国自主产权的嵌入式处理器和嵌入式操作系统,对于我们国家的民族IT工业来讲,将有十分重要的战略意义。我们应该抓住机遇,组织力量,重点出击,取得主动权。从目前国内IT市场来看,嵌入式系统及其产品在由家电产品和Internet衍生出来的新型市场中占有主导地位和独特份额。因此,嵌入式系统的市场争夺战,是未来后PC时代IT市场的关键之战。 嵌入式CPU是嵌入式系统的核心。拥有自己的嵌入式CPU和支撑硬件是发展自主产权嵌入式系统的前提条件和基础。操作系统是软件产业的基础和龙头,它能左右软件产业发展的方向,是世界软件产业最大的利润来源。研制自主版权的嵌入式操作系统意义重大,它可以摆脱PC时代我们被外国牵着鼻子走的局势,可以摆脱Wintel的束缚,使中国的IT行业真正走向成熟和自立。 对于嵌入式操作系统应尽早抓标准,既可防止不合国情的外国产品成为事实标准,也可防止出现无序竞争。在另一方面,嵌入式系统的硬件技术已经成熟,只要引进先进技术,根据专业性的特征,加以吸引和同化,就可以形成自己的嵌入系统硬件生产体系。此外,可以将嵌入式系统设计和开发列入产业发展计划,重点支持软件和芯片设计发展;在政府有关部门的支持下,建立嵌入式硬件和软件开发基地,创造良好的开发环境,集中优秀人才和先进技术。同时国内的软件开发商、硬件制造商、信息服务商、信息运营商应该结成联盟,形成产业链,产生总体优势,形成我们自己的竞争优势。1.2  用Linux 搭建嵌入式系统 IDC发布的统计表明,未来的4~5年内,信息家电市场会增长5~10倍,这将带动嵌入式操作系统的发展[2]。另据统计,现在嵌入式系统带来的工业年产值已经超过了1万亿美元,为此相关厂商纷纷将注意力集中到了嵌入式操作系统,如Microsoft推出的Windows CE。但Windows CE并未像人们预期的那样得到用户的认可,原因之一是厂商和用户又多了一个选择,那就是嵌入式Linux。 最近来自美国的Transmeta[39]公司和网虎国际[40]的两条消息,再次将世人的眼光吸引到Linux的身上:Linux之父Linus Torvards在TRANSMETA开发出了一款MobelLinux,而网虎国际也开发出全球最小的Linux内核——夸克(QUARK)。这两款应用于嵌入式操作系统的Linux系统,目前已成功地在一些芯片上获得了应用。这也许是给大家的一个信号:Linux将在嵌入式领域获得广泛应用,信息家电时代的来临已为期不远。 嵌入式Linux则是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个Kernel(内核)及一些根据需要进行定制的系统模块组成。其Kernel很小,一般只有几百KB左右。即使加上其他必须的模块和应用程序,所需的存储空间也很小。它有多任务、多进程的系统特征,有些还具有实时性。一个小型的嵌入式Linux系统只需要引导程序、Linux微内核、初始化进程3个基本元素。运行嵌入式Linux的CPU可以是x86、Alpha、Sparc、MIPS、PPC等。与这些芯片搭配的主板都很小,与一张PCI卡大小相当,有的甚至更小。嵌入式Linux所需的存储器不是软磁盘、硬盘、Zip盘、CD-ROM、DVD这些众所周知的常规存储器,它使用Rom、CompactFlash、M-Systems的DiskOnChip、Sony的MemoryStick、IBM的MicroDrive等体积极小——与主板上的BIOS大小相近,存储容量不太大的存储器。它的内存可以使用普通的内存,也可以使用专用的RAM。与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备产品的绝佳资源。Linux与生俱来的优秀网络血统,更为今后的发展铺平了一条宽广平坦的大路。这里的网络,并不仅仅指Internet。关于Linux在Internet中的优势,将需要专门文章论述。遍布全球的Linux爱好者又能给予Linux开发者强大的技术支持。因此,Linux具有更小、更稳定、价格竞争力等优势。正是嵌入式操作系统的特殊要求为Linux在嵌入式系统中的发展提供了广阔的空间,使得Linux成为嵌入式操作系统中的新贵。在应用上,嵌入式Linux可应用于信息家电(机顶盒、数字电视)、多媒体手机、工业、商业控制(智能工控设备、POS/ATM机)、电子商务平台,甚至军事应用等。Linux 的另一个优点是它的灵活性。在一个平台(例如有64兆内存的Pentium III)下编写的应用程序可轻而易举地移植到8兆内存的嵌入式芯片上。微软的Windows CE 及 NT Embedded等嵌入式系列则无此优势[27]。当然,如果没有强大的开发者做后盾,单纯一个操作系统是没用的。Linux 的优势还在于大批的程序开发者熟悉C, C++, Unix 或 Linux 下的Python[43]或 PERL,而这些精英能够编写嵌入式Linux 代码。 基于上述嵌入式Linux的优势和广阔的应用空间,国外不少的大学、研究机构和著名的公司纷纷加入到嵌入式Linux的开发工作当中,较成熟的嵌入Linux产品不断涌现。主要有RTLinux[41]:由美国新墨西哥理工学院开发的基于标准Linux的嵌入式操作系统。到目前为止,RTLinux已成功应用于从航天飞机的空间数据采集、科学仪器测控到电影特技图像处理等广泛的应用领域。RTLinux提供了一个精巧的实时内核,并把标准的Linux核心作为实时核心的一个进程同用户的实时进程一起调度,这样做的好处是对Linux的改动量最小,充分利用了Linux平台下现有的丰富的软件资源。Embedix[42]: 由嵌入式Linux行业主要厂商之一Lineo推出,是根据嵌入式应用系统的特点重新设计的Linux发行版本。Embedix提供了超过25种的Linux系统服务,包括Web服务器等。Embedix基于Linux 2.2内核,并已经成功地移植到了Intel x86和PowerPC处理器系列上。Xlinux[40]: 由美商网虎国际公司推出,号称是世界上最小的嵌入式Linux系统,核心只有143KB,而且还在不断减小。Xlinux核心采用了“超字元集”专利技术,让Linux核心不仅可与标准字符集相容,还涵盖了12个国家地区的字符集。 目前,国外许多具有前瞻性的企业已经推出了嵌入式Linux操作系统的PDA、相机或者更为概念化的信息家电。例如网虎国际公司就与Intel合作,将Quark(夸克)Linux应用于Intel 1999年推出的StrongARM芯片上,使人们在这一平台上享受上网和听MP3的乐趣。反观国内,只有网虎、TurboLinux,篮点等少数几家公司推出了嵌入式Linux操作系统,所以,嵌入式Linux操作系统在国内的发展和应用尚需努力。
1.3  用户界面概况1.3.1  用户界面的历史 计算机用户界面是指计算机与其使用者之间的对话接口[3],是计算机系统的重要组成部分。计算机的发展史不仅是计算机本身处理速度和存储容量飞速提高的历史,而且是计算用户界面不断改进的历史。早期的计算机是通过面板上的指示灯来显示二进制数据和指令,人们则通过面板上的开关、扳键及穿孔纸带送入各种数据和命令。50年代中、后期,由于采用了作业控制语言(JCL)及控制台打字机等,使计算机可以批处理多个计算任务,从而代替了原来笨拙的手工扳键方式,提高了计算机的使用效率。 1963年,美国麻省理工学院在709/7090计算机上成功地开发出第一个分时系统CTSS,该系统连接了多个分时终端,并最早使用了文本编辑程序。从此,以命令行形式对话的多用户分时终端成为70年代乃至80年代用户界面的主流。 80年代初,由美国Xerox公司Alto计算机首先使用的Smalltalk-80程序设计开发环境,以及后来的Lisa、Macintosh等计算机,将用户界面推向图形用户界面的新阶段。随之而来的用户界面管理系统和智能界面的研究均推动了用户界面的发展。用户界面已经从过去的人去适应笨拙的计算机,发展到今天的计算机不断地适应人的需求。 用户界面的重要性在于它极大地影响了最终用户的使用,影响了计算机的推广应用,甚至影响了人们的工作和生活。由于开发用户界面的工作量极大,加上不同用户对界面的要求也不尽相同,因此,用户界面已成为计算机软件研制中最困难的部分之一。当前,Internet的发展异常迅猛,虚拟现实、科学计算可视化及多媒体技术等对用户界面提出了更高的要求。面临新的挑战,用户界面将如何发展?1.3.2  图形用户界面的特征 图形用户界面(GUI)的广泛流行是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地进行操作 。“Visual”已成为当前最流行的形容词,如Visual Basic、Visual C++等。为什么图形用户界面受到如此青睐?它的主要特征是什么?*         WIMP  其 中:W(Windows) 指窗口,是用户或系统的一个工作区域。一个屏幕上可以有多个窗口。I(Icons)指图符,系形象化的图形标志,易于人们隐喻和理解。M(Menu)指菜单,可供用户选择的功能提示。P(Pointing Devices) 指鼠标器等,便于用户直接对屏幕对象进行操作。 *        用户模型 GUI采用了不少Desktop桌面办公的隐喻,使应用者共享一个直观的界面框架。由于人们熟悉办公桌的情况,因而对计算机显示的图符的含义容易理解,诸如:文件夹、收件箱、画笔、工作簿、钥匙及时钟等。*         直接操作 过去的界面不仅需要记忆大量命令,而且需要指定操作对象的位置,如行号、空格数、X及Y 的坐标等。采用GUI后,用户可直接对屏幕上的对象进行操作,如拖动、删除、插入以至放大和旋转等。用户执行操作后,屏幕能立即给出反馈信息或结果,因而称为所见即所得(What You See Is What You Get) 。用视、点( 鼠 标)代替了记、击(键盘) , 给用户带来了方便。1.3.3  图形用户界面系统的结构模型 一个图形用户界面系统通常由三个基本层次组成。它们是显示模型,窗口模型和用户模型。用户模型包含了显示和交互的主要特征,因此图形用户界面这一术语有时也仅指用户模型。下图给出了图形用户界面系统的层次结构。桌面管理系统用户模型窗口模型显示模型操作系统硬件平台图1.1 图形用户界面系统的层次结构 图1.1 中的最底层是计算机硬件平台,如Macintosh,Sun SPARC等。硬件平台的上面是计算机的操作系统。大多数图形用户界面系统都只能在一两种操作系统上运行,只有少数的产品例外。 操作系统之上是图形用户界面的显示模型。它决定了图形在屏幕上的基本显示方式。不同的图形用户界面系统所采用的显示模型各不相同。例如大多数在UNIX之上运行的图形用户界面系统都采用X 窗口作显示模型;MS Windows 则采用 Microsoft公司自己设计的图形设备接口(GDI)作显示模型。 显示模型之上是图形用户界面系统的窗口模型。窗口模型确定窗口如何在屏幕上显示,如何改变大小,如何移动,及窗口的层次关系等。它通常包括两个部分:一是编程工具;二是对如何移动,输出和读取屏幕显示信息的说明。因为X 窗口不但规定了如何显示基本图形对象也规定了如何显示窗口,所以它不但可以充当图形用户界面的显示模型,也可以充当它的窗口模型。 窗口模型之上是用户模型,图形用户界面的用户模型又称为图形用户界面的视感。它也包括两个部分:一是构造用户界面的工具;二是对于如何在屏幕上组织各种图形对象,以及这些对象之间如何交互的说明。比如,每个图形用户界面模型都会说明它支持什么样的菜单和什么样的显示方式。 图形用户界面系统的应用程序接口由其显示模型,窗口模型和用户模型的应用程序接口共同组成。例如OSF/Motif 的应用程序接口就是由它的显示模型和窗口模型的应用程序接口Xlib和用户模型的应用程序接口Xt Intrinsics 及 Motif Toolkit共同组成的。1.3.4  用户界面的发展:GUI+新人机交互技术 随着虚拟现实、科学计算可视化及多媒体技术的飞速发展,新的人机交互技术不断出现,更加自然的交互方式将逐渐为人们所重视。新一代界面的主要特征可描述如下:*        以用户为中心 以用户对界面的需求变化为出发点,使用户界面的外在形式和内部机制能符合不同用户的需要,这就是以用户为中心的设计思想。非特定人的连续语音识别技术将使计算机能理解人们的要求,是一种重要的输入界面和手段。鱼眼(Fisheye)技术使屏幕观察(或光标) 位置附近的内容被放大,便于用户观察。在传统的人机系统中,人被认为是操作者,人去适应机器;在一般的人机系统中,人被称为用户,能与机器对话,但无主动控制能力;而在虚拟现实系统中,人才是主动的参与者,机器将对人的各种动作做出反应。*        多通道 多通道(Multimodality)界面旨在充分利用一个以上的感觉和运动通道的互补特性来捕捉用户的意向,从而增进人机交互中的自然性。人的感觉通道有视觉、听觉、触觉、嗅觉和平衡等;人的运动通道有手、嘴、眼、头、足及身体等。现在,计算机操作时,人的眼和手十分累,效率也不高。若将听、说和手、眼等协同动作,采用多通道、以自然方式交互,可以实现高效人机通信,也可以由人或机器选择最佳反应通道,从而不会使某一通道负担过重。*        智能化 精确交互技术是指能用一种技术来完全说明用户交互目的的交互方式,键盘和鼠标器均需用户精确输入。而人们的动作或思想往往并不很精确,计算机应该理解人的要求,甚至于纠正人的错误,智能化的界面是一个重要方向。*        高带宽 现在计算机输出的内容已经可以快速、连续地显示彩色图像,其信息量非常大。而人们的输入却还是使用键盘一个又一个地敲击,因而,计算机的输入带宽是很低的。新一代的用户界面应该支持高的输入带宽,快速大批量地输入信息。语音、图像及姿势等的输入和理解是今后的发展方向。*        不限制地点 目前,计算机主要是在办公室、实验室或家庭中使用,人们面对着计算机屏幕进行操作,这种操作方式限制了计算机的应用。虽然已可用遥控器代替部分动作,但用望远镜看屏幕似不方便,而采用语音输入输出或其他计算机视觉(摄像输入)技术,则可不受地点的限制。*        图示编程 图形用户界面的编程是很费时的工作,而采用图示编程(Visual Programming)则比较简单和直观。现在有些多媒体制作工具, 如Authorware Professional、Icon Author 等 ,采用图示方法设计多媒体论文脚本,以便于交互修改、控制时间关系。新一代的用户界面应尽可能提供图示化的开发工具。
1.4 1.4           典型的GUI系统 ── X 窗口系统简介1.4.1  X 窗口系统的历史 X 窗口系统 (X-Window System,以下简称X 窗口) 是 Unix/Linux 上标准的图形界面,虽然各家各派 的Unix 上所看到的图形界面都不太一样,但是其图形界面都是以 X 协定为基础,使得各厂商之间的 Unix 图形界面可以互相沟通。 X 窗口是一套历史悠久的图形界面。早在一九八四年,麻省理工学院(MIT, Massachusetts Institute of Technology) 为了发展其校园网络,发起了一 个名为 Athena 的计划, X 窗口就是 Athena 计划的产物,也特别地溶入了网络的概念。 X 窗口原名为 W 窗口,取名自窗口 (Window) 在英文中的第一个字母,后来经过改良的W窗口就以W在英文字母排序中的下一个X为名,称为X 窗口,一直沿用到现在。 X 窗口虽然是高等学校的一项计划,但是由于有 IBM 与 DEC等厂商合作开发,X 窗口很早就被商业化了。第一个商业化的 X 窗口是出现在 DEC 的 VAX 工作站,使用的是一个名为 Ultrix 的操作系统。 X 窗口的出现吸引了各大厂商的注意,如惠普与SUN等。SUN无法认同由IBM 领导的联盟 ,而转与 AT&T 合作开发 OpenLook 窗口界面。由于SUN是Unix 的大厂商之一,最后终于造成了 X 窗口的图形界面有 OSF/Motif 与OpenLook 两大支派。一直到一九九四年SUN加入了 OSF,X 窗口的图形界面才有整合的趋势。 当初 X 窗口只定义了窗口的特性,却没有定义窗口的图形界面,所以同样有 X 窗口的特性,但是 IBM 的 OSF/Motif 与 Sun 的 OpenLook 看起就是不太一样。也因为 这样, X 窗口在图形界面有很大的伸缩性,要是你喜欢,还是可以把 X 窗口做成看起来与 MS Windows 一模一样。 IBM 联合了几家大厂商如惠普、DEC 推动 X Consortium (也就是后来的X.org),以延续 X 窗口的发展。 但是由于 X.org 的财务有问题,光靠其他集团的捐款,似乎无法解决其财务问题。 在 X.org 尚未从 TOG (The OpenGroup) 分开前曾经修改 X11R6 的版权, 以收费方式增加财务来源,但是此举受到很多的批评,而 X.org 推动 X 窗口的名声已经跌至谷底。 所以X.org 才拉拢 XFree86 加入 X.org 。1.4.2  XFree86 计划 早期 X 窗口只是架在 Unix 工作站上,没有 PC 版。 XFree86 计划成立的目的是提供一个 PC 版的 X 窗口,主要是移植到英特尔的 x86 系列处理器上, 所以才称作 XFree86 计划,后来也被移植到其他的处理器上。 XFree86 虽然不是以 GPL 授权,但是它也可以自由拷贝、散播,也可以使用在商业用途上, 所以大部份的 PC 版 Unix 如 Linux 、 BSD 等等都将XFree86 加入在操作系统的套件内。1.4.3  X 窗口系统的结构模型X 窗口采用的是客户/服务器式的结构模型。它由X协议,X服务器,客户和Xlib函数库等几部分组成。客户也称客户程序,是指在本地或者网络上运行的利用X进行显示输出的应用程序。X 服务器是一个在图形工作站上运行的服务进程,它负责对显示器的输出,键盘和鼠标的输入进行管理。客户与服务器通过网络相连接,并通过X协议进行通讯。在X 窗口中,客户程序和应用程序是两个等价的概念。客户程序可根据需要调用Xlib中的函数,对Xlib函数的调用被转换为X的协议请求,并通过网络发送给X服务器,当服务器收到协议请求后,就按照协议的要求去完成制定的任务,并通过X协议对用户做出回答。多个客户可同时连到同一服务器上,一个客户亦可与多个服务器相连接。第二章  嵌入式Linux下的GUI概况2.1  GUI 在嵌入式或实时系统中的地位在常见的 PDA 等小型手持式设备上,由于硬件条件等的限制,我们看到的用户界面都非常简单,几乎看不到PC 机上华丽美观的 GUI 支持。但最近出现的 Palm 等手持式电脑或者在 Windows CE 等面向嵌入式系统的操作系统上,我们已经看到了完整的图形用户界面支持。随着手持式设备的硬件条件的提高,估计嵌入式系统对轻量级 GUI 的需求会越来越迫切。近来的市场需求显示,越来越多的嵌入式系统,包括 PDA、机顶盒、DVD/VCD 播放机、WAP 手机等等系统均要求提供全功能的 Web 浏览器。这包括 HTML 4.0 的支持、java script 的支持,甚至包括 Java 虚拟机的支持。而这一切均要求有一个高性能、高可靠的 GUI 的支持。另外一个迫切需要轻量级 GUI 的系统是工业实时控制系统。这些系统一般建立在标准 PC 平台上,硬件条件相对嵌入式系统要好,但对实时性的要求非常高,并且比起嵌入式系统来说,对 GUI 的要求也更高。这些系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和 GUI 之上,比如 Windows 或 X Window。目前许多这类系统都建立在 DOS 等系统上,并且采用比较简单的手法实现 GUI。但是,在出现 Linux 系统之后,尤其在 RT-Linux 系统出现之后,许多工业控制系统开始采用 RT-Linux 作为操作系统,但 GUI 仍然是一个问题。X Window 太过庞大和臃肿。这样,这些系统对轻型 GUI 的需求更加突出。但是,必须清楚的是,嵌入式系统往往是一种定制设备,它们对 GUI 的需求也各不相同。有的系统只要求一些图形功能,而有些系统要求完备的 GUI 支持。因此,GUI 也必须是可定制的。综上所述,GUI 在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对 GUI 的基本要求包括[5]:1. 1.        轻型、占用资源少。2. 2.        高性能。3. 3.        高可靠性。4. 4.        可配置。
2.2  目前实时嵌入式系统 GUI 的实现方法尽管实时嵌入式系统对 GUI 的需求越来越明显,但目前 GUI 的实现方法各有不同:1.某些大型厂商有能力自己开发满足自身需要的 GUI 系统。2.某些厂商没有将 GUI 作为一个软件层从应用程序中剥离,GUI 的支持逻辑由应用程序自己负责。3.采用某些比较成熟的 GUI 系统,比如 MiniGUI,MicroWindows 或者其他 GUI 系统。在上述实现方法中,第 2 种方法是一种临时解决方案。利用这种手段编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。我们认为 GUI 是一种类似于操作系统的基础软件,这种软件系统应该遵循一定的标准,并且应该是开放源码的自由软件,从而可以让开放商集中精力开发自己的应用程序。目前看来,在 Linux 之上进行(实时)嵌入式系统开发的厂商,一般选择如下几种 GUI 系统:紧缩的 X Window 系统、MiniGUI、MicroWindows、OpenGUI、QT/Embedded 等,下面首先对这些系统进行简单介绍,并对它们的优缺点进行比较。2.2.1  紧缩的 X Window 系统众所周知,X Window 是 Linux 以及其他类 UNIX 系统的标准 GUI。X Window 系统采用标准的客户/服务器体系结构,具有可扩展性好、可移植性好等优点。但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程序的可移植性,许多厂家都试图通过对 X Window 系统的紧缩开发,使之能够在嵌入式系统上运行。国外已经开发出了大小约为 800K 的 X 服务器[5]。这对西方国家来说基本能够满足嵌入式系统的需求了。但该系统的源代码尚不开放,从而很难进行本地化开发。2.2.2  MiniGUI MiniGUI [6] 由原清华大学教师魏永明先生开发,是中国人做得较好的自由软件之一。本人也于研究生二年级加入MiniGUI的开发,并最终导致了本论文的选题。后面的章节将较详细介绍MiniGUI的体系结构,这里为不失完整性,简单介绍一下MiniGUI。 MiniGUI 是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。它主要运行于 Linux 控制台,实际可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容系统上。MiniGUI 同时也是国内最早出现的几个自由软件项目之一。MiniGUI 的主要特色有:1        遵循 LGPL [1] 条款的纯自由软件。2        提供了完备的多窗口机制。这包括:多个单独线程中运行的多窗口。单个线程中主窗口的附属。对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。1        消息传递机制。2        多字符集和多字体支持,目前支持 ISO8859-1、GB2312、Big5 等字符集,并且支持各种光栅字体和 TrueType、Type 1 等矢量字体。3        全拼、五笔等汉字输入法支持。4        BMP、GIF、JPEG、PCX 等常见图像文件的支持。5        Windows 的资源文件支持,如位图、图标、光标,插入符、定时器、加速键等。6        小巧。包含全部功能的库文件大小为 300 K左右。7        可配置。可根据项目需求进行定制配置和编译。8        高稳定性和高性能。MiniGUI 已经在Linux 发行版安装程序、CNC 系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。9        可移植性好。目前,MiniGUI 可以在 X Window 和 Linux 控制台上运行。中科院 EEOS 开发组已经成功地将 MiniGUI 移植到了他们的 POSIX 兼容系统上。蓝点软件(北京)研发中心也已经成功地将 MiniGUI 移植到了两款基于 StrongARM 的嵌入式系统上。2.2.3  MicroWindowsMicrowindows [7] 是一个著名的开放源码的嵌入式GUI软件。它和MiniGUI一起是现在开发得比较活跃的项目。本人曾花了一定的时间研究Microwindows,特别是它的driver和引擎部分。曾经利用Microwindows的中间层实现对MiniGUI窗口系统的支持,也曾经将一些代码移植到MiniGUI。这里我较详细的介绍它。 Microwindows 提供了现代图形窗口系统的一些特性。它不需要其他图形系统的支持,在Linux操作系统上,Microwindows也可以充分利用Linux提供的Framebuffer机制来进行图形显示。Mcrowindows的移植性很强,它支持很多软硬件。Mcrowindows的主要目标之一就是被运行在嵌入式 Linux上。 目前,Microwindows可以运行在 支持Framebuffer的 32位的 Linux系统上,或者也可以使用著名的 SVGALib[45] 库来进行图形显示。此外,它还被移植到16位的ELKS [2]和实模式的MSDOS上。Microwindows实现了1,2,4,8,16 和 32 位的像素支持,还实现了VGA16 平面模式的支持。Microwindows 已经被移植到一些掌上电脑。它的图形引擎被设计成能够运行在任何支持readpixel, writepixel, drawhorzline 和drawvertline, 和setpalette 的系统之上。如果底层驱动系统实现了Blitting ,则上层可以提供更多的增强功能。在底层函数的支持之下,上层实现了位图,字体,光标以及颜色的支持。除了基于调色板的1, 2, 4 和 8 位像素模式,Microwindows也实现了15,16和32位像素的真彩模式。最近,Microwindows实现了对X11的支持,这样,基于Microwindows的应用程序就可以运行在 X Window下了。该驱动程序还模拟了各种颜色和调色板模式,使得我们可以在X Window 下预览各种模式的效果。 Microwindows 可移植性非常好,基本上用 C 语言实现,只有某些关键代码被用汇编重写以提高速度。Microwindows已经支持 Intel 16位,32位CPU,MIPS R4000 以及 现在很多掌上电脑使用的ARM 芯片。在一个典型的16位系统上,整个系统,包括屏幕,鼠标,和键盘驱动程序,小于64K。在一个典型的32位系统上,包括对比例字体的支持一般也小于 100K。 Microwindows采用分层设计方法,以便不同的层面能够在需要的时候改写。充分体现了嵌入式系统定制之特色。在最底层,屏幕,鼠标/触摸屏以及键盘驱动程序提供了对物理设备访问的能力。在中间层,实现了一个可移植的图形引擎,支持行绘制,区域填充,剪切以及颜色模型等。在上层,实现多种API以适应不同的应用环境。目前,Microwindows项目实现了 Microwindows 和 Nono-X 应用接口。前者类似于 Win32, 后者类似 X Window,这样还有一个好处就是从这些系统移植代码变得非常简单。 当初,David Bell 写过一个 mini-X 服务器, Alan Cox 对其进行了一些修改。然后Alex Holden 为其加入了基于网络的客户/服务器功能,这就是 NanoGUI。接着Greg Haerr加入了NanoGUI项目并对其进行了广泛的功能增强和修改。在版本 0.5 发布前后,Greg Haerr 实现了多 API 的支持框架,并开始发布Microwindows。到了Microwindows 0.84 版本,所有对NanoGUI 的支持被加入了Microwindows,所以其实现在的 Microwindows 包括了NanoGUI 和Microwindows两个 API。 Nano-X 是类似于 X 的一个API。它基于 David Bell 的 mini-X 服务器,包括类X 的底层窗口操作原语和图形操作函数。它没有实现窗口管理,所以对窗口的处理需要使用系统提供的一个插件(widget)集,或者完全由应用程序员自己负责。目前,有一些人正在为Nano-X开发插件。 Microwindows API 接口支持 类Win32 API, 该接口试图和 Win32 完全兼容,它还实现了一些 Win32 用户模块功能,比如拖动,标题条,消息传送与产生。由于 WinCE API 是Win32的一个子集,所以Microwindows API 也是 WinCE 兼容的,可以被用于实现对 WinCE 应用程序的支持。 Microwindows支持 RGB 颜色,颜色匹配,真彩和调色板显示,3D效果的显示。也支持窗口覆盖和子窗口概念,完全的窗口和客户区剪切。比例和固定字体,还提供了字体和位图文件处理工具。优化的绘制函数被用来当用户在移动窗口时提供更好的响应。内存图形绘制和移动的实现使得屏幕画图显得很平滑,这特别在显示动画,多边形绘制,任意区域填充,剪切时有用。 Microwindows基于 MPL许可证,并且如果需要的话,也可以使用 GPL 许可证。这意位着标准的Microwindows发布版本可以被用于商业目的,并且可以被用于非开放代码的环境。一点小小的限制就是如果您的代码被加入标准版本中,这些代码必须是开放的。 MicroWindows 目前由美国一家公司在主持开发。该项目的开发非常活跃,国内也有人参与了其中的开发,并编写了 GB2312 等字符集的支持。总的说来,Microwindows的主要特色在于提供了比较完善的图形功能,包括一些高级的功能,比如 Alpha 混合(如图2.1),三维支持,TrueType 字体支持等。但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还很不完备,键盘和鼠标等的驱动还很不完善。值得一提的是,该项目的许多控件是从 MiniGUI 中移植过去的,扫雷游戏也是从 MiniGUI 中移植过去的。该项目已经启动了一个开放源码的浏览器项目,该浏览器在 KDE kfm [44]提供的 HTML 解释器的基础上开发,目前能够解释一些简单的 HTML 页面。图2.2 是ViewML的界面。
2.2.4  OpenGUI OpenGUI [8] 在 Linux 系统上存在已经很长时间了。最初的名字叫 FastGL,只支持 256 的线性显存模式。但目前也支持其他显示模式。这个库是用 C++ 编写的,只提供 C++ 接口。 OpenGUI 基于一个用汇编实现的x86图形内核,提供了一个高层的 C/C++ 图形/窗口接口。它和MiniGUI一样,也是使用 LGPL 许可证。 OpenGUI 提供了2维绘图原语,消息驱动的API ,BMP 文件格式支持。OpenGUI 功能强大,使用方便。我们甚至可以实现 Borland BGI风格的应用程序,或者是 QT风格的窗口。OpenGUI 支持鼠标和键盘的事件,在Linux上基于Framebuffer或者SVGALib实现绘图。Linux 下 OpenGUI 也支持Mesa3D [3][11]。颜色模型方面,OpenGUI已经支持8,15,16和32位模型。这基本上已经够用了。本人发现1,2,4位像素的支持在Microwindows, Libggi[10], Allegro[12]等系统上虽然已经实现,但都是bug 多多,可见这些模式使用得很少。 由于其基于汇编实现的内核并利用MMX指令进行了优化,OpenGUI运行速度非常快,可以用UltraFast形容,它支持 32 位的机器,能够在MS-DOS,QNX和Linux下运行。主要用来在这些系统中开发图形应用程序和游戏。由于历史悠久,OpenGUI非常稳定。当然,也可以看出来,由于其内核用汇编实现,可移植性收到了影响。通常在驱动程序一级性能和可移植性是矛盾的,我们必须找到一个折衷。2.2.5  Qt/EmbeddedQT/Embedded [9] 是著名的 QT 库开发商Trolltech 正在进行的面向嵌入式系统的 QT 版本。这个版本的主要特点是可移植性较好,许多基于 QT 的 X Window 程序可以非常方便地移植到嵌入式系统。但是该系统不是开放源码的,如果要使用这个库,可能需要支付昂贵的授权费用。目前,已经有了 QT/Embedded 的演示版,预计明年初将出现 QT/Embedded 的正式发行版。最近传来消息,Opera[46]、PalmPalm[47]和 Trolltech 三家公司宣布针对亚洲无线 Linux 市场成立策略联盟。这三家公司将联合在无线网络的领域里为硬件制造商开发一个无线信息家电的 Linux 完全解决方案。Opera 公司开发 Opera 网页浏览器虽然使用者数目并不如其他主流浏览器,然而其小、快,且标准兼容性高等等的特色屡屡得到使用者和企业用户的肯定。PalmPalm 科技公司则致力于嵌入式 Linux 操作系统。他们的联合是非常具有竞争力的。2.3  各种嵌入式 GUI 系统之比较比较上述几个面向嵌入式系统的 GUI,我认为目前比较成熟,同时得到最多开发人员认可的有紧缩的 X Window 系统、MiniGUI、MicroWindows 等系统。QT/Enbedded尽管刚推出,但来势凶猛。紧缩的 X Window 系统其 X 服务器可以降低到 800K 的大小,但因为 X Window 系统的运行还需要其他程序和库的支持,包括 X 窗口管理器、XLib、建立在 XLib 之上的 GTK 和 QT 等函数库,因此,紧缩的X Window 系统在运行期间所占用的系统资源很多,加上中文显示和中文输入等本地化代码之后,系统的整体尺寸和运行时的资源消耗将进一步变大。因此,嵌入式系统的开发商往往将紧缩的 X Window 系统定位在机顶盒等对资源要求并不苛刻的嵌入式系统上。QT/Enbedded由于移植了大量的原来基于QT的X Windows程序,提供了非常完整的嵌入式GUI解决方案,再加上 Opera浏览器,可以说是一个成熟的商业软件。MiniGUI 和 MicroWindows 均为自由软件,只是前者遵循 LGPL [13]条款,后者遵循 MPL[14] 条款。这两个系统的技术路线也有所不同。MiniGUI 的策略是首先建立在比较成熟的图形引擎之上,比如 Svgalib 和 LibGGI,开发的重点在于窗口系统、图形接口之上;MicroWindows 目前的开发重点则在底层的图形引擎之上,窗口系统和图形接口方面的功能还比较欠缺。举个例子来说,MiniGUI 有一套用来支持多字符集和多编码的函数接口,可以支持各种常见的字符集,包括 GB、BIG5、UNICODE 等,而 MicroWindows 在多字符集的支持上尚没有统一接口。第三章  典型的嵌入式GUI系统 MiniGUI 我在前面已经提到,MiniGUI 由原清华大学教师魏永明先生开发,是中国人做得较好的自由软件之一。本人也于研究生二年级加入MiniGUI的开发,并最终导致了本论文的选题,本章将较详细地介绍MiniGUI。3.1  项目背景 MiniGUI 最初是为了满足一个工业控制系统(计算机数控系统)的需求而设计和开发的。这个工业控制系统是清华大学为一台数控机床设计的计算机数控系统(CNC)。在比较 DOS、Windows 98、Windows NT、Linux 等系统之后,该项目组决定选择 RT-Linux 作为实时操作系统,以便满足 2ms 甚至更高的实时性。但是图形用户界面是一个问题,因为 X Window 不适合于实时控制系统,并且当时 X Window 系统的本地化也不尽人意。因此,决定自己开发一套图形用户界面支持系统。这就是 MiniGUI 产生的背景。显然,MiniGUI 一开始就针对实时系统而设计,因此,在设计之初就考虑到了小巧、高性能和高效率。目前,这个数控系统的开发已近尾声,MiniGUI 在其中担当了非常重要的角色。 在考虑到其他不同于数控系统的嵌入式系统时,为了满足千变万化的需求,必须要求 GUI 系统是可配置的。在 CNC 系统中得到成功应用之后,立即着手于 MiniGUI 可配置的设计。通过 Linux 下的 automake 和 autoconf 接口,实现了大量的编译配置选项,通过这些选项可指定 MiniGUI 库中包括哪些功能而同时不包括哪些功能。 因此,MiniGUI 是一个非常适合于工业控制实时系统以及嵌入式系统的可定制的、小巧的图形用户界面支持系统。
3.2  重要特色3.2.1  多线程和多窗口图 3.1  图形用户界面的基本元素在 MiniGUI 中,图形用户界面包括如图 3.1 所示的基本元素。MiniGUI 中的窗口基本分四类,分别为主窗口、对话框、控件和主窗口中的子窗口。MiniGUI 中的主窗口和 Windows 应用程序的主窗口概念类似,但有一些重要的不同,MiniGUI 中的每个主窗口及其附属主窗口对应于一个单独的线程,通过函数调用可建立主窗口以及对应的线程。每个线程有一个消息队列,属于同一线程的所有主窗口从这一消息队列中获取消息并由窗口过程(回调函数)进行处理。3.2.2  对话框和标准控件MiniGUI 中的对话框是一种特殊的窗口,对话框一般和控件一起使用,这两个概念和 Windows 或 X Window 中的相关概念是类似的。MiniGUI 支持的控件类型有:1 静态框:文本、图标或矩形框等。2 文本框:单行或多行的文本编辑框。3 按钮:单选钮、复选框和一般按钮等。4 列表框。5 进度条。3.2.3  其他 GUI 元素MiniGUI 还支持级联式菜单、插入符、定时器、光标、快捷键等常见的 GUI 元素。3.2.4  消息和消息循环在任何 GUI 系统中,均有事件或消息驱动的概念。在MiniGUI中,使用消息驱动作为应用程序的创建构架。在消息驱动的应用程序中,计算机外设发生的事件,例如键盘键的敲击、鼠标键的按击等,都由支持系统收集,将其以事先的约定格式翻译为特定的消息。应用程序一般包含有自己的消息队列,系统将消息发送到应用程序的消息队列中。应用程序可以建立一个循环,在这个循环中读取消息并处理消息,直到特定的消息传来为止。这样的循环称为消息循环。一般地,消息由代表消息的一个整型数和消息的附加参数组成。应用程序一般要提供一个处理消息的标准函数。在消息循环中,系统可以调用此函数,应用程序在此函数中处理相应的消息。图 3.2 是一个消息驱动的应用程序的简单构架示意。图 3.2  消息驱动的应用程序的简单构架 MiniGUI 支持如下几种消息的传递机制。这些机制为多线程环境下的窗口间通讯提供了基本途径:1    通过 PostMessage 发送。消息发送到消息队列后立即返回。这种发送方式称为“邮寄”消息。如果消息队列中的邮寄消息缓冲区已满,则该函数返回错误值。2    通过 PostSyncMessage 发送。该函数用来向不同于调用该函数的线程消息队列邮寄消息,并且只有该消息被处理之后,该函数才能返回,因此这种消息称为“同步消息”。3    通过 SendMessage 发送。该函数可以向任意一个窗口发送消息,消息处理完成之后,该函数返回。如果目标窗口所在线程和调用线程是同一个线程,该函数直接调用窗口过程,如果 处于不同的线程,则利用 PostSyncMessage 函数发送同步消息。4     通过 SendNotifyMessage 发送。该函数向指定的窗口发送通知消息,将消息放入消息队列后立即返回。由于这种消息和邮寄消息不同,是不允许丢失的,因此,系统以链表的形式处理这种消息。5     通过 SendAsyncMessage 发送。利用该函数发送的消息称为“异步消息”,系统直接调用目标窗口的窗口过程。3.2.5  图形和输入抽象层在 MiniGUI 0.3.xx 的开发中,引入了图形抽象层和输入抽象层(Graphics and Input Abstract Layer,GAL 和 IAL)的概念。抽象层的概念类似 Linux 内核虚拟文件系统的概念。它定义了一组不依赖于任何特殊硬件的抽象接口,所有顶层的图形操作和输入处理都建立在抽象接口之上。而用于实现这一抽象接口的底层代码称为“图形引擎”或“输入引擎”,类似操作系统中的驱动程序。这实际是一种面向对象的程序结构。利用 GAL 和 IAL,MiniGUI 可以在许多图形引擎上运行,比如 SVGALib 和 LibGGI,并且可以非常方便地将 MiniGUI 移植到其他 POSIX 系统上,只需要根据抽象层接口实现新的图形引擎即可。目前,MiniGUI已经编写了基于 SVGALib 和 LibGGI 的图形引擎。利用 LibGGI, MiniGUI 应用程序可以运行在 X Window 上,将大大方便应用程序的调试。目前正在进行 MiniGUI 私有图形引擎的设计开发。通过 MiniGUI 的私有图形引擎,可以最大程度地针对窗口系统对图形引擎进行优化,最终提高系统的图形性能和效率。3.2.6  多字体和多字符集支持 见第四章介绍。3.3  体系结构3.3.1  多线程的分层设计 从整体结构上看,MiniGUI 是分层设计的,层次结构见图 3.3。在最底层,GAL 和 IAL 提供底层图形接口以及鼠标和键盘的驱动;中间层是 MiniGUI 的核心层,其中包括了窗口系统必不可少的各个模块;最顶层是 API,即编程接口。图 3.3  MiniGUI 的分层设计 GAL 和 IAL 为 MiniGUI 提供了底层的 Linux 控制台或者 X Window 上的图形接口以及输入接口,而 Pthread 是用于提供内核级线程支持的 C 函数库。 MiniGUI 本身运行在多线程模式下,它的许多模块都以单独的线程运行,同时,MiniGUI 还利用线程来支持多窗口。从本质上讲,每个线程有一个消息队列,消息队列是实现线程数据交换和同步的关键数据结构。一个线程向消息队列中发送消息,而另一个线程从这个消息队列中获取消息,同一个线程中创建的窗口可共享同一个消息队列。利用消息队列和多线程之间的同步机制,可以实现下面要讲到的微客户/服务器机制。 多线程有其一定的好处,但不方便的是不同的线程共享了同一个地址空间,因此,客户线程可能会破坏系统服务器线程的数据,但有一个重要的优势是,由于共享地址空间,线程之间就没有额外的数据复制开销。由于 MiniGUI 是面向嵌入式或实时控制系统的,因此,这种应用环境下的应用程序往往具有单一的功能,从而使得采用多线程而非多进程模式实现图形界面有了一定的实际意义,也更加符合 MiniGUI 之“mini”的特色。目前,MiniGUI开发组准备开发出基于多进程客户/服务器机制的类Xwindow的API,以便用于不同的应用环境。3.3.2  微客户/服务器结构 在多线程环境中,与多进程间的通讯机制类似,线程之间也有交互和同步的需求。比如,用来管理窗口的线程维持全局的窗口列表,而其他线程不能直接修改这些全局的数据结构,而必须依据“先来先服务”的原则,依次处理每个线程的请求,这就是一般性的客户/服务器模式。MiniGUI 利用线程之间的同步操作实现了客户线程和服务器线程之间的微客户/服务器机制,之所以这样命名,是因为客户和服务器是同一进程中的不同线程。微客户/服务器机制的核心实现主要集中在消息队列数据结构上。比如,MiniGUI 中的 desktop 微服务器管理窗口的创建和销毁。当一个线程要求 desktop 微服务器建立一个窗口时,该线程首先在 desktop 的消息队列中放置一条消息,然后进入休眠状态而等待 desktop 处理这一请求,当 desktop 处理完成当前任务之后,或正处于休眠状态时,它可以立即处理这一请求,请求处理完成时,desktop 将唤醒等待的线程,并返回一个处理结果。当 MiniGUI 在初始化全局数据结构以及各个模块之后,MiniGUI 要启动几个重要的微服务器,它们分别完成不同的系统任务:1        desktop 用于管理 MiniGUI 窗口中的所有主窗口,包括建立、销毁、显示、隐藏、修改 Z-order、获得输入焦点等等。2        parser 线程用来从 IAL中收集鼠标和键盘事件,并将收集到的事件转换为消息而邮寄给 desktop 服务器。3        timer 线程用来触发定时器事件。该线程启动时首先设置 Linux 定时器,然后等待 desktop 线程的结束,即处于休眠状态。当接收到 SIGALRM 信号时,该线程处理该信号并向 desktop 服务器发送定时器消息。当 desktop 接收到定时器消息时,desktop 会查看当前窗口的定时器列表,如果某个定时器过期,则会向该定时器所属的窗口发送定时器消息。3.4  面向对象技术的运用3.4.1  控件类和控件 MiniGUI 中的每个控件都属于某种子窗口类,是对应子窗口类的实例。这类似于面向对象技术中类和对象的关系。图 3.4 给出了 MiniGUI 中控件和控件类之间的关系。图 3.4  控件类和控件之间的关系 每个控件的消息实际都是有该控件所属控件类的回调函数处理的,从而可以让每个属于统一控件类的控件均保持有相同的用户界面和处理行为。但是,如果在调用某个控件类的回调函数之前,首先调用自己定义的某个回调函数的话,就可以让该控件重载控件类的某些处理行为,从而让该控件一方面继承控件类的大部分处理行为,另一方面又具有自己的特殊行为。这实际就是面向对象中的继承和派生。比如,一般的编辑框会接收所有的键盘输入,当希望自己的编辑框只接收数字时,就可以用这种办法屏蔽非数字的字符输入。3.4.2  GAL 和 IAL GAL 和 IAL 的结构是一样的,这里只拿 GAL 作为实例说明面向对象技术的运用,参见图 3.5。 系统维护一个已注册图形引擎数组,保存每个图形引擎数据结构的指针。系统利用一个指针保存当前使用的图形引擎。一般而言,系统中至少有两个图形引擎,一个是“哑”图形引擎,不进行任何实际的图形输出;一个是实际要使用的图形引擎,比如 LibGGI 或者 SVGALib。每个图形引擎的数据结构定义了该图形引擎的一些信息,比如标识符、属性等,更重要的是,它实现了 GAL 所定义的各个接口,包括初始化和终止、图形上下文管理、画点处理函数、画线处理函数、矩形框填充函数、调色板函数等等。图 3.5  GAL 结构 如果在某个实际项目中所使用的图形硬件比较特殊,现有的图形引擎均不支持。这时,就可以按照 GAL 所定义的接口实现自己的图形引擎,并指定 MiniGUI 使用这种私有的图形引擎即可。这种软件技术实际就是面向对象多态性的具体体现。 利用 GAL 和 IAL,大大提高了 MiniGUI 的可移植性,并且使得程序的开发和调试变得更加容易。可以在 X Window 上开发和调试自己的 MiniGUI 程序,通过重新编译就可以让 MiniGUI 应用程序运行在特殊的嵌入式硬件平台上。3.4.3  字符集和字体支持 字符集和字体的支持是面向对象在MiniGUI中典型的应用,见第四章介绍。3.5  重要算法3.5.1  消息传递 现代 GUI 系统一般均使用消息或事件驱动的编程模型。因此,消息或事件的传递功能是 GUI 系统首先面对的一个重要功能。消息传递中需要注意到的一些问题有:1     消息一般附带有相关的数据,这些数据对各种消息具有不同的含义,在多窗口环境,尤其是多进程环境下,消息数据的有效传递非常重要。2     消息作为窗口间进行数据交换的一种方式,要提供多种传递机制。某些情况下,发送消息的窗口要等到这个消息处理完成之后,知道处理的结果之后才能继续执行;而有些情况下,发送消息的窗口只是简单地向接收消息的窗口通知某些事件的发生,一般发送出消息之后就返回。后一种情况类似于邮寄信件,所以通常称为邮寄消息。更有一种较为复杂的情况,就是等待一个可能长时间无法被处理的消息时,发送的消息的窗口设置一个超时值,以便能够在消息得不到及时处理的情况下能够恢复执行。3     某些特殊消息的处理也需要注意,比如定时器。当某个定时器的频率很高,而处理这个定时器的窗口的反应速度又很慢,这时如果采用邮寄消息或者发送消息的方式,窗口的消息队列最终就会塞满。4      最后一个问题是消息优先级的问题。一般情况下,要考虑优先处理鼠标或键盘的输入消息,其次才是 PAINT、定时器等消息。3.5.2  图形上下文和坐标映射3.5.2.1  图形设备在 MiniGUI 中,采用了在 Windows 和 X Window 中普遍采用的图形设备概念。每个图形设备定义了计算机显示屏幕上的一个矩形输出区域。在调用图形输出函数时,均要求指定经初始化,或经建立的图形设备上下文,或设备环境(DC)。每个图形输出均局限在图形设备指定的矩形区域内。在多窗口系统中,各个图形设备之间的输出互相剪切,以避免图形输出之间互相影响。3.5.2.2  剪切域 剪切域就是在图形设备上定义的一个区域,所有在该图形设备上进行的图形输出,超过剪切域的部分,均被裁剪。只有在剪切域上的图形输出才是可见的输出。MiniGUI 中的剪切域,定义为矩形剪切域的集合。3.5.2.3  映射模式 映射模式指定了特定图形输出的坐标值如何映射到图形设备的坐标值。 图形设备的坐标系原点定义为图形设备矩形区域的左上角。向右为正 X 坐标轴方向;向下为正 Y 坐标轴方向。这一坐标系称为设备坐标系。 通过 GDI 模块的映射模式操作函数,可定义自己的逻辑坐标系。逻辑坐标系可以是设备坐标系的水平或垂直反转,缩放,或者偏移。 多数 GDI 输出函数指定的是逻辑坐标系。默认情况下,逻辑坐标系和设备坐标系是重合的。3.5.3  窗口管理窗口管理和剪切的关系非常密切。当窗口 A 的一部分被另外一个窗口 B 覆盖时,在窗口 A 中任何一个绘图操作都不应该影响窗口 B。为了达到这个目标,窗口 A 中的绘图就要被剪切。而在多窗口环境中,哪个窗口的哪一部分应该被剪切就由窗口的 Z 序决定。窗口的建立、销毁、显示、隐藏等操作,均要修改窗口 Z 序。MiniGUI 实际维护着两个 Z 序,一个是普通窗口形成的 Z 序,另外一个是顶层窗口(即永远处于普通窗口之上的窗口)形成的 Z 序。3.5.4  剪切算法当因为窗口的互相覆盖产生剪切时,首先要有一个高效的剪切域维护算法。通常,窗口的剪切域定义为互不相交的矩形集合。GUI 系统的底层图形引擎在进行输出时,要根据当前输出的剪切域进行输出的剪切操作。MiniGUI 目前采用的图形引擎尚不支持剪切域,只支持剪切矩形,从而有一些性能损失,这也是决定编写私有图形引擎的原因之一


以上为本篇毕业论文范文面向嵌入式系统的图形用户界面研究的介绍部分。
本论文在计算机论文栏目,由论文网(www.zjwd.net)整理,更多论文,请点论文范文查找

毕业论文降重 相关论文

收费专业论文范文
收费专业论文
汉语言文学论文
物理学论文
自动化专业论文
测控技术专业论文
历史学专业论文
机械模具专业论文
金融专业论文
电子通信专业论文
材料科学专业论文
英语专业论文
会计专业论文
行政管理专业论文
财务管理专业论文
电子商务国贸专业
法律专业论文
教育技术学专业论文
物流专业论文
人力资源专业论文
生物工程专业论文
市场营销专业论文
土木工程专业论文
化学工程专业论文
文化产业管理论文
工商管理专业论文
护理专业论文
数学教育专业论文
数学与应用数学专业
心理学专业论文
信息管理专业论文
工程管理专业论文
工业工程专业论文
制药工程专业论文
电子机电信息论文
现代教育技术专业
新闻专业论文
艺术设计专业论文
采矿专业论文
环境工程专业论文
西班牙语专业论文
热能与动力设计论文
工程力学专业论文
酒店管理专业论文
安全管理专业论文
交通工程专业论文
体育教育专业论文
教育管理专业论文
日语专业论文
德语专业论文
理工科专业论文
轻化工程专业论文
社会工作专业论文
乡镇企业管理
给水排水专业
服装设计专业论文
电视制片管理专业
旅游管理专业论文
物业管理专业论文
信息管理专业论文
包装工程专业论文
印刷工程专业论文
动画专业论文
环境艺术专业论文
信息计算科学专业
物流专业论文范文
人力资源论文范文
营销专业论文范文
工商管理论文范文
汉语言文学论文范文
法律专业论文范文
教育管理论文范文
小学教育论文范文
学前教育论文范文
财务会计论文范文

电子商务论文范文

上一篇:媒体播放器系统 下一篇:某中学学生学籍管理系统

最新论文

精品推荐

毕业论文排版

热门论文


本站简介 | 联系方式 | 论文改重 | 免费获取 | 论文交换

本站部分论文来自网络,如发现侵犯了您的权益,请联系指出,本站及时确认删除 E-mail:229120615@qq.com

毕业论文范文-论文范文-论文同学网(www.zjwd.net)提供计算机论文毕业论文,毕业论文范文,毕业设计,论文范文,毕业设计格式范文,论文格式范文

Copyright@ 2010-2024 zjwd.net 毕业论文范文-论文范文-论文同学网 版权所有