基于qte的嵌入式中文输入法的设计与实现毕业设计(编辑修改稿)内容摘要:

X 系统 , 大大 节省 了 许多的 不必要的 系统开销 ,需要在 GUI 展示的 图像 , 直接写 入 了 framebuffer, 节省了系统资源,大大 加快 了 显示速度。 这 是 Qt/E 的最大优势。 两者的体系结构差别, 如图 21 所示: 图 21 Qt/E 和 Qt/X11 体系架构对比 因此, Qt/E 具有 服务端 层,这一层 主要 负责监听系统 的 事件, 如: 主要是 keyboard和 mouse 事件, 移动终端 输出 事件 ,管理 域 ,管理 top 窗口,管理光标和 管理 屏幕保护程序等等诸多功能。 系统 被触发产生 的 keyboard 和 mouse 事件,首先就传给 服务端 层 ,然后 服务端 再 根据具体的 实际 情况 把 以上 事件分 派 给 , 相 对 应的应用程序 和软件。 Vim 简介 Vim 是 Linux 系统下最常用的文本编辑器, Vim 是一个类似于 Vi 的文本编辑器,Vim 是 Vi 的升级版, Vim 在 Vi 的基础上增加了很多新的特性, Vim 普遍被推崇为类Vi 编辑器中最好的一个。 80 年代末 ,出现了 Vim 的 版本。 最初的目标只是完全复制 vi 的功能,那个时候的 Vim 是 Vi IMitation(模拟)的简称。 1991 年 Vim 版被 Fred Fish Disk 591 这个 Amiga 用的免费软体集所收录。 1992 年 版本的 Vim 被 移植到了 UNIX 和 MSDOS 上。 从 此 , Vim 的全名就 正式 变成 Vi 基于 Qt/E 的 嵌入式中文输入法的设计与实现 5 Improved。 Vim 的发展很迅速, 在这之后, Vim 加入了不计其数的新功能。 作 为第一个里程碑的是 1994 年的 版本加入了多视窗编辑模式(分割视窗)。 从那之后,同一 屏幕可以显示的 Vim 编辑文件数可以不止一个了。 1996 年发布的 Vim 是第一个利用图型接口 ( GUI) 的版本。 1998 年 版本的 Vim 加入了 highlight(语法高亮)功能。 2020 年的 Vim 版本加入了代 码折叠、插件、多国语言支持、垂直分割视窗等功能。 2020 年 5 月发布的 Vim 版更加入了拼字检查、上下文相关补完,标签页编辑等新功能。 现在最新的版本是 2020 年 8 月发布的 Vim ,该版本合并了 Vim 以来的所有修正补丁,并且加入了脚本的浮点数支持。 基于 Qt/E 的 嵌入式中文输入法的设计与实现 6 3 系统需求分析 需求分析的目的 需求分析就是要明确需求方和开发放需要开发一个什么样的产品才能满足客户的需求 , 即明确“需要干什么”,不需要知道“怎么干”。 本系统要实现 的是一个用于 嵌入式 GUI 的中文拼音输入法 , 因为 要 适用于嵌入式平台下,因此该输入法应占用较少的系统资源 ,输入法界面要美观,输入要方便,中英输入法切换要方便。 需求分析的地位与作用 需求分析是开发软件是否成功的决定因素。 软件项目中 大多数的问题都是因为需求分析不当或者是需求分析考虑不周全而导致的。 在软件 需求分析 的 过程中 ,导致问题的出现主要包括以下方面 ,包括 用户的需求不明确,需要实现的功能不明确, 、需求的 文档不 是很完善等,都可能造成产品 开发 的过程 中的 出现很多 困难。 软件需求分析 ,虽然 是软件开发 整个周期的开始 阶段, 但也是 软件开发 整个周期中最为关键的 一个阶段,关系到项目 开发成败的 一个 关键步骤。 系统应该满足的功能 通过调查研究显示,一个良好 的输入法不仅仅要使 用户输入起来方便 ,更需要安全、可靠、高效的系统支持。 本输入法 的要求是: (1)要求具有良好的 界面。 (2)占用系统资源少。 (3)输入方便。 本系统需要实现的功能是:中文,大小写英文,常用标点符号 的输入 ,具有软键盘,并支持触摸屏, 具体功能模块如图 31 所示: 基于 Qt/E 的 嵌入式中文输入法的设计与实现 7 图 31 系统功能模块图 基于 Qt/E 的 嵌入式中文输入法的设计与实现 8 4 系统设计 搭建 Qt/E 开发环境 在进行 开发 之前 ,首先决定的第一个问题就是 ,该 使用什么开发环境来编写 该系统 ? 目前常见的 嵌入式 GUI,主要有 Qt, GTK+几种 工具 , Qt 的移植性更强, 基于此,本系统采用 Qt 来开发。 Qt 是诺基亚开发的一个跨平台 性很强 的 基于 C++图形用户 GUI 开发库。 开发语言为 C++。 有很多的有 优 点, 如: 具有优良的跨平台特性、面向对象 、丰富的 API、大量的开发文档。 移植步骤: (1)准备 好如下 源码包 : Qt/E 源码包: Qtx11 源码包: 触摸屏源码包: tslib1[1]. (2)编译安装 编译 应设置好参数,具体参数 如图 41 所示: 图 41 编译 tslib 参数 (3)编译安装 安装 时 , 最关键的 步骤 是 设置 的环境变量 环境变量具体如图 42 所示: 图 42 环境变量 (4)编译安装 Qt/ 基于 Qt/E 的 嵌入式中文输入法的设计与实现 9 编译安装 Qt/ 时,需设置好编译参数,具体参 数如图 43 所示 : 图 43 编译 Qt/ 参数 “ I/home/mytslib/include L/home/ mytslib/lib ”指明 刚才编译出来触摸屏的库文件及头文件存放路径。 “qtmousetslib”表示将使用触摸屏。 编译完成后,安装 时 ,最关键的 步骤 还是设置环境变量 具体的环境变量如图 44 所示 : 图 44 Qt/ 环境变量 (5)移植相关库文件至开发板 首先 准备一个文件系统, 根据友善提供的文档制作了一个文件系统,路径为/opt/rootfs, 其中 rootfs 就是 根文件系统。 把 编译 生成的 库文件及配置文件 复制 至开发板上 ,用 NFS 方式挂载文件系统, 把目标库文件等下载到 开发板。 需移植到开发板的文件如图 45 所示: 基于 Qt/E 的 嵌入式中文输入法的设计与实现 10 图 45 需移植到开发板的文件 移植如上文件到开发板后, 编辑开发板 /etc/profile,用来 在开发板上设置环境变量,具体的环境变量如图 46 所示 : 图 46 移植 Qt/E 应 设置的环境变量 设置 触摸屏的配置文件 把 module_raw collie 前面的 “# ”号去掉,然后把该行移至行首,最后 配置文件如 图 47 所示 : 基于 Qt/E 的 嵌入式中文输入法的设计与实现 11 图 47 触摸屏配 置文件 (6)验证 tslib 是否移植成功 . 在开发板终端下执行 触摸较正程序 : 在终端执行 ./ts_calibrate 运行该程序 主要是校正触摸屏 , 运行 ts_calibrate 后, 屏幕将出现五点校正画面,依次点击五点后,将生成触摸屏校正数据文件 /etc/pointercal. 在开发板终端下执行 触摸屏拖曳测试 程序 : 在终端执行 ./ts_test 运行后屏幕出现 drag, draw 依次选择后进行测试,同时终端下出现拖曳后的取点数据 (7)验证 是否移植成功 在宿主机 上编译好 Qt 的例子程序, 下载到 开发板下并执行: ./application –qws –font unifont 如能正常显示, 移植成功。 交叉编译环境的搭建 (1)配置 mini 在宿主机 Redhat Linux 下新建终端,在终端命令提示符后输入 mini s,回车,然后按照提示设置波特率 115200, 8 位数据, 1 位停止位,无 控制流 ,保存退出。 (2)TFTP 服务的配置 在终端中运行 setupsystem servicetftp 增加 TFTP 服务,并去掉 ipchains 和iptables 两项,然后在 Firewall configuration,选中 no firewall,保存退出,执行 service xid restart 启动 TFTP 服务。 (3)NFS 服务器的配置 在终端中运行 setupsystem serviceNFS,增加 NFS 服务,然后编辑文件 exports,添加与目标机共享的目录,并设置目标机对目录的访问权限,重新启动 NFS 服务。 (4)Linux 内核移植 通过并口,宿主机向目标开发板的 Flash 烧写引导程 序 vivi,烧写完毕后通过 TFTP服务把经过裁剪的 Linux 内核镜像文件以及根文件系统下载到目标板的 RAM 中,然后由 dnw 完成内核及根文件系统从内存到 Flash 的烧写。 最后需要在宿主机安装主编译器 Armlinuxgcc,用来交叉编译应用程序。 输入法设计 基于 Qt/E 的 嵌入式中文输入法的设计与实现 12 输入法 的 原理 Qt/E 是 C/S 结构,在 服务 端负责监听系统消息, 比如: keyboard 和 mouse 消息,而 中文 输入法 是一个全局性的模块,所以在 Qt/E 中, 把 中文 输入法的设计放在了 服务层。 输入法是属于 服务 层的一部分。 QWSInputMethod 是 Qt/E 的 一个类,其是中文 输入法 的 基类 ,在 QWSInputMethod这个基类中定义了一些 函数 用以支持输入法 的 程序 的 设计, 本文 从 此基类中 继承出 了一个 中文 输入法 的 类,在 该 类中处理 keyboard 和 mouse 事件,把接收到的 keyboard事件按照 用户所需要输入的汉字的拼音 ,从字库中查找出 之 对应的 汉字 , 词组 ,或者是一个 汉语 短语,发送给 当前的 显示 窗口,或者把 用户 最后 选择 的汉字、短语或词组发送到 当前的显示 窗口。 需 定义一个输入法窗口来显示用户当前的输入。 字符,汉字,英文 的输入一般分为三 大 步骤: (1)开始 准备 输入 当用户在 软 键盘上按下第一个 keyboard 按键 时 , 输入法会自动 创建 出 输入法 的 上下文, 输入法上下文包含 keyboard 输入字符。 (2)选择 编辑 当有任何一个新的 keyboard 按键被按下的 时候,输入法就会 主动 尝试着去创建与keyboard 输入相对应的中文字符 ,英文字符和数字等等 , 此时 , 激活 了中文 输入法 的上下文 ,用户可以 自由的 在 中文 输入法 的 上下文中前后移动光标。 (3)输入完成 当 用户认为输入已经完成的时 ,用户会选择以某种方式来选择最终的字符串,通常是使用 keyboard 按键 , 或者 mouse 点击 , 用户 最终 所选择的字符串 会 被发送到当前的编辑窗口。 输入法 流程图 本输入法 的 流程 是 :用户输入, 软键 盘得到 响应,系统判断是否处于中文输入状态,是:进入中文输入流程,否:进入英文输入流程,具体流程图如图 48 所示: 基于 Qt/E 的 嵌入式中文输入法的设计与实现 13 图 48 输入法 流程图 关键模块介绍 (1)中文输。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。