人机界面使用终端的“拼音输入法”实现中文输入

人机界面使用终端的中文的输入对单片机软件设计来说,是一件很麻烦的事情。但是绘芯智能显示终端通过内嵌拼音输入法,使得用户软件的处理变得异常简单,相关的指令如表 6‐4‐1 所示。

指令

数据

说明

0x0B

下发:0x01+PY_Code

基于1级汉字库的拼音输入法,PY_Code是用户下发的拼音,大写表示,最多6字节;终端应答,HZ_Num是该拼音下的汉字数目,0x00表示拼音错误;Strings是该拼音下的所有汉字,内码编码。

应答:0x01+HZ_Num+Strings

表 6-4-1 拼音输入法指令说明

拼音输入法实质上是一个触摸键码识别和数据库检索的过程,借助绘芯终端的拼音输入法检索指令,可以很轻松的实现常用汉字录入。

通过 C 参考程序来说明基于绘芯智能显示终端实现拼音 输入法的思路:

//用户通过字母键盘输入拼音

//拼音实时在图 6-4-1 的小红框区域显示

//拼音对应的汉字实时在 6-4-1 的大红框区域显示

//用户通过直接点击 6-4-1 大红框区域显示的汉字而选择所要输入的汉字

//在绘芯科技 HX64480S057_01WT 终端上演示

unsigned char py[6]={0x20,0x20,0x20,0x20,0x20,0x20}; //触摸键盘输入的拼音,初始化成空格

unsigned char *str; //保存终端传来的对应拼音内码

unsigned char i,hz_h,hz_l; //hz_h:l 是返回的输入汉字内码,hz_h=0x00 表示无效

while(TCHOK) //有触摸按键按下,位置保存在(x,y)

{Keytch(); //把触摸位置转换成按键

if(KEYOK)

{for(i=0;i<5;i++) //是字母键被按下,就把字母赋给拼音数组

{py[i]=py[i+1];} //窗口左移,比如原来是"ABCDEF",输入是 K,变成"BCDEFK"

py[5]=K_code;

Txstr(0xaab001,*py); //把拼音发送给终端查表 AA B0 01 Py CC 33 C3 3C

Rxstr(*str); //接收终端返回的拼音内码数组 AA B0 01 n String

setcolor(0x07e0,0x001f); //设置颜色为绿色/蓝色

prints(8,235,*py); //把拼音显示出来(图上的小红框区域)

setcolor(0x0000,0x001f); //设置颜色为黑色/蓝色

clrw(0,184,639,216); //清除将要显示汉字的区域(图上的大红框区域)

if(str[3]==0x00)

{break;} //n=0,拼音错误,直接跳出

prints(0,184,*(str+3))}; //拼音正确,把该拼音下的汉字显示出来

else

{if((x>0)&&(x<640)&&(y>184)&&(y<216)) //判断是否点击的汉字显示区(也是输入汉字选择区)

{i=40*((y-184)/16)+x/16; //计算点击的是哪个汉字

hz_h=0x00; //把 hz_h 设置成 0x00,如果有正确的汉字输入就会为非零

if(i

{hz_h=*(str+2+i); //内码高字节

hz_l=*(str+3+i);}} //内码低字节 TCHOK=FALSE;}