2024年6月9日发(作者:)

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

这段时间做了个项目,要求有汉字输入,即类似手机的键盘输入,研究了一段时间,终于实现

了,不敢独吞,拿出来与大家共享,如果有哪位需要,可以借鉴一下,少走些弯路.

我会讲些实现的过程,要不然只给出结果不利于对这个过程的消化理解.

帖子比较长,由于是在家里宽带上网,为了怕出现提交不成功浪费感情的事情,我把它拆成小

的片段发布,敬请谅解.

闲话少叙,进入正题!

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_ (11.02 KB)

3.2寻找所有汉字的拼音,这个如果打开字典一个一个的输,恐怕没有一个月是干不成了,庆

幸的是有人替我们做好了,在万能五笔输入法中有一个拼音记录文件,几乎包括了所有的汉

字,拿来所用

py_ (264.6 KB)

这个文件中,有许多词组,是我们不需要的,需要剔掉,但手工的方式工作量太大,这里我们发

挥计算机比较傻的优势来做这件事,用到一些VC的基本知识,相信大家都有这个能力

CStdioFile read_file,read_new_file;

CStdioFile write_file;

CString my_str,temp_str,tf="";

read_( "py_", CFile::modeRead,NULL ) ;

write_( "new_py_", CFile::modeCreate | CFile::modeWrite,NULL ) ;

while (read_ring(my_str))

{

int i = my_(" ");

if ((my_gth() - i) > 3)

{

/* 是词组 */

continue;

}

else

{

/* 保存到文件 */

write_tring(my_str);

write_tring("n");

}

}