嵌入式中文输入法解决方案

合集下载

基于Linux嵌入式系统的拼音输入法设计

基于Linux嵌入式系统的拼音输入法设计

基于Linux嵌入式系统的拼音输入法设计基于Linux嵌入式系统的拼音输入法设计摘要嵌入式系统作为自动化信息的一个非常重要的领域,已经深入到社会的每个方面,关涉到电力电子、医疗、机械、电气和安全类等行业。

很多人不知道嵌入式技术的优势,其实嵌入式技术出现至今,尤其是近二十年的趋势跟发展,取得了非常巨大的成就,简单来说,对于一款具有优秀的嵌入式系统的产品,设计出一款基于QT设计的简洁、操作简单的图形界面也是对每个设计师的要求。

中国如今是拥有最多使用输入法人数的国家,而输入法也是越来越全龄化并且贴近生活,因此用户拥有一款支持拼音输入法的GUI系统是当今的需求,它的发展会促进各方面的进步,也是如今人们越来越期待的需求。

本文一开始阐明了嵌入式的相关知识与Linux操作系统,及嵌入式产品的发展历史和现今状况,对嵌入式技术行业在我国的需求现状进行深入的讨论。

之后详尽概述了拼音输入法设计的实现环境(Qt5.7)、连带知识、输入法开发的原理等。

并在此基础上完成GUI系统的设造以及拼音输入法的调试和使用。

最后设计出一款具有优秀界面(软键盘)的linux拼音输入法。

拼音输入法可以实现基本的拼音输入、中英转换、删除更改等功能。

关键词:拼音输入法;嵌入式;Linux;Qt5.7;GUI系统 The Design and Implementation of ChineseSpelling Input Method in Embedded LinuxSystemAbstractEmbedded system as an important field of automation information, has deep into every aspect of society, involves the power electronics, medical, mechanical, electrical and safety etc, the embedded system have a largedevelopment potential.Especially,embedded technology appearin recent twenty years with the trend of development, has achieved great success. In general, In order to develop a product with excellent embedded system,The design of a simple and easy to operate QT graphical interface is also a requirement for each designer. China is the country with the largest use of the number of Chinese spelling input method, which is also increasingly social and close to life, so it is the demand for the user to have a GUI systems that support the input method, which will promote the development of all aspects of progress, and now there is a growing expectation of the product.This dissertationfirst describes embedded knowledge and Linux operating system, and the development history and current status of embedded products, the demand for embedded technology industry in our country present situation in-depth discussion. The implementation environment (Qt5.7), related knowledge and the development of input method are summarized in detail. The design of GUI system and the development and use of pinyin input method are completed. Finally, a good graphic interface (soft keyboard) is designed for the Linux Chinese spelling input method. It can realize basic shelling input, Chinese and English translation, delete change and so on.Key words: Pinyin input method;embedded;Linux;Qt5.7;GUI system 目录1. 绪论 11.1拼音输入法的目的和意义 11.2嵌入式输入法国内外现状 21.3课题研究及发展动态 32. 拼音输入法开发环境 32.1嵌入式系统 32.1.1嵌入式历史及发展趋势 32.1.2嵌入式的普及 42.2LINUX系统 52.2.1LINUX的发展历史 52.2.2UBUNTU系统 62.3 LINUX系统总述 62.3.1GUI在嵌入式系统的应用 62.3.2GUI系统的层级结构 72.3.3GUI系统的设计准则 82.4QT5.7 92.5MINI2440开发板102.5.1ARM920T微处理器芯片102.5.2MINI2440介绍102.5.3 LINUX图形界面QTOPIA 2.2.0系统(预装) 113. 拼音输入法综述123.1拼音输入法简介123.2拼音输入法技术124. 拼音输入法的实现134.1设计思路134.2开发环境的装设144.3拼音输入法基本原理及编程语言174.4软键盘设计184.5按键功能实现194.6开发板移植调试194.7运行195. 故障分析及解决方案205.1 问题分析205.2 解决方案216. 结论与展望216.1 结论216.2 展望21参考文献23致谢24附录A设计程序25附录B 运行界面371. 绪论1.1拼音输入法的目的和意义现在随着科技文明的不断进步,智能设备、人工智能用具开始被人们所向往,同时也是将来必然的方向,拥有好的需求市场前程。

T9输入法在嵌入式设备中的实现方案

T9输入法在嵌入式设备中的实现方案
的 数 字 串输 入 , 可 以 对 目标 文 字 进 行 查 找 和 锁 定 , 从 而 实现 了 中 、 英文的输入功能。
关 键 词 :T9输 入 法 ; S TM3 2 ; 映射 ; 码 表 查找 ; 数 据 结 构
中 图 分 类 号 :TP 3 9 3 / TN9 1 9 文 献 标 识 码 :A



图 1 系统 硬 件 方 框 图
字) 进 行 人 机交 互 , 但 是 可用 的键 盘 已定 型 固化 而 且 按 键 极 其有 限( 仅 有 7个 ) 。根 据 T9输 入法 的基 本 原 理 , 研 究 了一
种 利 用 有 限 键 盘 资 源实 现 输 入 汉 、 英 文 字 的方 案 。
专 题 论 述
T 9输 入 法 在 嵌 入 式 设 备 中 的 实 现 方 案
李 文军 , 于 明浩 , 王新 征 , 郑 振 华
( 总参 通信 训 练基 地 , 宣化 0 7 5 1 0 0 )
摘 要 :文 字输 入 是 人 机 交 互 的基 本 方 式 , 而 中文 输 入 法 在 其 中 占有 重 要 地 位 。本 文 基 于 资 源 有 限 的 S TM3 2嵌 入 式 开 发 环 境 和 T9输 入 法 基 本 原 理 设 计 了一 种 中 英 文输 入 法 的 实 现 方 案 。 通 过 对 程 序 和 码 表 的设 计 , 结 合 键 盘 和 TFT显 示屏
r e a l i z e d . Key wor d s: T9 i n put me t h od; STM 32; ma p pi ng; t a b l e l o oku p; da t a s t r uc t u r e
引 言

(VR虚拟现实)基于AVR单片机的嵌入式拼音输入法

(VR虚拟现实)基于AVR单片机的嵌入式拼音输入法

(VR虚拟现实)基于AVR 单片机的嵌入式拼音输入法LCD显示-----拼音输入法成员:梁林荣孙丰沛任祥祥一、设计背景随着近年来嵌入式设备的广泛应用,人们对其要求变的丰富多样,而不仅限于简单的控制操作了。

越来越多的界面友好,富有人性化的设计开始出现在嵌入式设备上,如智能手机收发电子邮件、编写文档、车载GPS导航查询等等。

所有的这些都离不开人机交互,因而嵌入式设备的汉字输入法应运而生,足以满足人们对复杂信息的处理交换要求,而且更加直观易用。

二、设计思路对于市面上现有的嵌入式设备,其拼音输入法大多数是基于操作系统的,如智能手机等设备基于Windows或Linux操作系统,一般的手机也多基于简化Linux系统,即使是电子词典等设备也有其单独设计的简化操作系统。

基于操作系统下的输入法设计是比较简单的,因为许多底层函数接口都已经由操作系统提供给设计者了,只需要通过调用相应的函数就可以完成输入法的设计。

我们所完成的汉字拼音输入法是基于AVRAtmeg16单片机的,限于硬件的规格,其本身没有操作系统,也不太可能在其上扩展操作系统,所以在设计时是相对困难的,从最底层的LCD显示函数、键盘输入函数到拼音查找字模检索算法等都需要一一设计完成。

而据我们了解,在现行的不具备操作系统的嵌入式设备中,很少有已经完整并成功开发的汉字拼音输入法,但这些设备有时是需要人机交互的,汉字拼音输入法将使其易用性大大提高。

因此,我们的设计弥补了现有市场的一个空白,而其设计思路完全可以应用的其它任何不具备操作系统的简单的嵌入式设备中去,在较小的资源占用下就可以完成拼音输入法的设计,满足人们与简单设备的交互要求。

三、设计方法1,硬件设计A.微程序控制模块采用Atmel公司的Atmaga16单片机作为主控制器。

Atmaga16是一个低功耗,高性能的8位单片机,片内含16k空间的可反复擦写100,000次的Flash存储器,具有1Kbytes的随机存取数据存储器(RAM),32个IO口,2个8位可编程定时计数器,1个16位可编程定时计数器,四通道PWM,内置8路10位ADC,硬件SPI 和TWI,可编程看门狗电路,抗干扰能力强,可在电磁干扰环境下工作。

嵌入式Linux下中文字体显示

嵌入式Linux下中文字体显示

嵌入式Linux下中文字体显示1). 简介嵌入式平台默认发布的嵌入式Linux版本通常并不包含中文字体支持,本文就通过Tor ad ex计算机模块平台来演示如何添加中文字体的显示,因为Toradex的Linux发布是基于OpenEmbedded/Yocot 项目编译的,因此这里也同样通过OpenEmbedded/Yocot 项目编译带中文字体的定制化BSP。

2). 步骤a). 首先,需要配置好 OpenEmbedded 编译环境,具体步骤参考这里的说明。

b). 修改OpenEmbedded 目录中laye rs/meta-toradex-demos/recipes-images/images/angst rom-lxde-image.bb 文件---------------------------------------//增加中文语言IMAGE_LINGUAS = "en-us zh-cn"//增加中文字体FONT_CHINESE = "t tf-droid-sans ttf-droid-sans-fallb ac k ttf-droid-sans-mono ttf-droid-serif freetype"//将中文字体添加编译的镜像IMAGE_INSTALL += "gconfgnome-vfs…...alsa-states${IMAGE_BROWSER}${FONT_CHINESE}"---------------------------------------c). 重新编译镜像文件---------------------------------------bitbake angstrom-lxde-image---------------------------------------在开始编译之前,需要修改local.conf 文件,选择你所使用的开发板类型。

嵌入式系统中多国语言显示的一个解决方案

嵌入式系统中多国语言显示的一个解决方案
宕Cr } E en
K y o d :mb d s se c a a t r t r ro c aa t r d . NI e w r se e y tm, h r c e s so e o m,h r ce s mo e U CODE GB 31 , 2 2
对于P C来说 , 出字符是非常简单的 , 在一些嵌人式 系 输 但
统 的人 机 界 面 中 , 符 的实 时 输 出是 很 困 难 的 。 多 只 能 显示 事 字 大 先 已取 好 字 模 点 阵 的 字 库 ,但 是 每 个 1 x 6汉 字 点 阵 由 3 61 2个 字 节 表 示 , 于 需 要 灵活 使 用 大 量 汉 字 的场 合 , 储 量 太 大 , 对 存 实 现 起 来 浪 费空 间 ; 面基 于 对 汉 字 库 的结 构 进 行 分 析 , 计 一 种 下 设 实 用 的 字 库 及其 显 示 方 案 。
关 键 词 : 入 式 系统 , 库 , 模 , NC E G 2 1 嵌 字 字 U IOD B 3 2
Ab ta t sr c
N w d y h tr g n ipa f c a a t r n iee t ln u g h u e c n ie e n te r d c f e e o a a s t e so a e a d d s l o h r c e s i y df r n a g a e s o l b o s r d i h p o u t o mb d d d
1 符 编 码 简 介 11 U C E 编 码 . NIOD
件, 包括 字体 属 性 ( 、 )索 引 表 及 具 体 点 阵 信 息 。其 组 织 结 构 宽 高 、
可 以根 据 开 发 者 自己 编程 实 现 的需 要 而 定 。 文 件 准 备 好之 后 , 源

嵌入式系统中文输入法的设计

嵌入式系统中文输入法的设计

⽬前,以LCD和数字键盘实现的⼈机交互式界⾯在智能终端中⼴泛采⽤。

在不同的应⽤场合,对⼈机界⾯的要求也不同,⼀些情况下只要求简单参数的显⽰和选择,⽽在⼀些信息终端中,还要求⽂字的输⼊。

在使⽤⾼性能CPU和标准显⽰设备的情况下,实现友好的⼈机界⾯可采⽤商⽤嵌⼊式系统( 如Linux或WinCE)所⽀持的GUI程序。

但很多情况下,智能终端使⽤MCU,且其显⽰设备是⾮标准接⼝的⼩型LCD。

此时,必须找到占⽤较少资源的低成本实现⽅法。

笔者参加的智能终端项⽬就是⼀个⽐较典型的基于MCU的⼈机界⾯应⽤,使⽤128×64点阵式LCD模块,要求可显⽰Unicode编码的⼀、⼆级常⽤汉字库并可进⾏中⽂输⼊。

此应⽤中输⼊法相关的代码和数据占⽤约20kB。

在应⽤开发中,我们使⽤了实时操作系统µC/OS-II,相关内容可参考有关⽂献。

简单的中⽂拼⾳输⼊法 汉字输⼊法的实质是建⽴⼀种按键组合到汉字编码的映射关系,因此,使⽤数字键盘的嵌⼊式系统的输⼊法与使⽤标准键盘的PC机的输⼊法没有本质的不同,其区别主要在于嵌⼊式应⽤中处理器、存储器等资源⽐较有限。

如对应汉字“你”,拼⾳输⼊法下PC键盘按键组合为“ni”,⽽在⼀般数字键盘下,其按键组合则为“64”。

在多数⼿持式设备(如智能电话)中,以0~9数字键与⼏个简单的控制键实现汉字输⼊,⽐较的是在⼿机中⼴泛采⽤的T9 和iTap 输⼊法。

这⾥我们介绍⼀种简单的拼⾳输⼊法的实现⽅法。

⼀般终端键盘包括12个按键,分别是0~9数字键和“*”、“#”两个特殊键。

按通⽤规则,数字1对应空格,其功能基本等同于PC机中的空格键,⽤于输⼊空格或作为当前汉字的确认键;2~9数字键分别对应下述汉语拼⾳字母: 2:a b c 3:d e f 4:g h i 5:j k l 6:m n o 7:p q r s 8:t u v 9:w x y z ⽽“0”、“*”、“#”键则作为输⼊法中的控制键。

基于SCIM的嵌入式输入法设计与实现

基于SCIM的嵌入式输入法设计与实现

的 N N L S A D F A H。系统通过 bol drUb o 引导 内核启动 , ot ae —ot o
0 引 言
输入法是手持嵌入式设 备 的一 个重 要组成 部分 , 然而 在手 持设 备上的中文输入法屈指可数 , T g o muiao s 如 ei C m nctn 的 e i 输入法 、 t o Mo rl iA o a的 T P输入 法和 Eis n的字能输 入法 等 , r s co 它 们的输入 技术 相对滞后 ” , 而且 它们都 是 以第 三方 固件 的方 式发布 , 并不开 源 , 因此移 植性 不好 。在 目前 的 Lnx系统 中 , iu SI C M输 入法以其在结构 、 能 、 性 可扩展性上 的优 势成为 了 Ln x iu 操作系统 中主要的开源 中文 输入法 , 在图形 化 的界 面下 可 以提 供给用户很好 的使 用 习惯 , 在个 人 P C上 获得 了广泛 的应 用 。 鉴于 S I 的开源 、 移植 、 CM 易 易扩展 、 能强大 的特性 , 文提 出 功 本 基于 S I 的嵌入式输入法 的设计 和实现方法 。 CM
te d v l p n o r a e n te mir p o e s r¥ C 4 0 n h C t o c s r e . h ae tL n x 2 6 k r e sp r d a d te h e e o me t a d b s d o h c o rc s o 3 2 4 A a d t e L D wi tu h ce n T e lt s iu . e n li ot n h b h e Ma c b x d s t p s se i u e . s t e e p rme ti d c t s p r d a d o t z d S I i p tme h d u e e sr s u c ,t ssa l n f th o e k o y tm s s d A h x e i n n ia e , ot n p i e C M n u t o s sl s e o r e i i t be a d o e mi ge t au n p p lrs t n r a l e i o u aia i . v o Ke wo d y rs S I i p tmeh d Ma c b x d s t p s se C M n u t o th o e k o y tm ¥ 2 4 A L n x . 3 4 0 iu 2 6 C

基于VxWorks嵌入式系统的中文平台研究与实现

基于VxWorks嵌入式系统的中文平台研究与实现

基于 V Wo s x r 嵌入式系统的中文平台研究与实现 k
杨 远宾 , 刘 炯
( 中国航 天科 工 集 团第二研 究 院 76所 ,北 京 105) 0 084
摘 要: 绍 了Vx rs 介 Wok 嵌入 式操作 系统 的 中文 平 台的原 理 和组件 式 实现 方法 , 述 了点阵字体 , 概 矢量字 体的基 本知 识 、 设
计 方法和输 出过程 , 出 了中丈输入 法 的解 决方案和 中文 平 台在 V Wok 系统 中的位 置关 系, 得在 Vx rs 给 x rs 使 Wok 操作 系统 上可
以 自由的使 用 中文 。 关键 词 : x rs 点 阵字体 ; 矢量 字体 ; TuT p ; FeT p ; 中文输 入 法 V Wok; re y e re ye
o terse dv co n eito u e , n dt es lt no f h atra e tr o t r d c d a oui fChn s n ut g p st no Chn s lto W ok mb d e n f a n r h o ie eip tn , o i o f ie epafr i Vx rse e d d i i m n
维普资讯
第 2 卷 第 2 期 7 0
VO127 . N O. 0 2
计算 机 工程 与设 计
Co p tr gn eiga dDe in m u e En ie rn n sg
ቤተ መጻሕፍቲ ባይዱ
20 年 1 06 0月
O c.2 0 t 0 6
的 中 文 平 台 , 现 Wi O S 台 的风 格 。然 而 , Wok 系 统 体 n W 平 d Vx rs
备 驱动 。 主要包括 输 出模 式设 置 、 标准输 入输 出控制 、 点线面 作 图等函数 。V Wok x rs系统 的点阵汉字 实现是利用 Wi ML n d

嵌入式系统汉字输入的实现方法

嵌入式系统汉字输入的实现方法

嵌入式系统汉字输入的实现方法这段时间做了个项目,要求有汉字输入,即类似手机的键盘输入,研究了一段时间,终于实现了,不敢独吞,拿出来与大家共享,如果有哪位需要,可以借鉴一下,少走些弯路.我会讲些实现的过程,要不然只给出结果不利于对这个过程的消化理解.帖子比较长,由于是在家里宽带上网,为了怕出现提交不成功浪费感情的事情,我把它拆成小的片段发布,敬请谅解.闲话少叙,进入正题!1。

简单知识中文输入发我不多说,大家都用过,目前嵌入式系统中比较典型的中文输入法有诺基亚的T9 、摩托罗拉的 i T A P 、爱立信的字能等,这些输入法的输入设备一般是数字键0 ~ 9和一些功能键组成。

除了支持中文的拼音和笔画外还支持诸如日文、韩文等其他国家的语言。

中文输入法可分为拼音输入和笔画输入。

一般情况下拼音输入法相对笔画输入法,重码率要高,但简单易用,(再加个模式识别进行手写输入就更高级了,呵呵),我这里也是拼音输入,由于空间有效,不支持联想功能.2. 硬软件硬件用的NXP的2138,LCD是台湾雄铎科技的,240*160,软件用的zlg的模板,uc2.52版,按键布局与手机一样,如"2"键为abc,"3"为def,等等3.前期准备3.1网上有许多的资料,给出了键盘数字组合对应的拼音组合和汉字组合,我也利用这个,如{"2","a",(char *)PY_mb_a},{"24","ai",(char *)PY_mb_ai},{"26","an",(char *)PY_mb_an},{"26","ao",(char *)PY_mb_ao},{"22","ba",(char *)PY_mb_ba},{"24","bi",(char *)PY_mb_bi},const char PY_mb_a[] ={"阿啊"};const char PY_mb_ai[] ={"矮蔼艾爱隘碍霭"};但有个问题,这个网上流传的拼音-汉字组合中汉字非常少,对于输入是远远不够的,比如说"汶川"的汶就没有,而且没有多音字,例如"还"的拼音属于"huan",你打"还"就没有,这对于输入是不可以接收的,下面我讲一下我的解决方法.先上传一下之前提到的这个文件py_file.rar (11.02 KB)3.2寻找所有汉字的拼音,这个如果打开字典一个一个的输,恐怕没有一个月是干不成了,庆幸的是有人替我们做好了,在万能五笔输入法中有一个拼音记录文件,几乎包括了所有的汉字,拿来所用py_gb.rar (264.6 KB)这个文件中,有许多词组,是我们不需要的,需要剔掉,但手工的方式工作量太大,这里我们发挥计算机比较傻的优势来做这件事,用到一些VC的基本知识,相信大家都有这个能力CStdioFile read_file,read_new_file;CStdioFile write_file;CString my_str,temp_str,tf="";read_file.Open( "py_gb.txt", CFile::modeRead,NULL ) ;write_file.Open( "new_py_gb.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;while (read_file.ReadString(my_str)){int i = my_str.Find(" ");if ((my_str.GetLength() - i) > 3){/* 是词组 */continue;}else{/* 保存到文件 */write_file.WriteString(my_str);write_file.WriteString("\n");}}read_file.Close();write_file.Close();原理也非常简单,如果是词组,汉字的个数肯定大于1,在vc中,一个ASCII占一个字节,一个汉字占两个字节,整理后的文件如下new_py_gb.rar (65.71 KB)3.3在文件new_py_gb.txt中,列出了每个字的拼音,如a 啊a 阿a 呵a 吖a 嗄a 腌a 锕a 錒aes 厑ai 爱ai 矮ai 挨ai 哎ai 碍ai 癌ai 艾ai 唉ai 哀ai 蔼到这里又产生一个问题,必须将所有的同音汉字组合在一起,例如拼音为a的,应该这样a啊阿呵吖嗄腌锕錒vc程序如下:read_file.Open( "py_file.c", CFile::modeRead,NULL ) ;read_new_file.Open("new_py_gb.txt", CFile::modeRead,NULL);write_file.Open( "zhenli.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;while (read_file.ReadString(my_str)){int i = my_str.Find(",");int j = my_str.Find(",",i);temp_str = my_str.Mid(i + 2, j - 3);CString save_str = temp_str;while (read_new_file.ReadString(tf)){int ll = tf.Find(" ");if (tf.Left(ll) == temp_str){save_str += tf.Right(2);}}write_file.WriteString(save_str );write_file.WriteString("\n");read_new_file.SeekToBegin();}原理就是把所有拼音相同的字组合在一起,这个过程比较慢,需要耐心等待,不要以为程序死掉了,呵呵,生成的zhenli.txt文件如下:a啊阿呵吖嗄腌锕錒e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙亚亜亞伪佮侉偔偽僞僫匎匼卾吪呝咢咹哑唖啈啊啐啞噁囐囮垭埡堊堨堮妸妿姶娾娿媕屵岋峉峩崿庵廅悪惡戹搕搤搹擜曷枙椏櫮欸歞歹歺洝涐湂玀珴琧痷皒睋砈砐砨砵硆硪磀礘胺蒍蕚蘁蚅蝁覨訛詻誐諤譌讍豟軛軶輵迗遌遻邑鈋鋨鍔鑩閜閼阨阸隘頞頟額顎餓餩騀鬲魤魥鰐鰪鱷鴳鵈鵝鵞鶚齃齶齾…………zhenli.rar (51.9 KB)3.4又产生一个新问题,里面的字太多了,许多生僻的字连GB2312编码中都没有,这些字对于应用是没有用的,必须剔除,于是:找到GB2312编码的所有汉字啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥GB2312.rar (11.01 KB)为了方便,做进一步的整理,将一个段位的所有字放到一行中:啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳read_file.Open( "gb2312.txt", CFile::modeRead,NULL ) ;write_file.Open( "gb2312_new.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;int i = 0;while (read_file.ReadString(my_str)){if (my_str == ""){continue;}i++;tf += my_str;if (i == 6){write_file.WriteString(tf);write_file.WriteString("\n");i = 0;tf = "";}}gb2312_new.rar (471 Bytes)3.5对比GB2312中有的汉字,依次查找zhenli.txt中的每个汉字是否是有效的,在这里我做了个假设,如果一个拼音下的某个汉字不存在,z则其后的汉字也不存在,即e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙亚亜亞伪佮侉偔偽僞僫匎匼卾吪呝咢咹哑唖啈啊啐啞噁囐囮垭埡中,“亜”不存在,则其后的字都剔除,这样是合理的,以为即使某个字存在,他的拼音现在也不用了read_file.Open( "gb2312_new.txt", CFile::modeRead,NULL ) ;read_new_file.Open("zhenli.txt", CFile::modeRead,NULL);write_file.Open( "valid_chinese.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;CString gb2312_buffer="";while (read_file.ReadString(my_str)){gb2312_buffer+=my_str;}while (read_new_file.ReadString(my_str)){int i = 0;char * p_str = my_str.GetBuffer(0);CString used_in_str="";/* 去掉行首的拼音*/while (!(*p_str & 0x80)){p_str++;i++;}used_in_str = my_str.Left(i);temp_str = my_str.Right(my_str.GetLength()-i);for (i = 0;i < temp_str.GetLength();i++,i++){tf = temp_str.Mid(i,2);/* 在GB2312的文件中查找是否存在*/if (-1 == (gb2312_buffer.Find(tf))){/* 没发现此字,则认为后续的字都不存在*/write_file.WriteString(used_in_str);write_file.WriteString("\n");break;}used_in_str+=tf;}}生成的文件为a啊阿呵吖嗄腌锕e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙m呒n嗯o哦喔噢…………附件valid_chinese.rar (13.49 KB)2008-5-25 10:28, 下载次数: 843.6将valid_chines.txt中的格式向py_file.txt中的格式靠拢read_file.Open( "py_file.txt", CFile::modeReadWrite,NULL ) ;read_new_file.Open("valid_chinese.txt", CFile::modeRead,NULL);write_file.Open("new_py_file.txt", CFile::modeWrite | CFile::modeCreate,NULL);while (read_new_file.ReadString(my_str)){int i = 0;char * p_str = my_str.GetBuffer(0);CString used_in_str="";/* 去掉行首的拼音 */while (!(*p_str & 0x80)){p_str++;i++;}used_in_str = my_str.Right(my_str.GetLength() - i);/* 将第一个字去py_file.txt中寻找,找到后将本字符串替换到文件中 */tf = used_in_str.Left(2);CString ss;read_file.SeekToBegin();while (read_file.ReadString(ss)){if (ss.Find(tf) != -1){/* 找到第一个"位置 */CString new_ss = ss.Left(ss.Find("\"") + 1);new_ss += used_in_str;new_ss += "\"};\n";write_file.WriteString(new_ss);break;}}}但发现有一个新问题,依照上面的算法,如果多音字在行首,则会出现下面的问题:比如:在valid_chinese.txt中hai还海害咳氦孩骇咳骸亥嗨醢胲侅咍咴嗐嚡塰拸欬烸猲絯還郂酼閡阂頦颏餀饚駭駴liao了料撩聊撂疗廖燎辽僚寥镣潦钌蓼尥寮缭獠鹩嘹佬僇劳勞嫽尞尦屪嵺嶚嶛廫憀憭摎敹暸樛漻炓爎爒璙療瞭窷竂簝繚膋膫蟉蟟蟧豂賿蹘蹽轑遼鄝釕鏐鐐镠镽飂飉髎鷯chang长唱常场厂尝肠畅昌敞倡偿猖裳鲳氅菖惝嫦徜鬯阊怅伥昶苌娼仧倀倘僘償儻兏厰嘗嚐場塲尙尚廠悵晿暢棖椙淌淐焻玚琩瑒瑺瓺甞畼脹腸膓萇蟐裮誯鋹鋿錩鏛锠長镸閶闛韔鯧鱨鲿鼚而在py_file.txt中const char PY_mb_huan[] ={"欢还环桓缓幻宦唤换涣患焕痪豢"};这样就可能将huan变为hai,幸亏这样的情况只有以上三个,所以手工调整一下即可还有一个特例就是“揣”的拼音需要特殊考虑,得到的文件如下:new_py_file.rar (13.9 KB)最后,就是再整理了,/* 按照数字的顺序重新排列数据 */read_new_file.Open("final-1.txt", CFile::modeRead,NULL);write_file.Open("final-2.txt", CFile::modeWrite | CFile::modeCreate,NULL); CString str2="",str3="",str4="",str5="",str6="",str7="",str8="",str9="";while (read_new_file.ReadString(my_str)){char * left_char = my_str.GetBuffer(0);left_char += 2;my_str += "\n";switch(*left_char){case '2':str2 += my_str;break;case '3':str3 += my_str;break;case '4':str4 += my_str;break;case '5':str5 += my_str;break;case '6':str6 += my_str;break;case '7':str7 += my_str;break;case '8':str8 += my_str;break;case '9':str9 += my_str;break;default:break;}}write_file.WriteString(str2);write_file.WriteString(str3);write_file.WriteString(str4);write_file.WriteString(str5);write_file.WriteString(str6);write_file.WriteString(str7);write_file.WriteString(str8);write_file.WriteString(str9);目的是将拼音按数字顺序重新排列,以加快搜索速度{"2","a",(char *)PY_mb_a},{"2","b",(char *)PY_mb_bu},{"2","c",(char *)PY_mb_ca},{"24","ai",(char *)PY_mb_ai},{"26","an",(char *)PY_mb_an},{"26","ao",(char *)PY_mb_ao},{"22","ba",(char *)PY_mb_ba},{"24","bi",(char *)PY_mb_bi},{"26","bo",(char *)PY_mb_bo},{"28","bu",(char *)PY_mb_bu},{"22","ca",(char *)PY_mb_ca},{"23","ce",(char *)PY_mb_ce},{"24","ci",(char *)PY_mb_ci},{"28","cu",(char *)PY_mb_cu},{"264","ang",(char *)PY_mb_ang},{"224","bai",(char *)PY_mb_bai},{ final-1.rar (2.28 KB)final-2.rar (2.44 KB)最后,就是按照输入的数字顺序,遍历数组,得到相应的拼音和汉字串,我就不多啰嗦了,明天到单位,我把真实的终端拍个照片发上来给大家看一下。

嵌入式GUI方案比较

嵌入式GUI方案比较

嵌入式GUI 方案比较一.嵌入式GUI 概况概况随着嵌入式系统的广泛应用,PDA 、机顶盒、DVD/VCD 播放机及WAP 手机已经迅速普及。

图形用户界面(GUI )的广泛流行,是当今计算机技术的重大成就之一。

嵌入式GUI 为嵌入式系统提供了一种应用于特殊场合的人机交互接口。

它极大地方便了非专业用户的使用,因此实时嵌入式系统对GUI 的需求越来越明显,而这一切均要求有一个高性能、高可靠的GUI 的支持。

的支持。

综上所述,GUI 在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对 GUI 的基本要求包括:的基本要求包括:1.轻型、占用资源少。

.轻型、占用资源少。

2.高性能。

.高性能。

3.高可靠性。

.高可靠性。

4.可配置。

.可配置。

二.目前,主流的嵌入式Linux 系统的GUI 解决方案有:解决方案有:1. MicroWindows MicroWindows 是一个著名的开放源码的嵌入式GUI 软件。

MicroWindows提供了现代图形窗口系统的一些特性。

MicroWindows MicroWindows APIAPI 接口支持类Win32 API ,接口试图和Win32完全兼容。

它还实现了一些Win32用户模块功能。

MicroWindows 采用分层设计方法,以便不同的层面能够在需要的时候改写,基本上用本上用 C 语言实现。

MicroWindows 能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示设备进行直接操作。

这样,MicroWindows 就显得十分小巧,便于移植到各种硬件和软件系统上。

MicroWindows 已经支持已经支持 Intel 16位和32位CPU 、MIPS R4000 以及以及 ARM 芯片;但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还很不完备,比如控件或构件的实现还很不完备,比如控件或构件的实现还很不完备,键键盘和鼠标等的驱动还很不完善。

嵌入式Linux系统下的汉字处理和显示

嵌入式Linux系统下的汉字处理和显示

嵌入式Linux系统下的汉字处理和显示嵌入式Linux系统下的汉字处理和显示本文阐述在嵌入式Linux环境下通过汉字编码的转换,汉字字体的提取,实现对汉字的处理和显示。

所提出的解决方案,在嵌入式Linux环境下,可以不依赖于MicroWindows、MiniGUI等嵌入式图形界面接口软件实现汉字的处理与显示。

1 汉字编码的处理由于传统的计算机字符内码ASCII码最多只能包含256个字符,只能包含英文字符和其他常用字符,而不能包含其它语言的字符,尤其是汉字。

因此不同的组织机构又制定了包含汉字的字符编码标准。

GB编码是由我国政府颁布的国家标准,经过不断扩充,形成了GB2312、GB13000(GBK)、GB18030标准;BIG-5码是主要由使用繁体字的地区采用的标准;Unicode编码是由Unicode协会为包含汉字在内的各种语种字符制定的统一字符集标准,同时兼容于国际标准ISO 10646,但是不兼容GB编码。

Unicode编码又有UTF8等实现形式,一般Unicode指UCS-2规范。

在嵌入式Linux系统下使用的汉字,其来源大致可以分为:1.程序字符串常量中的汉字;2.文本文件或其它资源文件。

因为各种源文件编辑器、文本文件编辑器或资源文件来源的不同、网络环境的不同。

因此嵌入式Linux系统下使用的汉字也体现为各种不同的编码格式,需要进行编码格式的转换,才能够对汉字进行正确的处理。

嵌入式Linux系统应用开发所使用的程序源文件和文本文件,一般是来自于Windows操作系统下的编辑工具,或Linux桌面操作系统下的编辑工具。

Windows操作系统下的常用文本编辑器,如Notepad、UltraEdit等,缺省的文件编码保存格式是ASCII码,其中的汉字以GB编码保存。

Linux XWindow下的图形界面文件编辑器gEdit,也以ASCII码作为缺省的文本保存编码,其中的汉字以UTF-8编码保存。

嵌入式系统汉字输入

嵌入式系统汉字输入

/bbs/viewthread.php?tid=8868&extra=page%3D21.简单知识中文输入发我不多说,大家都用过,目前嵌入式系统中比较典型的中文输入法有诺基亚的T9 、摩托罗拉的 i T A P 、爱立信的字能等,这些输入法的输入设备一般是数字键0 ~ 9和一些功能键组成。

除了支持中文的拼音和笔画外还支持诸如日文、韩文等其他国家的语言。

中文输入法可分为拼音输入和笔画输入。

一般情况下拼音输入法相对笔画输入法,重码率要高,但简单易用,(再加个模式识别进行手写输入就更高级了,呵呵),我这里也是拼音输入,由于空间有效,不支持联想功能.2. 硬软件硬件用的NXP的2138,LCD是台湾雄铎科技的,240*160,软件用的zlg的模板,uc2.52版,按键布局与手机一样,如"2"键为abc,"3"为def,等等3.前期准备3.1网上有许多的资料,给出了键盘数字组合对应的拼音组合和汉字组合,我也利用这个,如{"2","a",(char *)PY_mb_a},{"24","ai",(char *)PY_mb_ai},{"26","an",(char *)PY_mb_an},{"26","ao",(char *)PY_mb_ao},{"22","ba",(char *)PY_mb_ba},{"24","bi",(char *)PY_mb_bi},const char PY_mb_a[] ={"阿啊"};const char PY_mb_ai[] ={"矮蔼艾爱隘碍霭"};但有个问题,这个网上流传的拼音-汉字组合中汉字非常少,对于输入是远远不够的,比如说"汶川"的汶就没有,而且没有多音字,例如"还"的拼音属于"huan",你打"还"就没有,这对于输入是不可以接收的,下面我讲一下我的解决方法.3.2寻找所有汉字的拼音,这个如果打开字典一个一个的输,恐怕没有一个月是干不成了,庆幸的是有人替我们做好了,在万能五笔输入法中有一个拼音记录文件,几乎包括了所有的汉字,拿来所用py_gb.rar (264.6 KB)这个文件中,有许多词组,是我们不需要的,需要剔掉,但手工的方式工作量太大,这里我们发挥计算机比较傻的优势来做这件事,用到一些VC的基本知识,相信大家都有这个能力CStdioFile read_file,read_new_file;CStdioFile write_file;CString my_str,temp_str,tf="";read_file.Open( "py_gb.txt", CFile::modeRead,NULL ) ;write_file.Open( "new_py_gb.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;while (read_file.ReadString(my_str)){int i = my_str.Find(" ");if ((my_str.GetLength() - i) > 3){/* 是词组 */continue;}else{/* 保存到文件 */write_file.WriteString(my_str);write_file.WriteString("\n");}}read_file.Close();write_file.Close();原理也非常简单,如果是词组,汉字的个数肯定大于1,在vc中,一个ASCII占一个字节,一个汉字占两个字节,整理后的文件如下new_py_gb.rar (65.71 KB)3.3在文件new_py_gb.txt中,列出了每个字的拼音,如a 啊a 阿a 呵a 吖a 嗄a 腌a 锕a 錒aes 厑ai 爱ai 矮ai 挨ai 哎ai 碍ai 癌ai 艾ai 唉ai 哀ai 蔼到这里又产生一个问题,必须将所有的同音汉字组合在一起,例如拼音为a的,应该这样a啊阿呵吖嗄腌锕錒vc程序如下:read_file.Open( "py_file.c", CFile::modeRead,NULL ) ;read_new_file.Open("new_py_gb.txt", CFile::modeRead,NULL);write_file.Open( "zhenli.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;while (read_file.ReadString(my_str)){int i = my_str.Find(",");int j = my_str.Find(",",i);temp_str = my_str.Mid(i + 2, j - 3);CString save_str = temp_str;while (read_new_file.ReadString(tf)){int ll = tf.Find(" ");if (tf.Left(ll) == temp_str){save_str += tf.Right(2);}}write_file.WriteString(save_str );write_file.WriteString("\n");read_new_file.SeekToBegin();}原理就是把所有拼音相同的字组合在一起,这个过程比较慢,需要耐心等待,不要以为程序死掉了,呵呵,生成的zhenli.txt文件如下:a啊阿呵吖嗄腌锕錒e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙亚亜亞伪佮侉偔偽僞僫匎匼卾吪呝咢咹哑唖啈啊啐啞噁囐囮垭埡堊堨堮妸妿姶娾娿媕屵岋峉峩崿庵廅悪惡戹搕搤搹擜曷枙椏櫮欸歞歹歺洝涐湂玀珴琧痷皒睋砈砐砨砵硆硪磀礘胺蒍蕚蘁蚅蝁覨訛詻誐諤譌讍豟軛軶輵迗遌遻邑鈋鋨鍔鑩閜閼阨阸隘頞頟額顎餓餩騀鬲魤魥鰐鰪鱷鴳鵈鵝鵞鶚齃齶齾…………3.4又产生一个新问题,里面的字太多了,许多生僻的字连GB2312编码中都没有,这些字对于应用是没有用的,必须剔除,于是:找到GB2312编码的所有汉字啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥GB2312.rar (11.01 KB)为了方便,做进一步的整理,将一个段位的所有字放到一行中:啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳read_file.Open( "gb2312.txt", CFile::modeRead,NULL ) ;write_file.Open( "gb2312_new.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;int i = 0;while (read_file.ReadString(my_str)){if (my_str == ""){continue;}i++;tf += my_str;if (i == 6){write_file.WriteString(tf);write_file.WriteString("\n");i = 0;tf = "";}}gb2312_new.rar (471 Bytes)3.5对比GB2312中有的汉字,依次查找zhenli.txt中的每个汉字是否是有效的,在这里我做了个假设,如果一个拼音下的某个汉字不存在,z则其后的汉字也不存在,即e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙亚亜亞伪佮侉偔偽僞僫匎匼卾吪呝咢咹哑唖啈啊啐啞噁囐囮垭埡中,“亜”不存在,则其后的字都剔除,这样是合理的,以为即使某个字存在,他的拼音现在也不用了read_file.Open( "gb2312_new.txt", CFile::modeRead,NULL ) ;read_new_file.Open("zhenli.txt", CFile::modeRead,NULL);write_file.Open( "valid_chinese.txt", CFile::modeCreate | CFile::modeWrite,NULL ) ;CString gb2312_buffer="";while (read_file.ReadString(my_str)){gb2312_buffer+=my_str;}while (read_new_file.ReadString(my_str)){int i = 0;char * p_str = my_str.GetBuffer(0);CString used_in_str="";/* 去掉行首的拼音*/while (!(*p_str & 0x80)){p_str++;i++;}used_in_str = my_str.Left(i);temp_str = my_str.Right(my_str.GetLength()-i); for (i = 0;i < temp_str.GetLength();i++,i++){tf = temp_str.Mid(i,2);/* 在GB2312的文件中查找是否存在*/ if (-1 == (gb2312_buffer.Find(tf))){/* 没发现此字,则认为后续的字都不存在*/ write_file.WriteString(used_in_str);write_file.WriteString("\n");break;}used_in_str+=tf;}}生成的文件为a啊阿呵吖嗄腌锕e饿哦额鹅蛾扼俄讹阿遏峨娥恶厄鄂锇谔垩锷阏萼苊轭婀莪鳄颚腭愕呃噩鹗屙m呒n嗯o哦喔噢…………附件valid_chinese.rar(13.49 KB)2008-5-25 10:28, 下载次数: 833.6将valid_chines.txt中的格式向py_file.txt中的格式靠拢read_file.Open( "py_file.txt", CFile::modeReadWrite,NULL ) ;read_new_file.Open("valid_chinese.txt", CFile::modeRead,NULL);write_file.Open("new_py_file.txt", CFile::modeWrite | CFile::modeCreate,NULL);while (read_new_file.ReadString(my_str)){int i = 0;char * p_str = my_str.GetBuffer(0);CString used_in_str="";/* 去掉行首的拼音 */while (!(*p_str & 0x80)){p_str++;i++;}used_in_str = my_str.Right(my_str.GetLength() - i);/* 将第一个字去py_file.txt中寻找,找到后将本字符串替换到文件中 */tf = used_in_str.Left(2);CString ss;read_file.SeekToBegin();while (read_file.ReadString(ss)){if (ss.Find(tf) != -1){/* 找到第一个"位置 */CString new_ss = ss.Left(ss.Find("\"") + 1);new_ss += used_in_str;new_ss += "\"};\n";write_file.WriteString(new_ss);break;}}}但发现有一个新问题,依照上面的算法,如果多音字在行首,则会出现下面的问题:比如:在valid_chinese.txt中hai还海害咳氦孩骇咳骸亥嗨醢胲侅咍咴嗐嚡塰拸欬烸猲絯還郂酼閡阂頦颏餀饚駭駴liao了料撩聊撂疗廖燎辽僚寥镣潦钌蓼尥寮缭獠鹩嘹佬僇劳勞嫽尞尦屪嵺嶚嶛廫憀憭摎敹暸樛漻炓爎爒璙療瞭窷竂簝繚膋膫蟉蟟蟧豂賿蹘蹽轑遼鄝釕鏐鐐镠镽飂飉髎鷯chang长唱常场厂尝肠畅昌敞倡偿猖裳鲳氅菖惝嫦徜鬯阊怅伥昶苌娼仧倀倘僘償儻兏厰嘗嚐場塲尙尚廠悵晿暢棖椙淌淐焻玚琩瑒瑺瓺甞畼脹腸膓萇蟐裮誯鋹鋿錩鏛锠長镸閶闛韔鯧鱨鲿鼚而在py_file.txt中const char PY_mb_huan[] ={"欢还环桓缓幻宦唤换涣患焕痪豢"};这样就可能将huan变为hai,幸亏这样的情况只有以上三个,所以手工调整一下即可还有一个特例就是“揣”的拼音需要特殊考虑,得到的文件如下:new_py_file.rar (13.9 KB)最后,就是再整理了,/* 按照数字的顺序重新排列数据 */read_new_file.Open("final-1.txt", CFile::modeRead,NULL);write_file.Open("final-2.txt", CFile::modeWrite | CFile::modeCreate,NULL);CString str2="",str3="",str4="",str5="",str6="",str7="",str8="",str9="";while (read_new_file.ReadString(my_str)){char * left_char = my_str.GetBuffer(0);left_char += 2;my_str += "\n";switch(*left_char){case '2':str2 += my_str;break;case '3':str3 += my_str;break;case '4':str4 += my_str;break;case '5':str5 += my_str;break;case '6':str6 += my_str;break;case '7':str7 += my_str;break;case '8':str8 += my_str;break;case '9':str9 += my_str;break;default:break;}}write_file.WriteString(str2); write_file.WriteString(str3); write_file.WriteString(str4); write_file.WriteString(str5);write_file.WriteString(str6);write_file.WriteString(str7);write_file.WriteString(str8);write_file.WriteString(str9);目的是将拼音按数字顺序重新排列,以加快搜索速度{"2","a",(char *)PY_mb_a},{"2","b",(char *)PY_mb_bu},{"2","c",(char *)PY_mb_ca},{"24","ai",(char *)PY_mb_ai},{"26","an",(char *)PY_mb_an},{"26","ao",(char *)PY_mb_ao},{"22","ba",(char *)PY_mb_ba},{"24","bi",(char *)PY_mb_bi},{"26","bo",(char *)PY_mb_bo},{"28","bu",(char *)PY_mb_bu},{"22","ca",(char *)PY_mb_ca},{"23","ce",(char *)PY_mb_ce},{"24","ci",(char *)PY_mb_ci},{"28","cu",(char *)PY_mb_cu},{"264","ang",(char *)PY_mb_ang},{"224","bai",(char *)PY_mb_bai},{ final-1.rar (2.28 KB)final-2.rar (2.44 KB)最后,就是按照输入的数字顺序,遍历数组,得到相应的拼音和汉字串,我就不多啰嗦了,明天到单位,我把真实的终端拍个照片发上来给大家看一下。

基于Qtopia的嵌入式智能拼音输入法设计

基于Qtopia的嵌入式智能拼音输入法设计

基于Qtopia的嵌入式智能拼音输入法设计
徐英慧
【期刊名称】《微计算机信息》
【年(卷),期】2008(24)30
【摘要】中文输入法已经成为用户选择嵌入式产品时考虑的一项重要因素.本文介绍了在UP-NETARM2410-S嵌入式开发平台上设计并实现基于Qtopia的智能拼音输入法的方法.详细介绍了输入法窗口的设计、汉字的检索以及输入法的移植过程.该输入法使用软键盘操作,具有联想功能,为嵌入式设备提供了更好的中文输入支持.
【总页数】3页(P276-278)
【作者】徐英慧
【作者单位】100085,北京机械工业学院,北京市海淀区清河小营东路12号
【正文语种】中文
【中图分类】TP391
【相关文献】
1.基于Qtopia的嵌入式中文输入法设计 [J], 廖耿耿;张建寰
2.基于Qtopia Core的软键盘嵌入式拼音输入法 [J], 柯利达;吕杨
3.基于Qtopia4的嵌入式阿拉伯文智能学习输入法的实现 [J], 赵志成;吾守尔·斯拉木;达瓦·伊德木草
4.基于嵌入式Linux和Qtopia平台维文输入法的实现 [J], 王云琴; 袁保社
5.基于嵌入式Linux和Qtopia平台维文输入法的实现 [J], 王云琴;袁保社
因版权原因,仅展示原文概要,查看原文内容请购买。

(精华资料)嵌入式中文拼音输入法的设计

(精华资料)嵌入式中文拼音输入法的设计

北方民族大学学士学位论文论文题目: 嵌入式中文拼音输入法的设计院部名称:计算机科学与工程学院学生姓名:专业: 20072361指导教师姓名:论文提交时间:论文答辩时间:学位授予时间: 北方民族大学院教务处制嵌入式中文拼音输入法的设计嵌入式中文拼音输入法的设计摘要计算机技术发展到今天,嵌入式系统在各行各业的应用越来越广泛,可以说嵌入式计算机的应用在数量上远远超过了各种通用计算机。

嵌入式系统是继IT网络技术之后,又一个新的技术发展方向。

由于嵌入式具有体积小、性能强、功耗低、可靠性高以及面向行业应用的突出特征,目前已经广泛的应用于军事国防、消费电子、网络通讯、工业控制等各个领域。

随着计算机技术和通信技术的发展,嵌入式系统的研究与开发也有着越来越重要的实际意义。

嵌入式系统的开发以成为新的行业热点。

将嵌入式应用至工业控制类产品中,并开发出优秀的人机交互界面,是嵌入式发展的趋势,拥有广阔的市场前景。

近年来的市场需求显示越来越多的嵌入式系统包括PDA 机顶盒/DVD/VCD/播放机WAP 手机均要求提供一个方便简洁的可视化操作界面,而这些都要求有一个高性能稳定可靠的图形用户界面来提供支持。

国内用户对支持中文输入法的轻量级GUI 的需求也日益迫切。

本文首先概述了嵌入式系统概念、组成及用户界面的发展情况,接着指出嵌入式系统下的图形用户界面具有轻型、占用资源少、高性能、高可靠性、可配置等特点。

其次详细阐述了技术上涉及到的问题:选择合适的图形用户界面开发软件平台,并且进行环境搭建;利用QT 中的库函数设计开发了一个带有软键盘的中文输入法。

关键词:中文输入法,软键盘,嵌入式Linux,Qt 嵌入式中文拼音输入法的设计Embedded Chinese Input Method ABSTRACT With the rapid development of computer technology embedded system ismore and more widely used.By now embedded computer system is much more thancommon computer in quantity. Embedded system is a new direction of technologydevelopment after IT network technology. With the prominent advantages of smallvolume powerful performance low power dissipation high reliability and specialpurpose embedded system is widely used in fields of national defense consumeelectronic network communication industry control and so on. With the developmentof computer and communication technology research and development of embeddedsystem are more and more useful. The development of embedded system has become a new hotspot in thebusiness. Applying embedded system in industrial production of control class anddeveloping outstanding human-computer interaction are the development trends offlush type and these will have wide market prospect In recent years market demandshows that more and more embedded system such as PDA STB DVD/VCD playersWAP mobile phone and so on require to be supported by a convenient and visualcontrolling interface or a functional Web explore. And all of these need to besupported by a stable and credible GUI with high performance. First the thesis outlines the history of embedded system and user interfaceand then the paper compares several GUI technologies under embedded systempointing out the difference of GUI on embedded systems that is lightness lessresource requirement quicker response high reliability and easy configuration.Second this paper mainly involves several technical aspects and those are selectingappropriate geometric user interface for software developing platform. Finallythrough these techniques of QT the paper designed and developed contacts with a softkeyboard module. II 嵌入式中文拼音输入法的设计Key words:Chinese input method Soft-Keyboard QT Embedded Linux 目录1 绪论............................................................ 5 1.2 课题的目的与意义..............................................2 1.3 国内外研究现状与发展动态......................................2 1.4 可行性分析....................................................3 1.5 主要工作......................................................32 嵌入式系统综述.................................................. 3 2.1 嵌入式的发展历史..............................................3 2.2 嵌入式实时操作系统概况........................................5 2.3 嵌入式系统发展的趋势 (63)嵌入式LINUX 平台开发的理论基础.................................. 7 3.1 嵌入式LINUX 概述...............................................7 3.2 嵌入式LINUX 的特点.............................................8 3.3 LINUX 嵌入式系统开发平台.......................................9 3.4 嵌入式LINUX 的发展及应.........................................94 嵌入式使用的数据库 (105)嵌入式图形系统................................................. 11 5.1 GUI 在嵌入式LINUX 系统中的地位................................11 5.2 嵌入式系统GUI 的实现方法.....................................126 QT/E 开发境的构建.............................................. 13 6.1 安装集成开发环境.............................................13 6.2 编译X86 平台QT/E 库..........................................13 6.3 编译ARM 平台QT/E 库..........................................14 6.4 配置QTCREATOR 环境.............................................15 6.4 下载ARM 平台库至目标板.......................................167 中文输入法的原理................................................ 17 6.1 拼音输入法处理流程图.........................................17 7.2 拼音输入法原理详述...........................................188 中文输入法的界面设计............................................19 8.1 软键盘窗口的设计.............................................19 8.2 软键盘窗口界面...............................................21 8.3 输入法初始界面...............................................21 III 嵌入式中文拼音输入法的设计9 输入法字库设计................................................. 22 9.1 数据库的设计.................................................22 9.2 添加汉字.....................................................2310 中文输入法实现................................................. 23 10.1 软键盘内部实现..............................................23 10.2 事件处理与汉字匹配..........................................24 10.3 显示汉字....................................................25 10.3 运行效果....................................................26结论........................................................... 28致谢........................................................... 29 参考文献..................................................... 30 IV 嵌入式中文拼音输入法的设计1 绪论目前,3G 技术盛行,嵌入式系统的性能有了大弧度提高,应用领域也越来以越广泛,LCD 和数字键盘实现的人机交互式界面在智能终端中广泛采用。

嵌入式系统下按键操作的软件设计方法

嵌入式系统下按键操作的软件设计方法

嵌入式系统下按键操作的软件设计方法嵌入式系统键盘软件设计存在3方面问题:软件去抖动、等待按键抬起和连击处理。

1嵌入式系统键盘软件设计的3个问题1.1软件去抖动问题一次完整按键过程的时序波形如图1所示。

当按键未被按下时,单片机端口输入为通过上拉电阻获得的高电平;按下时,端口接至地,端口输入为低电平。

当机械触点断开、闭合时会有抖动,这种抖动对人来说是感觉不到的,但对计算机来说,则是完全可以感应到的。

计算机处理的速度是us级,而机械抖动的时间至少是ms级,对计算机而言,这已是漫长的时间了。

为使单片机能正确地读出端口的状态,对每一次按键只作一次响应,这就必须考虑如何去除抖动的问题。

嵌入式系统一般采用软件延时去除抖动。

软件延时去除抖动其实很简单,就是在单片机获得端口有按键动作时,不是立即认定按键开关已被按下,而是延时10 ms 或更长一段时间后再次检测端口,如果仍为动作电平,则说明按键开关的确按下了,这实际上是避开了按键按下时的抖动时间;而在检测到按键释放后(端口为高)再延时5~10 ms,消除后沿的抖动,然后再对键值处理。

当然,实际应用中对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是软件延时去除抖动的基本原则。

1.2等待按键抬起问题单片机在查询读取按键时,不断地扫描键盘,扫描到有键按下后,进行键值处理。

它并不等待键盘释放再退出键盘程序,而是直接退出键盘程序,返回主程序继续工作。

计算机系统执行速度快,很快又一次执行到键盘程序,并再次检测到键还处于按下的状态,单片机还会去执行键值处理程序。

这样周而复始,按一次按键系统会执行相应处理程序很多次。

而程序员的意图一般是只执行一次,这就是等待按键抬起问题。

通常的解决办法是,当按键抬起后再次按下才再次执行相应的处理程序,等待时间一般在几百ms以上。

通常在软件编程中,当执行完相应处理程序后,要加一个非常大的延时函数,再向下执行。

对于软件去抖动问题和等待按键抬起问题,若采用软件延时,会大大削弱系统的实时性;若采用中断方式延时,会占用定时器,耗费了系统资源,且软件的多任务编程会增大软件设计的复杂度。

基于PLC的触摸屏中文拼音输入法设计

基于PLC的触摸屏中文拼音输入法设计

基于PLC的触摸屏中文拼音输入法设计韩国华;耿守本;李风波;马红旗【摘要】针对一些触摸屏没有中文输入功能,难以实现中文信息输入的缺点,提出了一种在原有PLC控制系统基础上,添加中文输入功能的方法;阐述了中文拼音输入法的设计思路、汉字字库的建立以及检索算法.该设计在不增加其他硬件资源的基础上实现了中文输入功能,提高了系统人机交互界面的友好性,具有一定的实用价值.【期刊名称】《工业仪表与自动化装置》【年(卷),期】2010(000)003【总页数】4页(P82-85)【关键词】PLC;触摸屏;拼音输入法;Unicode【作者】韩国华;耿守本;李风波;马红旗【作者单位】中国电子科技集团公司,第41研究所,安徽,蚌埠,233000;中国电子科技集团公司,第41研究所,安徽,蚌埠,233000;中国电子科技集团公司,第41研究所,安徽,蚌埠,233000;中国电子科技集团公司,第41研究所,安徽,蚌埠,233000【正文语种】中文【中图分类】TP311.110 引言随着工业自动化的发展,基于 PLC的自动化系统和设备越来越普及,几乎遍布所有的自动化领域,与之相应的人 -机交互系统也应运而生,并得到同步发展。

在巨大市场需求的驱动下,对各类工业产品的人机交互界面的要求也越来越高。

触摸屏的组态软件一般带有软键盘,可以输入字母、数字等符号,而在需要录入汉字信息时具有一定的困难。

目前一些国产触摸屏本身具有中文输入控件,在作图软件画面上直接放置中文输入控件即可实现汉字的录入。

而一些进口的触摸屏(如 KEYENCE公司 VT 系列触摸屏、三菱公司 GT系列触摸屏等)没有中文输入控件,不能在屏上输入汉字,只能显示汉字。

该研究以 KEYENCE公司的 KV-1000型 PLC与 VT3-S10型触摸屏为例,实现中文输入功能,通过 PLC建立中文字库,通过触摸屏的软键盘输入拼音可以很好地解决这些问题。

1 设计思路在以往的中文输入法的设计中,设计者往往是选用大容量的存储器如 EEPROM、F1ash等,在其中装入汉字的区位码表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)笔画汉字编码表。根据不同笔画组 合匹配出所有可能的汉字编码.匹配列表 输出时需要考虑到汉字排列的优先级。
(5)联想词组编码表。该编码表提供所 有常用汉字词组的编码组合列表,另外还 要提供声母组合和前2个笔划组合这两种 索引方法.以方便快速检索词组。
(6)汉字优先级编码表。对常用的I 500 个左右的汉字根据使用频率由高到低进行 排列,构造相应的编码表,方便匹配汉字时 根据此编码表依次取字。
(2)根据拼音组合获取汉字功能- 该编码表由拼音编码(这里拼音编码 与前面的拼音编码是一致的,只是以16进 制表示而已)、拼音.汉字列表(按字拼排 列),示例如下t 拼音编码拼音键码汉字列表 ox0040 ba 22把.八,吧,爸,拔。 罢.跋。巴。……
洼:设计时要将s和sh等发音容错考虑
进去。
(3)根据输入数字键获取部首功能·
的算法提供数据支持,把输入法算法引擎 部分Eu和数据部分DU分开也是为了便于 输入法在具有不同存储结构和操作系统的 平台上移植。Du部分根据现有引擎的要求 可大致分为拼音组合分类表、拼以说明:
(I)拼音组合分类表。该分类表主要根 据数字键2,3。4,5,6,7,8,9的不同组合匹配 出所有可能的拼音组合列表,如数字键组 合2,3.-f以匹配出ce,ben.bei,ceng等拼音.
词组中的所有字前1个(或2个)笔画+最后 一个字全笔画,以数字。或长按笔画键间隔.数 字0或长按笔画输入后就开始出现词组t
3)拼笔和笔划词组编码表 词组编码表是快速、正确获取相应词 组的关键。该编码表的结构由词组编号,词 组汉字列表、拼笔词组元素表,笔画词组元 素表、词频(0~255)构成,示例如下: 编号词组列表拼笔元素表笔画 元素表词频 0x01 A0一气呵成9742013554
说明:l、2、3、4、5分别代表横竖擞点 折,实际设计时可将最后一个字的笔画单 独列出来给拼笔字组和笔画词组共用。以 节约空间.
4 UI部分设计 UI部分第一版本的设计基于smart
phone平台上实现,编程语言确定为EVC4. 0。输入法类型以长按·键切换ll,2,3,4,5 键分别对应笔画横竖撇点折-2、3、4、5、6、 7.8、9S1分别对应英文字母(或拼音)abc。 clef。ghi,jⅪ。mno.pqrs.tuv,wxyz。
分别为UI、EU和DU,其中UI单元是和用户 界面交互的部分,可以根据不同手机平台 进行相关界面参数调整和移植;EU和DU部 分为正确获得输入法相关数据提供了底层 数据和函数接口方面的支持,EU作为输入 法的核心单元一般需要封装为Lib库。这样 可以保护知识产权。
2 DU部分设计 DU部分主要是为输入法引擎EU部分
(1)根据输入数字键获取拼音组合功能· 该功能主要依据DU部分的第一张表 来实现.以下给出拼音组合种类及对应键 码组台的示例,比如输人24健的时候就会 输出ai,bi.bin等拼音组合。
a,ao,
2。26。
为了节约空间,对上述拼音组合按双 字节数进行编码,即16bit,前12个为拼音编 码,13~14bit为音调,最后2个bit为系统保 留且默认为OO.
集》.中华人民共和国国家标准总局 1981年5月
86
科技创新导报Science and Technology Innovation Herald
万方数据
堡婴鲨竺坐业::业::竺 工程技术 嵌入式中文输入法解决方案
黄德强 丁伟 (解放军理工大学理学院电子信息基础教研宣 江苏南京 2'”0”
擒要:当前主流的嵌入式中文督八法一麓耒用盼是嗣外的并凌方案.如eZI.T9、iTap乎,■产簟八汝目酋置蒜乞有|I多种,但由于
用户使用习惯和技术不成南f屎因.很少有真正移植到手机上的,本文蛤出7一种中文簟八法杆决方童.井已^功特其移植纠一苁t
3 EU部分设计 EU部分是实现输入法各种功能的核
心,是根据用户输入的键值和参数,查找 DU部分的备类码表,然后获取相应查询结 果提供给UI层进行处理.为了方便以后在 不同的嵌入式平台上移植,拟采用c语言实
现其全部算法。为了减少UI编程对引擎功 能的调用复杂度,该部分对外只提供一个 算法接口,该接口既可以实现智能英文输 入·也可以实现双字节字符输入。内部调用 的各类算法接口对UI层屏蔽,实现方莹和 具体编程有关,不在这里具体描述。可以将 EU部分划分为以下功能模块:
镌手机上。但由于时阿仓促.还有掘多地方迸有来得厦进一步完●和走进。希置在3G时戎捌来之际.■产中文■入法可以真正太妃摸进八
3G和其它嵌入式垮葛赣域。
关键词:嵌入式廿人诲 3G手机 智鼍匈扭蕾人
中圈分类号:T P 3
文献标识码:A
文章编号:l●7l—098x(2¨9)oT(t)一008B—Ol
1系统结构 下图将输入法划分为3个不同的层次,
l,2、3、4、5分别代表横竖撇点折,该编
码表由部首编号、部首、键码组合等构成.
示例如下:
部首编码部首键码
0x1061
¨
52
(4)根据笔画和部首组合获取汉字功能, 该编码表由汉字、笔画部首列表。考虑 到汉字笔画组合的多样性。该编码表以汉 字笔划为索引,并按顺序排列,示例如下: 笔画部首列表 汉字 l— 12丁
(5)根据当前输入的汉字编码获取联想
汉字功能t

(6)词组输入功能
1)拼音+笔画输入词组
词组中的所有字首字母(或声母)+第一 个字垒笔画,以数字0或长按笔画键闻隔,数
字0或长按笔画输人后就开始出现词组· 2)笔画输入词组
参考文献 【1】《汉字内码扩展规范》.中华人民共和国
全国信息技术标准化技术委员会1995 年12月 【2】《信息交换用汉字编码字符集 基本
(2)拼音汉字编码表。该编码表主要根据 拼音组合匹配出对应的汉字编码列表,必要 时需要把一些方言的发音考虑进去,以提高 汉字输入效率。如拼音组合bei配的汉字 有“被”。。北”,。背”等.但根据匹配列表产生 输出时需要考虑到汉字排列的优先级。
(3)笔画组合分类表.五个最基本笔匾 的定义分别为横竖撇点折,该分类表主要 是根据输入的五个数字键(对应五个最基 本笔划)若干种组合,进而列出该组合下所 有可能的复杂笔画组合。
输入法类型分为拼音、笔画.基本英 文、智能英文、数字、符号五个基本类型。其 中拼音输入法包含拼笔词组输入法,通过 长按最后一个宇首笔或短按间隔符0来实 现自动切换。笔画输入法包含笔画词组输 入法。也是通过长按最后一个字首笔或短 按间隔符0来实现自动切换.
S结语 本中文输入法的特点就是汉字联想和
词组输入功能强,这个比较符合汉字输入 的习惯和特点,一般用户不需要经过特别 训练即可快速掌握其输入方法。由于时间 仓促,笔者只对基本的输入功能进行了验 证,拼音、笔划和词组输入已基本可用,但 还需要进一步测试和验证.另外需要说明 的是,本文中用到的检索算法均为2分法, 还有进一步优化的空间.
相关文档
最新文档