基于linux的拼音输入法设计_第1页
基于linux的拼音输入法设计_第2页
基于linux的拼音输入法设计_第3页
基于linux的拼音输入法设计_第4页
基于linux的拼音输入法设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Linux的拼音输入法设计郑州轻工业学院 本科毕业设计(论文) 题 目 基于Linux的拼音输入法设计学生姓名 # 专业班级 信息工程11-01 学 号 5# 院 (系) 计算机与通信工程学院 指导教师 # 完成时间 2015年06月06日 目 录摘 要IABSTRACTII1 绪论11.1课题的背景11.2课题的目的与意义21.3国内外研究现状与发展动态21.4课题研究的现状与发展动态32 中文输入法设计环境42.1 嵌入式系统42.1.1嵌入式的发展历史与趋势42.1.2嵌入式产品应用52.2 Linux系统62.2.1 Linux系统的发展62.2.2 Linux系统的特点72.3

2、Linux系统综述82.3.1 GUI在嵌入式系统的作用92.3.2嵌入式 GUI 系统的层级结构92.3.3 GUI的设计原则112.4 Qt/Embeded122.4.1 QT/E的信号槽机制133中文输入法综述143.1输入法简介143.2中文输入法发展和现状143.3 中文输入法相关技术164中文输入法的实现174.1开发环境安装174.2 中文输入法实现原理与流程图194.3 软键盘的设计204.4 数据库的设计234.5软键盘内部实现234.6 事件处理与汉字的显示244.7 运行效果25结 论27致 谢28参考文献29(附录)30基于Linux的拼音输入法设计摘 要嵌入式技术从诞

3、生到今天,特别是近20年的发展,取得了巨大的成就。目前已经在诸多领域得到广泛了应用。对于一款优秀的嵌入式产品来说,拥有一个优秀的用户界面是必不可少的。我国是一个人口大国,有着巨大的消费能力,因此一款支持中文输入法的GUI系统对于国内用户来说有着迫切的需求,也对嵌入式本身的发展也具有巨大的意义。本文首先概述了嵌入式与Linux系统,及其发展历史和现状,然后详细介绍了输入法设计的实现环境(Qt/Embedded)、相关技术、开发原理等,并在此基础上完成GUI的设计以及输入法的实现。最后开发出一款具有优秀界面(软键盘)的中文拼音输入法。关键词:拼音输入法,嵌入式,Linux,Qt/E, GUI。TH

4、E DESIGN OF THE PINYIN INPUTMETHOD BASED ON LINUXABSTRACTEmbedded technology from birth to today, especially for nearly 20 years of development, has made great achievements.Has been widely applied in many fields.For an excellent embedded products, has a good user interface is essential.Our country i

5、s a populous country with a huge spending power, so a GUI systems that support the Chinese input method there is a pressing need for domestic users, also to the development of embedded itself also has the great significance.This paper first summarizes the Embedded Linux system, and its development h

6、istory and status quo, and then introduces the design input method the implementation of the environment (Qt/Embedded) and related technologies, the development principle, etc., and on the basis of the completion of the GUI design and the realization of the input method.Finally developed an excellen

7、t interface (soft keyboard) of Chinese pinyin input method. KEY WORDS Pinyin input method, embedded Linux, Qt/E, the GUI1 绪论目前,3G已经发展到鼎盛时期,4G也正在加速建设中,这些技术的快速前进,让我们随时随地连接互联网成为了可能,这也使得嵌入式系统在性能与应用领域上有了很大的进步,众多智能终端产品中广泛采用液晶显示屏和软键盘组成的人机交互界面。在不同的应用场景,以及同一场景不同系统,所需要的界面也不近相同。一般的产品可能仅需要一个信息显示(例如报警灯)就可以了,而在一些

8、比较复杂的产品中,还要求具备文字、数字等输入的功能。目前中文显示功能在嵌入式系统图形系统中已有很好的支持,但支持中文输入的系统却很少,因此针对嵌入式图形系统,开发具有中文输入功能的系统对于嵌入式产品的应用与推广具有很大的市场价值和战略发展意义。现在市面上虽然有很多种基于嵌入式开发的输入法。并且功能也很强大,但不是开源的,而且对硬件要求也很高,例如:搜狗输入法,讯飞输入法,谷歌输入法,百度输入法等。1.1课题的背景嵌入式从诞生到现在已经有几十年的历史了,其在国防建设、通信网络、工业、医疗、消费电子(如安卓手机、平板电脑等)、智能家居等各个领域得到广泛应用,这些产品的应用在很大的程度改变了人们的生

9、活、工作、和娱乐方式,让用户更加容易地掌控身边的信息和设备,在提高人们生活效率的同时也很大程度的提高了人们的生活质量。利用嵌入式高稳定性,强实时性的特点,工业控制领域是嵌入式初期发展的方向,如今随着人类科技的进步,智能生活被广大的人群所向往,也是未来的发展趋势,拥有广阔的市场前景。利用嵌入式功耗低、可靠性与稳定性好、体积小等特点,将嵌入式应用到一些微小的智能终端中是嵌入式的未来发展方向,目前比较成功的案例如安卓手机和ios手机,其就是依照嵌入式开发的手机系统,已经遍布世界各地。这些产品之所以得到快速发展,与其有一个便捷并且相对智能的可视化界面有着直接的关系。诺基亚公司针对嵌入式系统发布了Qt/

10、E开发平台,如今该平台已经成为嵌入式GUI开发的主要平台。然而该平台并不支持中文输入,也因此给很多的国内用户带来了很多的不便,影响了嵌入式在国内的推广,本设计是以实时操作系统Linux为基础,在QT开发平台上,利用其提供的函数库开发了设计一款小巧的、具有优秀交互界面的中文拼音输入法。1.2课题的目的与意义嵌入式产业在最近几十年得到了高速发展,其在国防建设、通信网络、工业、医疗、消费电子(如手机,平板电脑等)、智能家居等各个领域得到广泛应用,这些产品的使用在改变人们生活方式的同时也提高人们生活效率和生活质量。输入法对于这些产品的使用来说,是一个不可或缺的工具。是我们与设备进行“交流”的媒介。通过

11、输入法我们才能让设备按照我们的意图进行工作,在进行命令交互时,一个可视化、图形化的交互界面GUI是人机交互不可缺少的部分,GUI本身的好坏往往很大程度上的决定了这个产品的好坏,可见一个优秀的GUI对于嵌入式产品的重要性。一个优秀的GUI应具有轻型占用资源少高可靠性高性能便于移植可配置扩展性好的特点。好的输入法必须有一个人性化的GUI界面,只有这样才能实现良好的人机交互操作,随着嵌入式的高速发展,其产品也越来越多的走进我们的生活,对于一个有着众多消费者的中国来说,针对中国市场开发一款具有优秀GUI的中文输入法具有重大的现实意义。也对嵌入式的发展起着很大的促进作用。1.3国内外研究现状与发展动态目

12、前,嵌入式应用范围已经遍及很多领域,在这些产品终端中广泛采用以显示屏和按键组成的人机交互界面GUI。最近几年,液晶电阻屏和电容屏的发展也广泛应用到这些产品中,实现了很好的GUI支持。在不同的应用场合,GUI所要实现的功能也不相同,在一些要求比较简单的设备中,往往只需要一些简单的数据显示就可以了。而在大部分的移动终端中,还需要实现文字和符号的输入功能,例如手机,平板等。这些设备对输入功能要求很严格,几乎涉及所有字符的输入,对使用汉语的用户来说,支持汉字的输入是必不可少的功能。目前关于嵌入式中文输入法开发,主要有如下两种开发形式:(1)其一是从一般PC机Windows系统下移植现有的中文输入法,虽

13、然这种方式开发效率很高,但这种形式开发的输入法需要得到Windows系统下的X lib库的支持,这就不可避免地造成系统资源浪费,进而大大的影响了系统的运行效率。(2)另外一种输入法开发模式是使用Qt/E平台自带插件的方法,这类输入法的实现需要一个桌面系统来管理该输入法,开发者往往移植Qtopia这个Qt/E下的桌面系统来管理该嵌入式中文输入法,但是,桌面管理系统对于很多手持设备来说是多余的,所以该嵌入式中文输入法给这类设备带来了额外的资源开销,造成了系统资源的严重浪费。目前国内外的中文输入法编码方法基本上都是依据汉字的音、形、义与特定的按键进行相关联,然后通过联想、查询的方式进行输入的。常用的

14、中文输入法有分为四类:音码、形码、音形码和无理码。按照编码类型来分,目前比较流行的输入法安类别分有拼音输入法、五笔字型输入法、数字输入法、二笔输入法等。比较流行的输入法软件有搜狗输入法、手心输入法,讯飞输入法、QQ输入法、百度输入法、谷歌拼音输入法等。1.4课题研究的现状与发展动态本文主要讲述了一种在Qt/E 平台下开发的嵌入式拼音输入法的研究和实现原理。课题的主要探讨的内容是:嵌入式现状的分析与综述,Qt/E 开发环境和交叉编译环境的搭建,GUI 界面设计,中文输入法的实现。在此基础上对嵌入式系统和嵌入式Linux系统有一个深入的认识,开发一款针对国内用户的具有优秀交互界面的并且功能完善的嵌

15、入式中文拼音输入法,该输入法可以实现中文、英文、数字、标点以及常用符号的输入和相互切换,并且输入法稳定性、安全性以及可靠性都相当出色,与此同时移植性和扩展性也很好。2 中文输入法设计环境2.1 嵌入式系统嵌入式系统(Embedded System)是当今最热门的概念之一, 关于嵌入式系统的定义,业界并没有一个明确的统一概念,目前比较认可的一个定义是:嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应于应用系统对功能可靠性成本体积功耗等有严格要求的专用计算机系统当前的社会是一个信息大爆炸的社会,各类信息极度丰富,遍布于我们的生活方方面面,要想实现这些信息的管理,仅局限于PC是不行

16、的,而最近几年智能终端的快速发展,特别是手机的出现,给我们管理这些信息提供了一个很好的平台,目前主流手机的操作系统都是基于嵌入式开发的例如安卓系统和ios系统。通过便捷式智能终端来管理我们生活中所遇到的各种信息已经成为社会发展的趋势,也是嵌入式前进的方向。2.1.1嵌入式的发展历史与趋势纵观嵌入式技术的发展,其主要经历了如下四个阶段:第一阶段是的嵌入式并没有真正意义上的操作系统,它是以微控制器为核心。这种控制器可通过汇编语言进行编程,从而实现对系统的控制,通常不含操作系统。这种初期系统的出现主要应用于工业方面。由于其就有不错的稳定性和实时性,初期阶段在工业控制领域取得了快速的发展。但随着现代工

17、业的蓬勃发展,工业控制也要求有着良好的交互界面和高稳定性,高效率。因此对系统的处理效率,存储量以及接口都有着更高的要求,这种形式的系统已经不适合现代工业的发展。第二阶段以嵌入式微处理器为基础的简单操作系统阶段。以嵌入式微处理器为基础嵌入式发展的第二阶段。该阶段的嵌入式以简单操作系统为核心。其主要特点是处理器版本出现了很多种,但由于扩展性和移植性的原因,相互间的通用性较弱;系统效率高,体积小,可用于批量生产,成本低。但是没有良好的用户界面,人机交互效果不好。第三阶段是嵌入式操作系统作为真正意义上的操作系统的问世。这一阶段的嵌入式系统在继承之前阶段系统的优点的同时,进一步的提高了嵌入式系统的通用性

18、,扩展性以及可移植性,使嵌入式系统能运行于各种不同的嵌入式处理器上,兼容性得到大幅度的提高;操作系统内核变得更加精小、使得开发更加微小的产品成为可能;具备文件和目录管理功能、支持设备和网络连接、支持多任务处理功能,为产品间的通信提供了可能;这个阶段的用户界面方面已经有很好的发展,出现了很多经典而且好用的用户界面和大量应用接口,应用软件丰富。第四阶段是嵌入式与互联网的连接为标志的高级嵌入式系统。也是现阶段正处于的发展阶段。目前大多数嵌入式系统,特别是在工业领域,很多产品还不支持与Internet的连接,但随着智能化生产的提高,各领域嵌入式设备与互联网的结合将是嵌入式技术的发展方向。通过近十年来发

19、展,所支持的平台数量和种类不断增加,纵观嵌入式的发展,呈现以下五大前进趋势: (1)嵌入式内核向微型化,模块化发展,系统的可靠性、稳定性、实时性得到进一步的提高。(2)嵌入式软件开发环境向一体化、简单化、集成化、可模拟、调试化发展。(3)随着自由开源的软件技术越来越受到开发者的青睐,在系统核心源代码坚持开源的嵌入式Linux将渐成为主流操作系统之一。(4)嵌入式操作系统将朝着行业开放、标准化,规范化、平台化的方向发展。(5)嵌入式软件与互联网、移动通信、普通计算系统及产品的结合发展趋势将加剧。2.1.2嵌入式产品应用嵌入式产品要想进入个人随身携带终端或者走入家居生活,它必须满足以下几个特点:首

20、先体积要求足够轻薄,造型满足个人化、其次输入简单便捷、输出多媒体化;另一方面由于现代社会是个信息时代,网络化,智能化已经成为很多现代产品的发展方向,从目前比较流行的智能穿戴发展来看,未来嵌入式产品与网络的结合将成为一大亮点。纵观嵌入式目前的发展,其已经在很多应用领域成功进军,这些领域的发展将成为未来科技领域的发展方向,也是未来嵌入式发展展望,嵌入式系统的应用如图2-1所示。图2-1嵌入式系统的应用嵌入式系统未来几年的发展方向将是以个人电脑的形式分布于各种大小的智能设备中,从手机到智能穿戴,再到各种智能家居等等,这些产品会提供一个便捷的输入与输出界面,可以让你很轻松的掌握自己的各种终端产品。这些

21、产品通过网络相互连接在一起,然后把信息统一反馈统一终端进行管理,真正实现智能生活。2.2 Linux系统Linux系统的来源是基于Unix系统的,是一套Unix-like的作业系统,也是Unix系统的一种。也可以说Linux系统是一类Unix操作系统的总称。Linux诞生于1991年,其开放源代码,可以定制的特点吸引了大批人士,企业,以及各种研发队伍投入其中,也正因此,Linux呈现很多种流派,不同品牌的Linux系统有着各自的特点和使用人群,著名的且使用较广的Linux系统有如下几种:Red Hat、Ubuntu、Debian 、Fedora及OpenSUSE等。2.2.1 Linux系统的

22、发展相对于window系统来说,Linux最大的特点就是其核心代码是对外公布的,而window是封闭的。这样虽然在一定程度上和好的保证了系统的保密性和安全性,但从长远来说,这种形式的安全措施是不利于技术的发展和进步的。1983年理察·马修·斯托曼创立了GNU(GNU Project)计划。这个计划的目的是开发一个对任何人都完全免费的Unix-like系统,从而打破操作系统的源码只在少数人手中的限制,打破软件技术发展的瓶颈。理察·马修·斯托曼的这一计划得到了广大专业程序员的支持,越来越多的优秀程序员自愿地加入到这个项目中来,自愿地开发Linux系统的应用程

23、序,并借助Internet平台与大家一起分享成果。就这样Linux逐渐发展壮大起来。Linux系统是一个完全free的操作系统,这种free不仅仅指任何人可以自由的在互联网上下载,上传Linux操作系统,更重要的是它的free包含用户可以自由地修改Linux系统的源代码,从而根据自己的需求开发一款专用的操作系统,实现真正意义上的个人定制,并且自己还可以把自己的修改成果上传到特定的Linux交流平台上,供大家参考学习,这样既提高了自己的能力也帮助的Linux系统修复BUG和进行系统的更新,进而也促进了Linux的发展。 Linux正是因为这样一个良性的循环,才能在短短时间内得到快速的发展,并在操

24、作系统方面可与其他主流操作系统分庭抗礼。其中比较有名且应用广泛的版本有Ubuntu 、Red Hat、Suse、Fedora Core、Red Flag等几种。2.2.2 Linux系统的特点前面已经介绍了Linux系统的诞生背景(1983年理察·马修·斯托曼创立了GNU(GNU Project)计划。这个计划的目的是开发一个对任何人都完全免费的Unix-like系统,从而打破操作系统的源码只在少数人手中的限制,打破软件技术发展的瓶颈。)。可以很清楚的知道Linux从诞生之初就注定是一个完全free的操作系统,这种free不仅仅指任何人可以自由的在互联网上下载,上传Linu

25、x操作系统,更重要的是它的free包含用户可以子自由地修改Linux系统的源代码,从而根据自己的需求开发一款专用的操作系统,实现真正意义上的实现个人系统定制。Linux系统之所以快速的发展,其开放、免费的特性必然是其重要原因之一,但仅仅靠这两个是不够的,下面就让我们来总结一下Linux系统到底都具有哪些特性:(1)开放性:Linux的这一开放性是指所有遵循世界标准规范以及其他国际标准的硬件和软都能很方便地实现不同系统间的软件互连。(2)多用户:多用户特性意思是系统资源可以被不同用户使用,彼此间的资源权限不冲突,调用时互不影响。(3)多任务:多任务处理功能是现代计v算机一个重要的特征。它是指计算

26、机在各个程序的运行互相独立的情况下同时运行多个程序。Linux就有良好的多任务处理能力。  (4)良好的用户界面:Linux支持两种完全不同的操作界面,分别是用户界面和系统调用。系统调用主要是用户在进行编程使用的界面。这样的好处是用户可以在编程时直接系统调用命令,从而提高开发效率。另一种界面是图形用户界面,即常见的人机交互界面,它通过鼠标、菜单、窗口、滚动条等方式给用户呈现一个直观、简单、易操作的友好的图形化界面。这种界面也是很多专业用户和非专业用户最常用的用户界面。   (5)设备独立性:设备独立性是指不管是何种程序,只要安装了它们的驱动程序

27、,任何用户都可以很自由的操纵、使用这些设备,Linux操作系统是具有设备独立性的,它的内核在这方面有着高度适应能力。(6)丰富的网络功能:Linux为用户提供了完善而强大的网络功能,并且拥有大量支持Internet的软件,用户能通过Linux与在世界任何一个有网络的地方的其他人进行通信。除此之外,Linux还支持文件传输,用户只需要输入简单的Linux命令就可以完成内部信息或文件的传输。(7)可靠的系统安全:Linux采取了许多安全技术措施,这些措施遍布包括对读、写控制、审计跟踪、带保护的子系统、核心授权等各方面,为用户提供一个安全可靠的网络环境。(8)良好的可移植性:可移植性是指将操作系统从

28、一个平台放置到另一个也能正常运行的能力。Linux具备可移植特性,这一特性为运行Linux的不同计算机在不增加特殊的和昂贵的通信接口的情况下与其他机器进行通信提供了手段。2.3 Linux系统综述GUI 系统的含义为图形用户接口(Graphic User Interface)系统,它是用户与计算机交互的窗口。GUI 系统已经有了越来越广泛的应用,对于嵌入式软件而言,GUI是衡量一款软件好用与否最直接的方法。2.3.1 GUI在嵌入式系统的作用无论是那种操作系统,对于操作者来说,有一个优秀的交互界面都是很重要的。从上世纪90年代起,GUI作为人机交互的接口就已经被广泛的应用。最具代表性当属win

29、dows系列(例如:Windows95、 Windows98、Windows 2000、Windows XP等)操作系统,其他比较有名的还有Linux系统。相比传统的命令行接口方式,GUI系统为非专业程序用户提供了很友好的交互界面,让计算机系统变得简单起来,使用户可以很快的接受系统的操作,也使很多程序员从枯燥的界面中解脱出来。在嵌入式发展的初期阶段,GUI系统很少被使用,通过简单的LED(发光二极管)和按键相结合的方式是早期人机交互实现的方式,随后显示幕的出现给了GUI系统很好的发展条件。早期阶段的GUI系统之所以被应用的比较少,原因有两个:一是从功能方面考虑,早期阶段的嵌入式系统只要应用在工

30、业控制领域,所需要的嵌入式系统逻辑很简单,从中所需要获取的信息也很少,用户只需要通过几个简单的指示灯或者简单的按键进行信息判断和控制就行了,不需要很复杂的显示系统。第二个方面是从当时的技术发展水平方面来说,当时嵌入式处于起步阶段,其所应用的处理器平台计算能力很低,并且所支持的物理内存也很少,不满足复杂系统所需要的硬件配置,使得GUI系统在人机交互界面的普及有技术障碍。但随着嵌入式系统的发展和普及,特别是处理器的计算能力和内存越来越强,GUI系统在人机交互方面的优势才被展现出来,当智能手机、PDA 等系统相继出现并流行后,意味着嵌入式系统已经不是仅仅给个别专业操作人员所使用的,而需要适用于很广泛

31、的群众。因此,GUI 在嵌入式系统中的普及是大势所趋。GUI 系统需要最终向用户提供输出和输入两个方面。在输出方面,GUI 系统向用户提供一个图形化的界面,在输入方面,GUI 系统需要接受用户的操作,从而达到通过界面控制系统的目的。2.3.2嵌入式 GUI 系统的层级结构嵌入式系统的设计一般秉承精简、高效的原则,其软件的层次结构相对简单。自下而上,一般可以分为硬件层、操作系统层、中间件、应用层等几个层次,如图 2-3 所示。 图 2-3 嵌入式系统的软件架构嵌入式系统的硬件分为处理器(通常包含 CPU 和片内设备)、内存、板级硬件几个部分。CPU 涉及了特定体系结构的运算和控制单元,例如 AR

32、M、MIPS 等,在整个系统的软件开发中,一般都要基于该体系结构的编译工作。片内设备是处理器内部的硬件模块,比较重要的包括内存管理器、中断控制器、定时器、GPIO 等。嵌入式系统的内存的 RAM 主要通过 SRAM 和 SDRAM 实现。板级的硬件包含了嵌入式系统中需要,但是处理器片内没有集成的部分,通常包括片内部件的外围硬件、总线扩展、GPIO 扩展几种形式。嵌入式的操作系统建立在硬件之上。操作系统通常具有进程(任务)调度、进程间通信、内存管理等方面。嵌入式系统的操作系统一般都具有一定的可移植性,可以建立在不同的硬件平台上。操作系统的移植层通常包括对某种体系结构 CPU 的支持,需要涉及定时

33、器、中断控制器、系统内存等硬件。驱动程序是操作系统和硬件的接口,大量的硬件需要通过操作系统框架内的驱动程序,向上层提供控制硬件的接口中间件一般是向上层软件提供了各种应用程序接口(API) 。中间件需要通过对操作系统的调用来建立,常常需要控制硬件。在嵌入式系统中,常用的中间件包含文件系统(FileSystem) 、网络协议(Net protocol) 、图形用户系统(GUI)等几种,它们一般都需要控制特定的硬件来实现。此外,数据库(Database)等不需要控制硬件的下层软件,通常也作为中间件的形式出现。应用层包含了应用程序的逻辑,它通过调用中间件和操作系统来实现。应用层的软件程序也可以由上下若

34、干层和不同的模块组成。2.3.3 GUI的设计原则嵌入式 GUI 系统的功能是给上层的程序绘制出以图形界面为展现形式的能力,并且能够接收用户输入的指令。GUI系统既可以当作为一个单独的数据库,也可以看作是和程序连接在一起的源代码。在嵌入式系统中,GUI系统是嵌入式实现图形化界面的核心部件。由于嵌入式系统的特殊性,在GUI的设计原则方面,GUI应该有如下几个特点:(1)可移植性:所谓可移植性,体现在操作系统和硬件结构两个方面。在操作系统方面,由于嵌入式GUI 系统需要建立在操作系统提供的一定机制上面(例如多任务支持、任务间通信等)。而不同操作系统所提供的机制可能没有任何关系,完全不同。为了能在不

35、同的系统中使用,嵌入式 GUI就需要一定的可移植性来支持不同的操作系统。在硬件结构方面,包括了 CPU 体系结构、输出和输入设备等方面。只有嵌入式 GUI 系统的代码可以在不同的编译器上编译,这样GUI系统才能适应不同的体系结构。通过具有广大数据库的 C 语言编程实现的系统可以满足这个要求。 (2)较高的稳定性和可靠性:在稳定性和可靠性方面嵌入式系统具有很严格的要求。个人 PC 的崩溃可能只需要简单的重启就可以弥补, 但是嵌入式系统的崩溃,尤其是在工业控制领域,就可能导致无法挽回的严重后果。 因此更强的稳定性和可靠性是嵌入式GUI系统所必须的。例如:在一些控制、通讯系统中,GUI 系统属于提供

36、的是辅助的人机交互功能,如果由于 GUI 系统的问题,而导致系统核心功能的崩溃是得不偿失的。由于一些嵌入式系统中,不同任务运行在同一个内存空间内,并且缺乏多任务保护机制,因此,嵌入式GUI系统由于一个子系统的问题而导致整个系统崩溃的概率更高。对于嵌入式 GUI系统而言,一方面需要有较高的稳定性和可靠性,减少系统崩溃的概率;另一方面,在 GUI 系统已经崩溃的情况下, 也需要确保尽量较少影响其它子系统的工作, 将问题控制在一定范围内。(3)系统开销少:和PC 系统相比较而言,嵌入式系统在资源方面是相对有限的。系统的资源包括处理器的频率、Flash 的空间和 RAM 空间等几个部分。除了资源有限之

37、外,嵌入式系统的运行还需要调用一些其他比GUI系统更重要的程序。基于以上原因,嵌入式 GUI 系统具有开销小的特点是必须的,其不能占用系统过多的资源。如果占用系统资源太多,不但 GUI 系统无法正常运行,出现卡顿等情况,甚至会造成整个系统无法工作。 (4)较高可配置性:嵌入式应用领域是很广的,不同领域的系统相差较大,为适应不同系统的需求,嵌入式 GUI 系统需要具备较高的可配置型。GUI 系统可以提供很多的功能,但是在所有的功能并不是都要在某种特定系统上使用,可以去掉不相关的功能来节省系统的开销。此外,在界面基本相同的情况下,皮肤和主题的更改和配置也可提供系统的灵活性。2.4 Qt/Embed

38、edQt/Embedded 是Qt库开发商 TrollTech 公司(后被诺基亚公司收购)( Qt 版本。 Linux 系统桌面普遍使用的图形库就是基于QT/E开发的。与桌面版本不同,Qt/Embedded把所有的功能全部整合在一起,直接使用 Frame buffer,去掉 X Server 及 X Library 等多层次。嵌入式QT是一个完整的窗口系统的同时也是一个应用程序框架,并且嵌入式Qt是在Qt的基础上发展而来的,与Qt之间保持统一的API,这一特性对嵌入式应用程序的开发提供了非常好的便利,我们不用再去重新熟悉一套全新的API,并且很多桌面系统中的应用都可以移植到嵌入式QT下。QT

39、和 QT/E 系统结构如图2-4所示。 图 2-4 QT 和 QTE 系统结构QT/E类库完全使用C+进行封装,具有丰富的控件资源和可移植性。QT/E底层图像引擎只采用Frame buffer的特点,注定了它是面向高端嵌入式图像系统领域的。Qt的编程使用的是C+面向对象的机制,还有一些QT本身的但基于C+的附加功能、信号与槽以及相应的宏编译机制。QT/E具有强大的开发能力,为GUI程序的建立提供了快速的平台。QT/E的框架结构相对于QT以及其他版本有个明显的特征就是它不需要Xserver,这个特征使得QT/E相对减少了很多的内存,而用来代替X Server 及 X Library的Frame

40、buffer 库可以在使用前对其进行配置,从而进一步的减少内存的占用,如果事先知道应用和相关的具体组件,还可以将组件、应用程序和QT/E库进行静态连接,从而进一步的减少CPU和内存的使用。总而言之,QT/E的出现为嵌入式图像系统的开发提供了良好的开发平台。2.4.1 QT/E的信号槽机制信号与槽机制是QT的一个核心机制,是精通QT编程过程中必须熟悉的一个概念。信号与槽机制可看成是以后总高级接口,他主要应用于对象之间的通信,是QT区别于其他工具包的一个重要特性。信号与槽的工作内容大致和C语言编程中指针功能差不多。例如在一般的GUI工具中,窗口上的小部件一般都有一个对应的回调函数(通常为指向某个函

41、数的指针)与其对应,当该部件被触发时,该回调函数就会响应并加以处理。在这个过程中会产生ocerdumPs,而且由于键盘上的功能也相对很多,这样就需要很多函数指针,使得程序很凌乱。但是Qt中由于信号和槽的使用,不再需要许多繁杂,凌乱的函数指针,使得通信程序在编写时更为简洁明了。任意数量、类型的对象都能被信号和槽携带,而且不会产生ocerdumPs。当对象的状态被改变时,该对象对应的信号就会发射出去,这是对象所需要做的全部工作, 对象被当作一个真正的软件组件来使用,该信号被发送时已经经过信息封装,但它并不知道到底是由谁来接收这个信号。槽用于接收信号,其本身并不知道是否有消息与自己连接,一个槽可以连

42、接单个信号,也可以连接多个信号,甚至信号与信号间的连接也是有可能的,总而言之,信号与槽机制为QT提供了强大的部件编程机制。3中文输入法综述3.1输入法简介输入法通常是指通过编码的方式将各种符合,文字,字母等输入到计算机或者其他设备(如手机)中。由于不同国家、地区、民族所使用的语言是不同的,因此市场上具有很多种不同种类的输入法。由于计算机键盘在设计时使用的就是英文字母作为标配,所以就英文而言,是不用专门开发英文输入法软件的,而其他种类的输入法(如汉语、韩语、日语等)是无法直接通过键盘输入的,它需要通过编码的方式来完成相应文字的输入。就汉语而言,其编码方法基本上都是依据汉字的音、形、义与特定的按键

43、进行相关联,然后通过联想、查询的方式进行输入的。常用的中文输入法有分为四类:音码、形码、音形码和无理码。按照编码类型来分,目前比较流行的输入法有拼音输入法和五笔字型输入法等。流行的输入法软件有搜狗输入法、讯飞输入法、QQ输入法、百度输入法、谷歌拼音输入法等。3.2中文输入法发展和现状中文输入法可以理解为一种将汉字输入计算机等电子设备的编码方法。在传统的键盘上,分布的英文字母一共有26个,分布在键盘上不同的26个按键上,所以操作系统本身是支持英文的输入的。而对于汉字而言,汉字的组成是极其复杂的,而且汉字文化又是博大精深,光汉字就有几万个,它们本身和键盘没有任何对应关系的,为了能够通过英文键盘在电

44、脑中输入汉字,我们必须依照某种方式赋予每个汉字独特的编码。现在最为流行的输入法是拼音输入法,其编码方式是根据汉字的“音”的特征来进行编码。这类输入法比较容易掌握和操作,但是拼音输入法有个很大的弱点,就是单字重码率相当高。特别是拼音输入法发展的前期,当时的拼音输入法智能化程度很低,它不但不支持词组和整句的输入,甚至连编码和文字都不能在一起显示,往往需要翻很多页才能找到需要的汉字,输入效率非常的底下。后来到了1998年,谭亚军发明了拼音之星软件这种情况才得以改善,“实时显示”功能的加入使得用户可以及时的更正有错的拼音,进而更加准确、迅速的找到所需的汉字。并且这个时期的输入法已经支持自动分词与整句输

45、入,还支持输入词语和语句的自我学习和存盘,具有了智能拼音的一些必要的核心功能。现在的拼音输入法基本上都是在此基础上发展而来的。下面通过几个代表性的输入法来回顾一下输入法的发展历程:(1)智能ABC-走向智能拼音的里程碑。早期的智能拼音输入法代表是北京希望公司开发的智能ABC输入法,它支持词语的全拼输入,并且具有简单的词语联想,此外还具有自动调频和记忆功能,这些都是输入法智能化的雏形。智能ABC的出现是拼音输入法发展史上的一座里程碑。(2)紫光拼音-开创了智能组词的先河,后来的紫光拼音的出现在原有的ABC输入法基础上增加了很多新的功能,并且弥补了之前智能ABC输入法词库不足的缺点,新收录了短语、

46、地名、人名以及常用词语的等词汇。在新增的功能中最为有意义的就是“智能组词”概念的出现,它利用后台的语义统计分析,然后根据用户所输入的拼音在字库中寻找匹配的单词,并进行智能组词,供用户选择,一改之前如果字库中没有匹配的词语用户只能选择单个字的缺点,大大的提高了用户输入汉字的效率,使用户输入更加方便、快捷,紫光拼音也因此成为了当时国内比较有影响力的国产拼音输入法。(3)搜狗输入法-与互联网的完美结合,当代输入法的主力。后来随着互联网的快速崛起,搜狗输入法随之诞生。作为输入法行业的后进者,必须有着自己的核心竞争力才能在该市场取得突破,获得用户的认可。搜狗输入法最终选择了利用自己在互联网数据方面的优势

47、,以词库为自己的突破口,首次提出利用互联网搜索引擎的数据来建设词库的构想,打破之前词库陈旧,数据静态的缺点。将搜索引擎中的新词、热词与词库互连,保证词库的网络化,动态化以及新鲜化。事实证明,搜狗的这一决定是正确的,各种输入法之所以在使用体验上有明显差距,就是因为词库的不同,搜狗输入法由于在词库与互联网的挂钩,使得自己在 词库这方面有着无与伦比的优势,其打字速度相比传统的输入法在速度上至少快一倍,使得中文输入法在智能化进程上前进了一大步。搜狗输入法是目前应用最广泛的输入法,在市场上占据着绝对的占有率,远高于其他输入法的市场占有率,除了搜狗输入法,还有以下比较流行的输入法:讯飞输入法、QQ输入法、

48、百度输入法、谷歌拼音输入法、T9输入法等。(4)云输入法-未来输入法的展望。云输入依据的原理是当用户在电脑前输入拼音后,数据传输到后台的计算机处理中心,通过云计算机的处理,将对应的汉字或词语甚至句子将通过互联网几乎实时的显现出来,从而省去了客户端软件的安装,实现在线输入。在云输入领域走的比较靠前的是目前输入法领域的领军者-搜狗,其在2009年11月2日正式推出-搜狗云输入法,开启了中文输入法的新篇章。这种模式开发的输入法利用云计算机超强的处理能力以及硕大的字库量从而实现更准确、快速的输入体验。云输入是未来输入法发展的方向。3.3 中文输入法相关技术输入法通常是指通过编码的方式将各种符合,文字,

49、字母等输入到计算机或者其他设备(如手机)中。就汉语而言,其编码方法基本上都是依据汉字的音、形、义与特定的按键进行相关联,然后通过联想、查询的方式进行输入的。中文输入法的编码技术虽然有很多种,但依据其编码所依据的技术方法,归纳起来共有拼音编码、形码、音形结合码三个大类。(1)拼音编码:拼音编码是依据汉语拼音作为编码方法,是现在应用最广泛的一种编码方式。这种模式的输入法软件比较有名的有如下几种:搜狗拼音输入法、智能ABC输入法、微软拼音输入法、谷歌拼音输入法、百度输入法等。(2)形码编码:形码编码是依据汉字字形来进行编码的,将笔画与某些按键进行关联,然后通过组合构想的查询方式进行中文文字的输入。常

50、见的形码输入法有五笔字型输入法、12345五笔输入法、郑码输入法、行列输入法、大易输入法、呒虾米输入法等。(3)音形结合码编码:音形码编码是通过拼音加上汉字笔画进行的编码方式,包括音形码和形音码两类。代表性的输入法软件有两笔输入法、极点二笔输入法等。除了编码技术外,输入法还应用到了其他很多重要的输入法方面的技术,下面简单介绍几种:1) 词语联想:即便在用户输入拼音有误的情况下,根据使用者的输入习惯并依据大数据的分析结果,尝试显示用户想要输入的拼音并显示结果。2) 记忆功能:对用户的输入数据有记忆功能,当用户再次输入相同词语时,优先显示相应词语。方便用户的输入习惯,提高输入效率。3) 智能组词:

51、对于词库中没有的与输入的拼音对应的词语时,通过语义分析,实现智能组建新词语或者查找相近词语。4) 动态词库:支持互联网搜索引擎数据与词库的连接,使词库动态化,与时俱进,保障词库的网络化、新鲜化。5) 数据同步:数据同步是指用户可将自己常用的输入习惯,比如所在领域,常用词语等同步到云服务器上,通过账户的方式,实现随时随地的有一个属于自己特色的输入法。6) 多功能:好的输入法不仅有文字、数字以及常用符号的输入功能,更要与时俱进,支持一些新功能,例如表情、特殊符号、字符画、日期时间的输入,并支持与互联网的连接,支持个人输入法的定制。4中文输入法的实现4.1开发环境安装一、下载并安装ubuntu操作系

52、统,可以到官网下载最新的ubuntu版本。下载地址为“通过参考安装教程,最终在win7系统下安装了Ubuntu系统,实现win7与Ubuntu共存,本人安装的是最新版的ubuntu14.04版本。安装成功后,运行界面如图4-1所示。图4-1 ubuntu运行界面二、Ubuntu下安装Qt 开发环境。通过应用中心安装QT Creator,QT/Embeded,以及其他配套软件,并配置环境。完成后,QT运行界面如图4.2所示。图4-2 Qt creator 运行界面三 安装Qt designer,此软件主要用于拼音输入法GUI的设计,安装后运行界面如图4.3所示。图4-3 Qt designer运

53、行界面4.2 中文输入法实现原理与流程图设计一款输入法首先要清楚它都包含哪些功能,需要什么组件构成,用到哪些技术,只有清楚了这些内容才能够有步骤的去设计输入法,本文设计的目的是开发一款针对国内用户的具有优秀交互界面的并且功能完善的嵌入式中文拼音输入法,该输入法可以实现中文、英文、数字、标点以及常用符号的输入和相互切换。明确了其要具备的功能后,就很好去构思输入法窗口都有哪些模块组成了,本文的输入法界面有软键盘(包含英文26个字母键、数字以及常用符号和功能键等)、中英文切换键、拼音输入框以及汉字显示屏组成。输入法原理图如图4-4所示。图4.4输入法事件流程 输入法按键内部原理使用的是信号与槽的原理

54、,预先给每一个Button设置一个槽函数,当光标切换到软键盘上任意一个按键并触发时,该按键相应的槽函数将发送一个信号到相应处理函数,并将该按键相应的字母或者符号显示到拼音输入框上,这一过程使用到了两个函数,分别是信号函数clicked()以及接受accept()函数,由信号clicked()触发accept()槽来实现拼音输入框显示,紧接着拼音输入框QLineEdit会根据用户输入的拼音到sqlite数据库zh_CN_egb2312.db中进行汉字的查找,并将查找到的汉字显示到汉字显示框中。当用户选择了汉字对应的序号时该汉字被写入到QLineEdit显示,至此完成中文输入。4.3 软键盘的设计

55、在这个软件盘中,需要实现小写英文字母输入、大写字母输入、中文输入、其他各种字符的输入、隐藏以及其他一般功能的按键。软键盘布局的设计在QT设计师Qt Designer中完成,为每个按键增加一个“Dynamic Properties” 属性:ButtonValue,用作按键标识。如按键0的ButtonValue为“0”,字母按键的ButtonValue等于按键所代表的字母,删除按键backspace的ButtonValue设为“backspac”,其它类似。QWidget中具体需要添加如下部件:QGridLayout *gridLayout; 窗口布局QPushButton *panelButto

56、n_1; 数字键1QPushButton *panelButton_2; 数字键2QPushButton *panelButton_3; 数字键3QPushButton *panelButton_4; 数字键4QPushButton *panelButton_5; 数字键5其他数字类似。QPushButton *panelButton_a; a键QPushButton *panelButton_b; b键QPushButton *panelButton_c; c键QPushButton *panelButton_d; d键QPushButton *panelButton_e; e键QPushButton *panelButton_f; f键QPushButton *panelButton_g; g键QPushButton *panelButton_h; h键其他字母类似。QPushButton *panelButton_backspace; 删除键QPushButton *panelButton_fanxiegang; 键QPushButton *panelButton_xiegang; /键QPushBu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论