




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Linux的拼音输入法设计郑州轻工业学院 本科毕业设计(论文) 题 目 基于Linux的拼音输入法设计学生姓名 # 专业班级 信息工程11-01 学 号 # 院 (系) 计算机与通信工程学院 指导教师 # 完成时间 2015年06月06日 郑州轻工业学院毕业设计(论文)任务书题目 基于Linux的拼音输入法设计 专业 信息工程 学号 541107070104 姓名 代国伟 _ 主要内容、基本要求、主要参考资料等:一主要内容:1. 熟悉基于linux的拼音输入法开发方法;2. 掌握Linux系统的输入法设计技术;3. 了解软硬件件接口电路并设计系统硬件和软件。二基本要求:;1、了解输入法基本原理和研究现状2、.熟悉Liunx环境下的系统开发;3、实现中英输入的切换,实现中文,英文,数字及常用标点符号的输入;三 主要参考资料:1 何火胜,陈增标. 基于Linux下Qt/E的中文拼音输入法设计J. 科技与创新,2014,01:140-141.2 Q-Kevin. Qt/e输入法程序设计系列EB/OL. 3 何永琪.嵌入式Linux系统实用开发M.北京:电子工业出版社,2010:612-694.4闫锋欣,曾泉人,张志强译. C+ GUI Qt 4编程(第二版)M.北京:电子工业出版社,2008.8.5 陈晓雷,谢文,邓浩. 基于QtE的嵌入式Linux中文输入法的设计与实现 J:郑州轻工业学院学报,2009,24(6):5-8.完 成 期 限: 指导教师签名: 专业负责人签名: 2015 年 1月 23 日目 录摘 要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系统的发展72.2.2 Linux系统的特点72.3 GUI系统综述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中文输入法的实现184.1开发环境安装184.2 中文输入法实现原理与流程图194.3 软键盘的设计204.4 数据库的设计224.5软键盘内部实现234.6 事件处理与汉字的显示244.7 运行效果25结 论26致 谢27参考文献28基于Linux的拼音输入法设计摘 要嵌入式技术从诞生到今天,特别是近20年的发展,取得了巨大的成就。目前已经在诸多领域得到广泛了应用。对于一款优秀的嵌入式产品来说,拥有一个优秀的用户界面是必不可少的。我国是一个人口大国,有着巨大的消费能力,因此一款支持中文输入法的GUI系统对于国内用户来说有着迫切的需求,也对嵌入式本身的发展也具有巨大的意义。本文首先概述了嵌入式与Linux系统,及其发展历史和现状,然后详细介绍了输入法设计的实现环境(Qt/Embedded)、相关技术、开发原理等,并在此基础上完成输入法GUI的设计与实现,文中给出了关键技术模块的设计和详细实现过程。所开发中文输入法界面简洁,使用方面,可以方便的输入中文、数字及各种英文字符。关键词:拼音输入法/嵌入式/Linux/Qt/E/GUI DESIGN OF PINYIN INPUT METHOD BASED ON LINUXABSTRACTEmbedded technology from birth to the present day, especially in the past 20 years of development, we have made great achievements. Now in many areas to be widely applied. For a good embedded products, has a good user interface is essential. Our country is a populous country, has a huge spending power, so a GUI supports Chinese input method system for domestic users with urgent needs, but also for the development of embedded itself also has great significance.This paper outlines the Embedded and Linux systems, and its development history and current situation, and then details the input method designed to achieve environmental (Qt / Embedded), related technology, development principles, etc., and completed on the basis of the input GUI design and implementation of, the paper presents the design key technology modules and detailed implementation process. The development of Chinese input method interface is simple, the use, you can easily input Chinese characters, numbers, and a variety of English characters. KEY WORDS Pinyin input method,embedded,Linux,Qt/E,GUI1 绪论目前,3G已经发展到鼎盛时期,4G也正在加速建设中。移动通信技术的快速发展,让我们随时随地连接互联网成为了可能,这也使得嵌入式系统在性能与应用上有了很大的进步。众多智能终端产品中广泛采用液晶显示屏和软键盘组成的人机交互界面。在不同的应用场景,以及同一场景不同系统,所需要的界面也不近相同。一般的产品可能仅需要一个信息显示(例如报警灯)就可以了,而在一些比较复杂的产品中,还要求具备文字、数字等输入的功能。目前中文显示功能在嵌入式系统图形系统中已有很好的支持,但支持中文输入的系统却很少,因此针对嵌入式图形系统,开发具有中文输入功能的系统对于嵌入式产品的应用与推广具有很大的市场价值。现在市面上虽然有很多种基于嵌入式开发的输入法。并且功能也很强大,但不是开源的,而且对硬件要求也很高1。目前市面上比较流行的搜狗输入法、讯飞输入法、谷歌输入法、百度输入法等。1.1课题的背景嵌入式从诞生到现在已经有几十年的历史了,其在国防建设、通信网络、工业、医疗、消费电子(如安卓手机、平板电脑等)、智能家居等各个领域得到广泛应用。这些产品的应用在很大的程度改变了人们的生活、工作、和娱乐方式,让用户更加容易地掌控身边的信息和设备,在提高人们生活效率的同时也很大程度的提高了人们的生活质量。利用嵌入式高稳定性,强实时性的特点,工业控制领域是嵌入式初期发展的方向,如今随着人类科技的进步,智能生活被广大的人群所向往,也是未来的发展趋势,拥有广阔的市场前景。利用嵌入式功耗低、可靠性与稳定性好、体积小等特点,将嵌入式应用到一些微小的智能终端中是嵌入式的未来发展方向2,目前比较成功的案例如安卓手机和ios手机,其就是依照嵌入式开发的手机系统,已经遍布世界各地。这些产品之所以得到快速发展,与其有一个便捷并且相对智能的可视化界面有着直接的关系。诺基亚公司针对嵌入式系统发布了Qt/E开发平台,如今该平台已经成为嵌入式GUI开发的主要平台。然而该平台并不支持中文输入,也因此给很多的国内用户带来了很多的不便,影响了嵌入式在国内的推广,由此可以见,支持中文输入的GUI在市场上有着迫切的需求。1.2课题的目的与意义随着嵌入式的高速发展,其产品也越来越多的走进我们的生活,我国是一个有着巨大消费能力的大国,因此,开发具有优秀GUI的中文输入法具有重大的现实意义。也对嵌入式的发展起着很大的促进作用。输入法是一个不可或缺的工具,是我们与设备进行“交流”的媒介。通过输入法我们才能让设备按照我们的意图进行工作。好的输入法必须有一个人性化的GUI界面,只有这样才能实现良好的人机交互操作。本设计是以实时操作系统Linux为基础,在QT开发平台上,利用其提供的函数库开发了设计一款小巧的、具有优秀交互界面的中文拼音输入法。该输入法可以实现中文、英文、数字、标点以及常用符号的输入,并且软键盘具有常用的窗口功能。1.3国内外研究现状与发展动态目前,嵌入式应用范围已经遍及很多领域,在这些产品终端中广泛采用以显示屏和按键组成的人机交互界面GUI。最近几年,液晶电阻屏和电容屏的发展也广泛应用到这些产品中,实现了很好的GUI支持3。在不同的应用场合,GUI所要实现的功能也不相同,在一些要求比较简单的设备中,往往只需要一些简单的数据显示就可以了。而在大部分的移动终端中,还需要实现文字和符号的输入功能,例如手机,平板等。这些设备对输入功能要求很严格,几乎涉及所有字符的输入,对使用汉语的用户来说,支持汉字的输入是必不可少的功能。目前关于嵌入式中文输入法开发,主要有如下两种开发形式:(1)其一是从一般PC机Windows系统下移植现有的中文输入法。虽然这种方式开发效率很高,但这种形式开发的输入法需要得到Windows系统下的X lib库的支持,这就不可避免地造成系统资源浪费,进而大大的影响了系统的运行效率。(2)另外一种输入法开发模式是使用Qt/E平台自带插件的方法。这类输入法的实现需要一个桌面系统来管理该输入法,但是,桌面管理系统对于很多手持设备来说是多余的,所以该嵌入式中文输入法给这类设备带来了额外的资源开销,造成了系统资源的严重浪费4。目前国内外的中文输入法编码方法基本上都是依据汉字的音、形、义与特定的按键进行相关联,然后通过联想、查询的方式进行输入的。常用的中文输入法有分为四类:音码、形码、音形码和无理码。比较流行的输入法软件有搜狗输入法、手心输入法、讯飞输入法、QQ输入法、百度输入法、谷歌拼音输入法等。1.4课题研究的内容本文主要讲述了一种在Qt/E 平台下开发的嵌入式拼音输入法的研究和实现原理。课题的主要探讨的内容是:嵌入式系统与Linux系统现状的分析与综述,Qt/E 开发环境和交叉编译环境的搭建,GUI 界面设计,中文输入法的实现。最后开发一款针对国内用户的具有优秀交互界面并且功能完善的嵌入式中文拼音输入法,该输入法可以实现中文、英文、数字、标点以及常用符号的输入,并且输入法稳定性、安全性以及可靠性都相当出色,与此同时移植性和扩展性也很好。2 中文输入法设计环境2.1 嵌入式系统嵌入式系统(Embedded System)是当今最热门的概念之一, 关于嵌入式系统的定义,业界并没有一个明确统一的概念,目前比较认可的一个定义是:嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应于应用系统对功能可靠性成本体积功耗等有严格要求的专用计算机系统5 当前的社会是一个信息大爆炸的社会,各类信息极度丰富,遍布于我们的生活方方面面,要想实现这些信息的管理,仅局限于PC是不行的,而最近几年智能终端的快速发展,特别是手机的出现,给我们管理这些信息提供了一个很好的平台,目前主流手机的操作系统都是基于嵌入式开发的例如安卓系统和ios系统。通过便捷式智能终端来管理我们生活中所遇到的各种信息已经成为社会发展的趋势,也是嵌入式前进的方向。2.1.1嵌入式的发展历史与趋势纵观嵌入式技术的发展,其主要经历了如下四个阶段:第一阶段的嵌入式是以微控制器为核心的无操作系统阶段。这种控制器可通过汇编语言进行编程,从而实现对系统的控制,通常不含操作系统。这种初期系统的出现主要应用于工业方面。由于其就有不错的稳定性和实时性,初期阶段在工业控制领域取得了快速的发展。但随着现代工业的蓬勃发展,工业控制也要求有着良好的交互界面和高稳定性,高效率。因此对系统的处理效率,存储量以及接口都有着更高的要求,这种形式的系统已经不适合现代工业的发展。第二阶段是以嵌入式微处理器为基础的简单操作系统阶段。该阶段的嵌入式以简单操作系统为核心。其主要特点是处理器版本出现了很多种,但由于扩展性和移植性的原因,相互间的通用性较弱,但系统效率相比之前得到了很大的提高,体积也得到进一步变小,可用于批量生产,成本低。但是这一阶段的嵌入式系统没有良好的用户界面,人机交互效果不好。第三阶段是嵌入式操作系统作为真正意义上的操作系统的问世。这一阶段的嵌入式系统在继承之前阶段系统的优点的同时,进一步的提高了嵌入式系统的通用性,扩展性以及可移植性,使嵌入式系统能运行于各种不同的嵌入式处理器上,兼容性得到大幅度的提高;操作系统内核变得更加精小、使得开发更加微小的产品成为可能;具备文件和目录管理功能、支持设备和网络连接、支持多任务处理功能,为产品间的通信提供了可能;这个阶段的用户界面方面已经有很好的发展,出现了很多经典而且好用的用户界面和大量应用接口,应用软件丰富。第四阶段是嵌入式与互联网的连接为标志的高级嵌入式系统。也是现阶段正处于的发展阶段,目前很多嵌入式终端产品,特别是消费电子类的产品,都已经实现了产品与互联网的连接。通过接入互联网,更能发挥嵌入式在控制领域的巨大优势,例如通过手机我们可以在任意时刻,任意地点进行远程控制我们已经联网的各类终端产品,这也是未来智能化生活发展的方向。目前大多数嵌入式系统,特别是在工业领域,很多产品还不支持与Internet的连接,但随着智能化生产的提高,各领域嵌入式设备与互联网的结合将是嵌入式技术的发展方向6。通过近十年来发展,所支持的平台数量和种类不断增加,纵观嵌入式的发展,呈现以下五大前进趋势: (1)嵌入式内核向微型化,模块化发展,系统的可靠性、稳定性、实时性得到进一步的提高。(2)嵌入式软件开发环境向一体化、简单化、集成化、可模拟、调试化发展。(3)随着自由开源的软件技术越来越受到开发者的青睐,在系统核心源代码坚持开源的嵌入式Linux将渐成为主流操作系统之一。(4)嵌入式操作系统将朝着行业开放、标准化,规范化、平台化的方向发展。(5)嵌入式软件与互联网、移动通信、普通计算系统及产品的结合发展趋势将加剧。2.1.2嵌入式产品应用嵌入式产品要想进入个人随身携带终端或者走入家居生活,它必须满足以下几个特点:首先体积要求足够轻薄,造型满足个人化,其次输入简单便捷、输出多媒体化。另一方面由于现代社会是个信息时代,网络化、智能化已经成为很多现代产品的发展方向,从目前比较流行的智能穿戴发展来看,未来嵌入式产品与网络的结合将成为一大亮点。纵观嵌入式目前的发展,其已经在很多应用领域成功进军,这些领域的发展将成为未来科技领域的发展方向,嵌入式系统的应用领域如图2-1所示:图2-1嵌入式系统的应用嵌入式系统未来几年的发展方向将是以个人电脑的形式分布于各种大小的智能设备中,从手机到智能穿戴,再到各种智能家居等等,这些产品会提供一个便捷的输入与输出界面,可以让你很轻松的掌握自己的各种终端产品。这些产品通过网络相互连接在一起,然后把信息统一反馈至终端进行综合管理,真正实现智能生活。2.2 Linux系统Linux系统的来源是基于Unix系统的,是一套Unix-like的作业系统,也是Unix系统的一种。也可以说Linux系统是一类Unix操作系统的总称。Linux诞生于1991年,其开放源代码,可以定制的特点吸引了大批人士、企业以及各种研发队伍投入其中,也正因此,Linux呈现很多种流派。不同品牌的Linux系统有着各自的特点和使用人群,著名的且使用较广的Linux系统有如下几种:Red Hat、Ubuntu、Debian 、Fedora及OpenSUSE等7。2.2.1 Linux系统的发展相对于window系统来说,Linux最大的特点就是其核心代码是对外公布的,而window是封闭的。这样虽然在一定程度上和好的保证了系统的保密性和安全性,但从长远来说,这种形式的安全措施是不利于技术的发展和进步的。1983年理察马修斯托曼创立了GNU(GNU Project)计划。这个计划的目的是开发一个对任何人都完全免费的Unix-like系统,从而打破操作系统的源码只在少数人手中的限制,打破软件技术发展的瓶颈。理察马修斯托曼的这一计划得到了广大专业程序员的支持,越来越多的优秀程序员自愿地加入到这个项目中来,自愿地开发Linux系统的应用程序,并借助Internet平台与大家一起分享成果,就这样Linux逐渐发展壮大起来。Linux系统是一个完全free的操作系统。这种free不仅仅指任何人可以自由的在互联网上下载,上传Linux操作系统,更重要的是它的free包含用户可以自由地修改Linux系统的源代码,从而根据自己的需求开发一款专用的操作系统,实现真正意义上的个人定制。并且自己还可以把自己的修改成果上传到特定的Linux交流平台上,供大家参考学习,这样既提高了自己的能力也帮助的Linux系统修复BUG和进行系统的更新,进而也促进了Linux的发展。 Linux正是因为这样一个良性的循环,才能在短短时间内得到快速的发展,并在操作系统方面可与其他主流操作系统分庭抗礼。2.2.2 Linux系统的特点前面已经介绍了Linux系统的诞生背景。可以很清楚的知道Linux从诞生之初就注定是一个完全free的操作系统, Linux系统之所以快速的发展,其开放、免费的特性必然起了很大的作用,但仅仅靠这两个是不够的,下面就让我们来总结一下Linux系统到底都具有哪些特性:(1)开放性:Linux的这一开放性是指所有遵循世界标准规范以及其他国际标准的硬件和软都能很方便地实现不同系统间的软件互连。(2)多用户:Linux具有多用户特性,其系统资源可以被不同用户使用,调用时互不影响。(3)多任务:多任务处理功能是现代计算机一个重要的特征。它是指计算机在各个程序的运行互相独立的情况下同时运行多个程序。Linux就有良好的多任务处理能力。(4)良好的用户界面:Linux支持两种完全不同的操作界面,分别是用户界面和系统调用。系统调用主要是用户在进行编程使用的界面。好处是便于用户可以在编程时直接使用系统调用命令,从而提高开发效率。另一种界面是图形用户界面,即常见的人机交互界面,它通过鼠标、菜单、窗口、滚动条等方式给用户呈现一个直观、简单、易操作的友好的图形化界面。这种界面也是很多专业用户和非专业用户最常用的用户界面。(5)设备独立性:设备独立性是指不管是何种程序,只要安装了它们的驱动程序,任何用户都可以很自由的操纵、使用这些设备,Linux操作系统是具有设备独立性的,它的内核在这方面有着高度适应能力。(6)网络功能丰富:Linux为用户提供了强大的网络功能,拥有大量支持Internet的软件,用户能通过Linux与在世界任何一个有网络的地方的其他人进行通信。除此之外,Linux还支持文件传输,用户只需要输入简单的命令就可以完成内部信息或文件的传输。(7)系统安全可靠:Linux采取了许多安全技术措施,遍布包括对读、写控制、审计跟踪、带保护的子系统、核心授权等各方面,为用户提供一个安全可靠的网络环境。(8)可移植性强:可移植性是指将操作系统从一个平台放置到另一个也能正常运行的能力。Linux具备良好的移植特性,这一特点为运行Linux的不同计算机在不增加成本与资源的情况下与其他机器进行交流提供了前提8。2.3 GUI系统综述GUI 系统的含义为图形用户接口(Graphic User Interface)系统9。它是用户与计算机交互的窗口。GUI 系统已经有了越来越广泛的应用,对于嵌入式软件而言,GUI是衡量一款软件好用与否最直接的方法。2.3.1 GUI在嵌入式系统的作用无论是那种操作系统,对于操作者来说,有一个优秀的交互界面都是很重要的。从上世纪90年代起,GUI作为人机交互的接口就已经被广泛的应用。最具代表性当属windows系列(例如:Windows95、 Windows98、Windows 2000、Windows XP等)操作系统,其他比较有名的还有Linux系统。相比传统的命令行接口方式,GUI系统为非专业程序用户提供了很友好的交互界面,让计算机系统变得简单起来,使用户可以很快的接受系统的操作,也使很多程序员从枯燥的界面中解脱出来。在嵌入式发展的初期阶段,GUI系统很少被使用,通过简单的LED(发光二极管)和按键相结合的方式是早期人机交互实现的方式,随后显示幕的出现给了GUI系统很好的发展条件。早期阶段的GUI系统之所以被应用的比较少,原因有两个:一是从功能方面考虑,早期阶段的嵌入式系统主要应用在工业控制领域,所需要的嵌入式系统逻辑很简单,从中所需要获取的信息也很少,用户只需要通过几个简单的指示灯或者简单的按键进行信息判断和控制就行了,不需要很复杂的显示系统。二是从当时的技术发展水平方面来说,当时嵌入式处于起步阶段,其所应用的处理器平台计算能力很低,并且所支持的物理内存也很少,不满足复杂系统所需要的硬件配置,使得GUI系统在人机交互界面的普及有技术障碍。但随着嵌入式系统的发展和普及,特别是处理器的计算能力和内存越来越强,GUI系统在人机交互方面的优势才被展现出来,当智能手机、PDA 等系统相继出现并流行后,意味着嵌入式系统已经不是仅仅给个别专业操作人员所使用的,而需要适用于很广泛的群众。因此,GUI 在嵌入式系统中的普及是大势所趋。GUI 系统需要最终向用户提供输出和输入两个方面。在输出方面,GUI 系统向用户提供一个图形化的界面,在输入方面,GUI 系统需要接受用户的操作,从而达到通过界面控制系统的目的。2.3.2嵌入式 GUI 系统的层级结构嵌入式系统的设计一般秉承精简、高效的原则,其软件的层次结构相对简单。自下而上,一般可以分为硬件层、操作系统层、中间件、应用层等几个层次,如图 2-3 所示: 图2-3 嵌入式系统的软件架构嵌入式系统的硬件分为处理器(通常包含 CPU 和片内设备)、内存、板级硬件几个部分。CPU 涉及了特定体系结构的运算和控制单元,例如 ARM、MIPS 等10,在整个系统的软件开发中,一般都要基于该体系结构的编译工作。片内设备是处理器内部的硬件模块,比较重要的包括内存管理器、中断控制器、定时器、GPIO 等。嵌入式系统的内存的 RAM 主要通过 SRAM 和 SDRAM 实现。板级的硬件包含了嵌入式系统中需要,但是处理器片内没有集成的部分,通常包括片内部件的外围硬件、总线扩展、GPIO 扩展几种形式。嵌入式的操作系统建立在硬件之上。操作系统通常具有进程(任务)调度、进程间通信、内存管理等方面。嵌入式系统的操作系统一般都具有一定的可移植性,可以建立在不同的硬件平台上。操作系统的移植层通常包括对某种体系结构 CPU 的支持,需要涉及定时器、中断控制器、系统内存等硬件。中间件一般是向上层软件提供了各种应用程序接口(API) 。中间件需要通过对操作系统的调用来建立,常常需要控制硬件。在嵌入式系统中,常用的中间件包含文件系统(FileSystem) 、网络协议(Net protocol) 、图形用户系统(GUI)等几种,它们一般都需要控制特定的硬件来实现。此外,数据库(Database)等不需要控制硬件的下层软件,通常也作为中间件的形式出现。应用层包含了应用程序的逻辑,它通过调用中间件和操作系统来实现。应用层的软件程序也可以由上下若干层和不同的模块组成。2.3.3 GUI的设计原则嵌入式 GUI 系统的功能是给上层的程序绘制出以图形界面为展现形式的能力,并且能够接收用户输入的指令。GUI系统既可以当作为一个单独的数据库,也可以看作是和程序连接在一起的源代码。在嵌入式系统中,GUI系统是嵌入式实现图形化界面的核心部件。由于嵌入式系统的特殊性,在GUI的设计原则方面,GUI应该有如下几个特点:(1)可移植性:不同操作系统所提供的机制可能没有任何关系,完全不同。为了能在不同的系统中使用,嵌入式 GUI就需要一定的可移植性来支持不同的操作系统。在硬件结构方面11,包括CPU 体系结构、输出和输入设备等方面。只有嵌入式 GUI 系统的代码可以在不同的编译器上编译,这样GUI系统才能适应不同的体系结构。通过具有广大数据库的 C 语言编程实现的系统可以满足这个要求。 (2)较高的稳定性和可靠性:个人 PC 的崩溃可能只需要简单的重启就可以弥补,但是嵌入式系统的崩溃,尤其是在工业控制领域,就可能导致无法挽回的严重后果。 因此更强的稳定性和可靠性是嵌入式GUI系统所必须的。例如:在一些控制、通讯系统中,GUI 系统属于提供的是辅助的人机交互功能,如果由于 GUI 系统的问题,而导致系统核心功能的崩溃是得不偿失的。由于一些嵌入式系统中,不同任务运行在同一个内存空间内,并且缺乏多任务保护机制,因此,嵌入式GUI系统由于一个子系统的问题而导致整个系统崩溃的概率更高。对于嵌入式 GUI系统而言,一方面需要有较高的稳定性和可靠性,减少系统崩溃的概率;另一方面,在 GUI 系统已经崩溃的情况下, 也需要确保尽量较少影响其它子系统的工作, 将问题控制在一定范围内12。(3)系统开销少:和PC 系统相比较而言,嵌入式系统在资源方面是相对有限的。系统的资源包括处理器的频率、Flash 的空间和 RAM 空间等几个部分。除了资源有限之外,嵌入式系统的运行还需要调用一些其他比GUI系统更重要的程序。基于以上原因,嵌入式 GUI 系统具有开销小的特点是必须的,其不能占用系统过多的资源。如果占用系统资源太多,不但 GUI 系统无法正常运行,出现卡顿等情况,甚至会造成整个系统无法工作。 (4)较高可配置型:嵌入式应用领域是很广的,不同领域的系统相差较大,为适应不同系统的需求,嵌入式 GUI 系统需要具备较高的可配置型。GUI 系统可以提供很多的功能,但是在所有的功能并不是都要在某种特定系统上使用,可以去掉不相关的功能来节省系统的开销。此外,在界面基本相同的情况下,皮肤和主题的更改和配置也可提供系统的灵活性。2.4 Qt/EmbededQt/Embedded 是Qt库开发商 TrollTech 公司(后被诺基亚公司收购)(/)发布的面向嵌入式系统的 Qt 版本。 Linux 系统桌面普遍使用的图形库就是基于QT/E开发的。与桌面版本不同,Qt/Embedded把所有的功能全部整合在一起,直接使用 Frame buffer,去掉 X Server 及 X Library 等多层次。嵌入式QT是一个完整的窗口系统的同时也是一个应用程序框架,并且嵌入式Qt是在Qt的基础上发展而来的,与Qt之间保持统一的API,这一特性对嵌入式应用程序的开发提供了非常好的便利,我们不用再去重新熟悉一套全新的API,并且很多桌面系统中的应用都可以移植到嵌入式QT下。QT 和 QT/E 系统结构如图2-4所示: 图 2-4 QT 和 QTE 系统结构Qt的编程使用的是C+面向对象的机制,还有一些QT本身的但基于C+的附加功能、信号与槽以及相应的宏编译机制。QT/E具有强大的开发能力,为GUI程序的建立提供了快速的平台。QT/E的框架结构相对于QT以及其他版本有个明显的特征就是它不需要Xserver,这个特征使得QT/E相对减少了很多的内存,而用来代替X Server 及 X Library的Frame buffer 库可以在使用前对其进行配置13,从而进一步的减少内存的占用,如果事先知道应用和相关的具体组件,还可以将组件、应用程序和QT/E库进行静态连接,从而进一步的减少CPU和内存的使用。总而言之,QT/E的出现为嵌入式图像系统的开发提供了良好的开发平台。2.4.1 QT/E的信号槽机制信号与槽机制是QT的一个核心机制,它主要应用于对象之间的通信,是QT区别于其他工具包的一个重要特性14。信号与槽的工作内容大致和C语言编程中指针功能差不多。例如在一般的GUI工具中,窗口上的小部件一般都有一个对应的回调函数(通常为指向某个函数的指针)与其对应,当该部件被触发时,该回调函数就会响应并加以处理。在这个过程中会产生ocerdumPs,而且由于键盘上的功能也相对很多,这样就需要很多函数指针,使得程序很凌乱。但是Qt中由于信号和槽的使用,不再需要许多繁杂,凌乱的函数指针,使得通信程序在编写时更为简洁明了。任意数量、类型的对象都能被信号和槽携带,而且不会产生ocerdumPs。当对象的状态被改变时,该对象对应的信号就会发射出去,这是对象所需要做的全部工作, 对象被当作一个真正的软件组件来使用,该信号被发送时已经经过信息封装,但它并不知道到底是由谁来接收这个信号。槽用于接收信号,其本身并不知道是否有消息与自己连接,一个槽可以连接单个信号,也可以连接多个信号,甚至信号与信号间的连接也是有可能的,总而言之,信号与槽机制为QT提供了强大的部件编程机制15。3中文输入法综述3.1输入法简介输入法通常是指通过编码的方式将各种符合、文字、字母等输入到计算机或者其他设备(如手机)中。由于不同国家、地区、民族所使用的语言是不同的,因此市场上具有很多种不同种类的输入法。由于计算机键盘在设计时使用的就是英文字母作为标配,所以就英文而言,是不用专门开发英文输入法软件的,而其他种类的输入法(如汉语、韩语、日语等)是无法直接通过键盘输入的,它需要通过编码的方式来完成相应文字的输入。就汉语而言,其编码方法基本上都是依据汉字的音、形、义与特定的按键进行相关联,然后通过联想、查询的方式进行输入的。常用的中文输入法有分为四类:音码、形码、音形码和无理码16。按照编码类型来分,目前比较流行的输入法有拼音输入法和五笔字型输入法等。流行的输入法软件有搜狗输入法、讯飞输入法、QQ输入法、百度输入法、谷歌拼音输入法等。3.2中文输入法发展和现状中文输入法可以理解为一种将汉字输入计算机等电子设备的编码方法。在传统的键盘上,分布的英文字母一共有26个,分布在键盘上不同的26个按键上,所以操作系统本身是支持英文的输入的。而对于汉字而言,汉字的组成是极其复杂的,而且汉字文化又是博大精深,光汉字就有几万个,它们本身和键盘没有任何对应关系的,为了能够通过英文键盘在电脑中输入汉字,我们必须依照某种方式赋予每个汉字独特的编码。现在最为流行的输入法是拼音输入法,其编码方式是根据汉字的“音”的特征来进行编码。这类输入法比较容易掌握和操作,但是拼音输入法有个很大的弱点,就是单字重码率相当高。特别是拼音输入法发展的前期,当时的拼音输入法智能化程度很低,它不但不支持词组和整句的输入,甚至连编码和文字都不能在一起显示,往往需要翻很多页才能找到需要的汉字,输入效率非常的底下。后来到了1998年,谭亚军发明了拼音之星软件这种情况才得以改善,“实时显示”功能的加入使得用户可以及时的更正有错的拼音,进而更加准确、迅速的找到所需的汉字。并且这个时期的输入法已经支持自动分词与整句输入,还支持输入词语和语句的自我学习和存盘,具有了智能拼音的一些必要的核心功能。现在的拼音输入法基本上都是在此基础上发展而来的。下面通过几个代表性的输入法来回顾一下输入法的发展历程。(1)智能ABC走向智能拼音的里程碑。早期的智能拼音输入法代表是北京希望公司开发的智能ABC输入法,它支持词语的全拼输入,并且具有简单的词语联想,此外还具有自动调频和记忆功能,这些都是输入法智能化的雏形。智能ABC的出现是拼音输入法发展史上的一座里程碑。(2)紫光拼音开创了智能组词的先河。后来的紫光拼音的出现在原有的ABC输入法基础上增加了很多新的功能,并且弥补了之前智能ABC输入法词库不足的缺点,新收录了短语、地名、人名以及常用词语的等词汇。在新增的功能中最为有意义的就是“智能组词”概念的出现,它利用后台的语义统计分析,然后根据用户所输入的拼音在字库中寻找匹配的单词,并进行智能组词,供用户选择,一改之前如果字库中没有匹配的词语用户只能选择单个字的缺点,大大的提高了用户输入汉字的效率,使用户输入更加方便、快捷,紫光拼音也因此成为了当时国内比较有影响力的国产拼音输入法。(3)搜狗输入法与互联网的完美结合,当代输入法的主力。后来随着互联网的快速崛起,搜狗输入法随之诞生。作为输入法行业的后进者,必须有着自己的核心竞争力才能在该市场取得突破,获得用户的认可。搜狗输入法最终选择了利用自己在互联网数据方面的优势,以词库为自己的突破口,首次提出利用互联网搜索引擎的数据来建设词库的构想,打破之前词库陈旧,数据静态的缺点,通过搜索引擎不短增加新词、热词,保持词库的动态化以及新鲜化。事实证明,搜狗的这一决定是正确的,各种输入法之所以在使用体验上有明显差距,就是因为词库的不同,搜狗输入法由于在词库与互联网的挂钩,使得自己在 词库这方面有着无与伦比的优势,其打字速度相比传统的输入法在速度上至少快一倍,使得中文输入法在智能化进程上前进了一大步。搜狗输入法是目前应用最广泛的输入法,在市场上占据着绝对的占有率,远高于其他输入法的市场占有率,除了搜狗输入法,还有以下比较流行的输入法:讯飞输入法、QQ输入法、百度输入法、谷歌拼音输入法、T9输入法等。(4)云输入法未来输入法的展望。云输入依据的原理是当用户在电脑前输入拼音后,数据传输到后台的计算机处理中心,通过云计算机的处理,将对应的汉字或词语甚至句子将通过互联网几乎实时的显现出来,这种模式开发的输入法利用云计算机超强的处理能力以及硕大的字库量从而实现更准确、快速的输入体验。云输入是未来输入法发展的方向。3.3 中文输入法相关技术输入法通常是指通过编码的方式将一些文字、字母等输入到计算机或者其他设备中。就汉语而言,其编码方法基本上都是依据汉字的音、形、义与特定的按键进行相关联,然后通过联想、查询的方式进行输入的。中文输入法的编码技术虽然有很多种,但依据其编码所依据的技术方法,归纳起来共有拼音编码、形码、音形结合码三个大类。(1)拼音编码:拼音编码是依据汉语拼音作为编码方法,是现在应用最广泛的一种编码方式。目前流行的输入法软件如搜狗拼音输入法、智能ABC输入法,百度输入法等都是基于拼音编码开发的。(2)形码编码:形码编码是依据汉字字形来进行编码的,将笔画与某些按键进行关联,然后通过组合构想的查询方式进行中文文字的输入。常见的形码输入法有五笔字型输入法、12345五笔输入法、郑码输入法、行列输入法、大易输入法、呒虾米输入法等。(3)音形结合码编码:音形码编码是通过拼音加上汉字笔画进行的编码方式,包括音形码和形音码两类。代表性的输入法软件有两笔输入法、极点二笔输入法等。除了编码技术外,输入法还应用到了其他很多重要的输入法方面的技术,下面简单介绍几种:1) 词语联想:即便在用户输入拼音有误的情况下,根据使用者的输入习惯并依据大数据的分析结果,尝试显示用户想要输入的拼音并显示结果。2) 记忆功能:对用户的输入数据有记忆功能,当用户再次输入相同词语时,优先显示相应词语。方便用户的输入习惯,提高输入效率。3) 智能组词:对于词库中没有的与输入的拼音对应的词语时,通过语义分析,实现智能组建新词语或者查找相近词语。4) 动态词库:支持互联网搜索引擎数据与词库的连接,使词库动态化,与时俱进,保障词库的网络化、新鲜化。5) 数据同步:数据同步是指用户可将自己常用的输入习惯,比如所在领域,常用词语等同步到云服务器上,通过账户的方式,实现随时随地的有一个属于自己特色的输入法。6) 多功能:好的输入法不仅有文字、数字以及常用符号的输入功能,更要与时俱进,支持一些新功能,例如表情、特殊符号、字符画、日期时间的输入,并支持与互联网的连接,支持个人输入法的定制。4中文输入法的实现4.1开发环境安装一、下载并安装Ubuntu操作系统,可以到官网下载最新的Ubuntu版本。下载地址为“http:/www.U/desktop/get-Ubuntu/download,通过参考安装教程,最终在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运行界面4.2 中文输入法实现原理与流程图设计一款输入法首先要清楚它都包含哪些功能,需要什么组件构成,用到哪些技术,只有清楚了这些内容才能够有步骤的去设计输入法,本文设计的目的是开发一款针对国内用户的具有优秀交互界面的并且功能完善的嵌入式中文拼音输入法,该输入法可以实现中文、英文、数字、标点以及常用符号的输入和相互切换。明确了其要具备的功能后,就很好去构思输入法窗口都有哪些模块组成了,本文的输入法界面有软键盘(包含英文26个字母键、数字以及常用符号和功能键等)、中英文切换键、拼音输入框以及汉字显示屏组成。输入法按键内部原理使用的是信号与槽的原理,预先给每一个Button设置一个槽函数,当光标切换到软键盘上任意一个按键并触发时,该按键相应的槽函数将发送一个信号到相应处理函数,并将该按键相应的字母或者符号显示到拼音输入框上17。这一过程使用到了两个函数,分别是信号函数clicked()以及接受accept()函数,由信号clicked()触发accept()槽来实现拼音输入框显示。紧接着拼音输入框QLineEdit会根据用户输入的拼音到sqlite数据库zh_CN_egb2312.db中进行汉字的查找,并将查找到的汉字显示到汉字显示框中。当用户选择汉字对应的序号时该汉字被写入到QLineEdit显示,至此完成中文输入。输入法原理图如图4-4所示:图4-4输入法事件流程4.3 软键盘的设计在这个软件盘中,需要实现大小写英文、中文以及常用符号的输入。软键盘布局的设计在QT设计师Qt Designer中完成。输入法界面设计环境如图4-5所示:图4-5 拼音输入法界面为每个按键增加一个“Dynamic Properties” 属性:ButtonValue,用作按键标识。如按键0的ButtonValue为“0”,字母按键的ButtonValue等于按键所代表的字母,删除按键backspace的ButtonValue设为“backspac”,其它类似。QWidget中具体需要添加如下部件:QGridLayout *gridLayout; 窗口布局QPushButton *panelButton_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_maohao; :键QPushButton *panelButton_dot; ,键QPushButton *panelButton_shift; shift键QPushButton *panelButton_space; 空格键QPushButton *panelButton_abc; 英文切换键QPushButton *panelButton_pinyin; 中文切换键QLineEdit *lineEdit_pinyin; 拼音框 我们启动拼音输入法后弹出如下图所示界面:这时我们可以按“abc”和“拼音”按钮选择中文输入或是英文输入,当输入正确的拼音时,会在软键盘的LineEdit中显示与该拼音匹配的汉字,如果该拼音对应的汉字超出十个,可以按“后”键来查询。按下“shift”键后,将切换到大写字母输入。按“隐藏”键可以隐藏输入面板。“关闭”按键可以退出拼音输入法。软键盘如下图4-6所示:图4-6 拼音输入法界面4.4 数据库的设计(1)各字段的说明如下:id: 编号;pinyin: 汉字或者词组对应的拼音;hz: 汉字或者词组与拼音一一对应;pri: 汉字使用频率。(2)字库创建:CREATE TABLE zh_CN_gb2312 (id INTEGRPRIMARY KEY, pinyin TEXT, hz TEXT, pri INTEGER);(3)创建索引:为加快查询速度,对相应字段建立索引,创建id字段上的索引:CREATE INDEX index_zh_CN_egb2312_id ON zh_CN_egb2312(id ASC);创建pinyin字段上的索引:CREATE INDEX index_zh_CN_egb2312_pinyin ON zh_CN_egb2312(pinyin ASC);创建pri字段上的索引,使用降序:CREATE INDEX index_zh_CN_egb2312_pri ON zh_CN_egb2312(pri DESC);4.5软键盘内部实现在设计软键盘时,我们赋予每一个按键一个参数作为按键的ButtonValue值,然后用QSignalMapper类对每一个按键所携带的信号进行转换,将发送的无参数信号转换为有参数的信号,最后在将转换后的信号连到同一个槽上, connect(ui-button_1,SIGNAL(clicked(),&signalMapper, SLOT(map();signalMapper.setMapping(ui-button_1,ui-button_1-property(buttonValue);connect(&signalMapper,SIGNAL(mapped(QString),this, SLOT(buttonClicked(QString);为简化按键事件发送,用Qmap实现“键值”映射,将ButtonValue按键标识转换为按键对应的键值。例如:keyMap.insert(0,Qt:Key_0);即将按键的ButtonValue值:“0”映射为其代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昌吉市2025-2026学年九年级下学期语文期中测试试卷
- 昌吉回族自治州2024-2025学年九年级上学期语文月考测试试卷
- 亳州市2025-2026学年七年级上学期语文月考测试试卷
- 滨州市2024-2025学年七年级上学期语文月考测试试卷
- 本溪市2024-2025学年七年级下学期语文期末模拟试卷
- 自动化测试与质量保证平台创新创业项目商业计划书
- 物联网在智慧水务的应用创新创业项目商业计划书
- 移动应用安全测试与加固平台创新创业项目商业计划书
- 网红IP衍生品创新创业项目商业计划书
- 生产线智能物料配送创新创业项目商业计划书
- 6G多维度切片QoS保障-洞察及研究
- 2025-2026学年外研版(三起)(2024)小学英语四年级上册教学计划及进度表
- 2025年安徽国控集团所属企业招聘7人笔试备考题库及答案解析
- 高考3500词汇表(完整版)
- 应急第一响应人理论考试试卷(含答案)
- 复用器械处理流程
- 静安沉恒 沉子恒
- GB/T 23510-2009车用燃料甲醇
- GB/T 14216-2008塑料膜和片润湿张力的测定
- 警械使用课件
- 人教版小学三年级英语上册期中考试试卷
评论
0/150
提交评论