基于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)中文输。基于qte的嵌入式中文输入法的设计与实现毕业设计(编辑修改稿)
相关推荐
串行通信数据通常是在二个站 (点对点 )之间进行传送,按照数据流的方向可 分成三种传送模式 :单工、半双工、全双工。 单工形式的数据仅能沿着单一的方向传播。 半双工形式使用同一根传输线,即 可发送数据又可接收数据,但不能同时发送和接收,在任何时刻只能由其中的一方发送数据,另一方接收数据。 全双工形式的数据分别由两根在两个不同的站点同时发送和接收的传输线进行传送,通行双方都
图像处理 和计算机视觉方面的很多通用算法。 OpenCV主要分为四大模块,如图 31 所示。 OpenCV的 CV模块包含基本的图像处理函数和高级的计算机视觉算法。 ML 是机器学习库,包含一些基于统计和聚类工具。 HighGUI 包含图像和视频输入 /输出的函数。 CXCore 包含 OpenCV 的一些基本数据结构和相关函数。 图 31 系统流程图 配置 OpenCV 的 Qt 开发环境
可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。 另一种是, IEEE(国际电气和电子工业协会)的定义:嵌入式系统是用于控制、监视或者辅助操作机器的设备和装置。 两种定义分别是在不同方面来阐述嵌入式系统的特点,可以将嵌入式系统简单的理解为一种软件和硬件的综合体,将电子、计算机技术与具体应用相结合后的产物,是一种体型小巧、功能强大的集成系统。 嵌入式系统一般指非 PC 系统,
大批量操作 ( 4)覆盖面广 ( 5)搜索效率高 如何开展自动化测试 在软件测试的阶段,自动化测试应该被当作一个项目来开展。 首先要确定所开发的软件项目采用自动化测试是否适用。 短期的或者一次性的项目不宜采用,因为这反而增加开发周期和成本。 同样,在一个非常紧迫 的项目中也是不合适的,因为需要测试人员开发编写测试脚本,并需要开发人员的配合使得整个进程更加紧张仓促,适得其反。 安徽新华学院
个元件 之间的协同工作变得十分简单。 丰富的 API: Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/Odevice, directory management, date/time 类。 甚至还包括正则表达式的处理 功能。 支持 2D/3D 图形渲染,支持 OpenGL , 大量的开发文档 , XML
波的波长。 (2) 伦琴衰落信道。 在移动通信系统中,如果发送端和接收端存在一条占优势的视距传播路径,这种信道就可以模拟成伦琴衰落信道。 当发送端和接收端既存在视距传播路径,又有多条反射路径时,它们之间的信道可以利用 Simulink 中的伦琴衰落信道模块和多径瑞利衰落信道模块的组 合来进行仿真。 瑞利 衰落信道的统计模型 衰落信道的统计特征的模型可以用几种概率分布表示。