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");
}
}


发布评论