用户中心

资讯 > 嵌入式系统

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

来源:21EE电子工程师2006.03.24阅读 2884

       摘   要:在基于嵌入式系统的智能终端中,中文人机交互界面是必须的功能控制工程网版权所有,某些系统还要求中文文本输入。本文介绍了一种占用较少资源并适于在MCU上实现的中文输入法


        关键词:嵌入式系统;中文输入法;数字键盘


        引言
       目前,以LCD和数字键盘实现的人机交互式界面在智能终端中广泛采用。在不同的应用场合,对人机界面的要求也不同www.cechina.cn,一些情况下只要求简单参数的显示和选择,而在一些信息终端中www.cechina.cn,还要求文字的输入。


         在使用高性能CPU和标准显示设备的情况下,实现友好的人机界面可采用商用嵌入式系统( 如Linux或WinCE)所支持的GUI程序。但很多情况下,智能终端使用MC

U,且其显示设备是非标准接口的小型LCD。此时CONTROL ENGINEERING China版权所有,必须找到占用较少资源的低成本实现方法。


         笔者参加的智能终端项目就是一个比较典型的基于MCU的人机界面应用,使用128×64点阵式LCD模块,要求可显示Unicode编码的一、二级常用汉字库并可进行中文输入。此应用中输入法相关的代码和数据占用约20kB。在应用开发中CONTROL ENGINEERING China版权所有,我们使用了实时操作系统μ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”、“*”、“#”键则作为输入法中的控制键。我们将“#”作为“选择键”,用于选取同一数字键组合下的不同拼音组合。


      输入法中使用了两个重要数据结构,分别是PY_NODE和PY_SUBNODE。每个PY_NODE对应一个数字键组合,PY_SUBNODE则对应一组拼音组合。由于一个数字组合可对应多个拼音组合(如“226”对应“ban”、“bao”、“can ”、“cao”),因此这两个结构实现的是一个两级的对应表。
PY_NODE按树组织,而PY_SUBNODE按双向链表组织。以下是两个结构的定义:
typedef struct py_node{
unsigned int son[8];   //对应下次2~9按键输入时应转到的PY_NODE的ID号
unsigned int father;    

















版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688