Vxworks操作系统T9拼音输入法的实现

时间:2022-08-26 03:19:12

Vxworks操作系统T9拼音输入法的实现

【摘要】windML提供了整套vxworks下的绘图方法和IO响应,同时它支持自定义字体的显示。利用Tornado开发环境和windML开发工具实现在X86构架下标准T9输入法,并根据输入内容进行词语联想。设计思路清晰,易于实现,普遍适用于嵌入式操作系统,具有一定的可移植性。

Abstract:windML provides a full set of drawing methods under vxworks and IO response while it supports custom font display.Use Tornado development environment and windML development tools to achieve T9 input method under the framework of the X86 standard,and the contents of the input word association.The design ideas is clear and easy to implement.It generally applicable to embedded operating system and has some portability.

1.引言

Vxworks是美国风河公司(Wind River System)推出的一个实时操作系统,由于其出色的任务调度管理、良好的实时性和出众的稳定性而受到很多用户的欢迎,现被广泛应用于通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。但是vxworks并不支持中文显示,这样一来用户自主实现中文的输入和输出就变得有必要。

2.Vxworks下汉字的输出

实现中文的输出并不难,风河公司为vx-works操作系统提供了一套开发工具WindML,它是一个多媒体库,可实现vxworks操作系统下的很多功能。通过tornado开发环境配置WindML,选择自定义的汉字字体,就可以通过汉字编码方便的显示汉字。这里不得不提汉字字体从何而来,这也是汉字输入法的一个关键元素。WindML点阵存储机构中有三个成员:点阵资料表、扩展为双字节的点阵表和字体名称,这也是汉字字体定义时用到的结构中的必需成员。Tornado中的字体文件存放路径为target\src\ugl\fonts\bmf,打开任意一个字体文件可以看到UGL_BMF_FONT_DESC类型的一个结构体,此结构体的内容完整的描述了一种字体。还可以看到名为pageArray的字符数组,此数组就是分页的点阵表,windML自带的西文字体只定义了一页表,自定义汉字表时可根据所需编码量定义多页表。汉字的编码一般都选用标准编码(如最常用的GB2312),而双字节的点阵表可以根据自己需要的字体从别的系统直接移植。有了上述的这些字体信息,根据windML字体文件的具体格式,就能自己定义出vxworks下windML可用的汉字字体。

这样就有了汉字的字体,在需要汉字显示的工程中使用windML工具,在配置windML时添加定义好的字体,并且重新编译windML,我们就能方便的实现汉字在屏幕上的输出。使用这种字体配置方法,在显示汉字时,必须使用VxWorks提供的双字节显示函数uglText2DrawW(),并且在参数传递时,需要在字符串参数的结尾处追加‘\0’才能够正确地显示。这是由于这个函数处理的是双字节字符串,字符串的结束符也就对应地为连续两个‘\0’。

3.Vxworks下汉字的输入

汉字的输入有很多种方式,这里我们选择最常用的拼音输入,由于vxworks应用环境的特点,一般很少会用到标准美式键盘,而是使用较简洁的类似手机键盘的T9键盘,为实现更有通用价值的输入法,我们选择T9输入法作为实现目标,由于T9输入法英文和数字的输入很容易实现,以下主要描述汉字的输入。

为实现T9汉字输入法,首先得建立数字组合和拼音的对应表,这个表必须包含所有汉语拼音的对应的数字的组合;比如“a”对应的数字组合“2”,“ni”对应的数字组合是“64”,以此类推,需要将所有的拼音对应的数字组合都定义出来,当用户输入数字组合时用于和拼音匹配。

然后再建立输入法的字库,也就是将每个拼音下的汉字做静态成表,以供在确定用户输入后去搜索,这个汉字表中存放的其实就是汉字的编码,它将拼音和行子的编码对应了起来,当然一个拼音可能对应多个汉字编码。

最后还需要的是一个判定方法,用于判断当前应该输出的汉字。

图1所示描述了T9输入法的静态数据表的结构,这样的结构可以根据用户输入的数字组合方便地给出用户当前需要的输出。

图1 T9输入法的静态数据表结构

图2

上述共四个要素,现命名为:字体、数字拼音对应表、汉字拼音对应表和决策算法,是组成T9汉字输入法的关键,用户通过数字键输入一个一个的数字,决策算法将当前输入的数字组合可以组成的拼音和可能组成(可能组成指继续输入的情况下组成拼音的任何可能)的拼音输出给用户,并将匹配度最高的拼音对应的汉字显示给用户,用户可以选择想要输入的拼音,也可以直接选择匹配度最高的拼音对应的汉字。当用户选择一个拼音时,决策算法将该拼音对应的所有汉字显示给用户,当用户选择一个汉字后,前面所输入的所有数字内容清空,并通过用户所选汉字的编码访问汉字字体中对应汉字点阵,并显示在屏幕上。图2说明了整个输入法根据用户输入所做的决策方法。

4.汉字词语联想

一个汉字显示出来后,还需要显示联想词汇,这就需要词库的支持,由于vxworks系统文件结构的单调,我们只能自定义词库的格式和内容,按照基本需求,将常用汉字对应的词语整理并以自定义格式写入文件,在输入法程序运行时需要将词库文件以方便查找的数据结构读入内存,并在输入汉字后进行词汇搜索。

词库必须包含的内容:

(1)被联想的字本身;

(2)联想出的词语中除去被联想字后剩余汉字;

(3)联想出的词语中除去被联想字后剩余汉字的拼音;

(4)词语的使用次数,即显示优先级,用于词库根据用户使用习惯的更新。

搜索到的词汇将除去被联想词后被显示出来,供用户选择,并根据用户选择的词汇更新这个词语的使用次数。

5.应用实例

以输入“中国”为例,首先要输入“中”字,下面是vxworks系统下T9输入法输入过程截图:

输入“9”

输入“94”

输入“946”

输入“9466”

输入“94664”

选择第二个拼音“zhong”

选择第一个汉字“中”

选择联想词语第二个“国”

6.结束语

本文介绍的输入法已经成功应用于工程实践中,并受到了用户的肯定和好评,为vxworks系统下需将中文显示作为输出的应用的开发提供了一种方法,具有一定的工程价值。

参考文献

[1]WindRiver System,Inc..VxWorks Programmer's Guide[Z].

[2]WindRiver System,Inc..WindML Programmer's Guide[Z].

注:本文获国家863计划项目资金支持(课题编号:2012AA091804)。

上一篇:对一款全自动无尘黑板擦的研究 下一篇:干熄焦炭加湿除尘与水分控制