人机界面使用终端的中文的输入对单片机软件设计来说,是一件很麻烦的事情。但是绘芯智能显示终端通过内嵌拼音输入法,使得用户软件的处理变得异常简单,相关的指令如表 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;}