📄 t9py.h
字号:
printf (pyma);//输出你选择的拼音
printf ("\n press NUM keys to select,or press '+' and '-' for other \n");
// printf ((*cpTemp).PY_mb+(Add/2)*2+1);//显示你选择拼音对应的汉字,供给选择
puts((const char *)(cpTemp.PY_mb+Add));//显示你选择拼音对应的汉字,供给选择
printf (" 1 2 3 4 5 6 7 8 9\n");
}
}
else
{//非选字状态
//输出相匹配的临时拼音变量
printf ("Spell : ");
out_temp = 1;
for (temp = t9PYn;temp < cpt9PY_Mblen;temp++)
{//???? t9PYn ????是什么作用
memcpy(&cpTemp,cpt9PY_Mb[temp],sizeof(struct t9PY_index));
strcpy(pyma,cpTemp.PY);
printf("%d - ",out_temp++);
puts(pyma);
}
}
}
clr_cpt9PY_Mb();
}
//清空 * cpt9PY_Mb[] 内容
void clr_cpt9PY_Mb(void)
{
unsigned i = 0;
struct t9PY_index dumy = {NULL,NULL,NULL};
for(i = 0;i < T9PYPTRMAX;i++)
cpt9PY_Mb[i] = & dumy;
}
/*
struct t9PY_index
{ //IAR中,“option” 选项中将 char 自动转换成 unsigned char
const char * t9PY_T9;//对应于输入的数字
const char * PY; //输入的数字对应的拼音
const unsigned char * PY_mb; //拼音对应的汉字
};
*/
void lcd_test(unsigned char * inputstring)
{
//PYEnter:输入拼音状态和选字状态(功能选择状态)切换 标志位
//0x00:输入拼音状态 0xff:选字状态
unsigned char PYEnter=0;
//HZok :汉字是否选定标志位
//0x00:汉字没有选定 0xff:汉字选定
unsigned char HZok=0;
int temp,i=0;
//int out_temp;
unsigned char t9PYn=0;
unsigned char * tempMB;//指向汉字的指针
char oneline[8] = {0};//输入的拼音码
char pyma[8];//拼音码临时变量
unsigned char chinese_word[3]=" ";//保存选中的汉字
char tempchar;
signed char Add=0;
struct t9PY_index cpTemp = t9PY_index2[0];//存放字库里面数据的临时变量
//lcd display
char inputstring_index = 0;
go(3,1);
write_data(inputstring);
//puts("按键 /:上一拼音 *:下一拼音 .:输入状态和选字状态切换");
//puts("请按键:2-abc 3-def 4-ghi 5-jkl 6-mno 7-pqrs 8-tuv 9-wxyz ");
while(!HZok)//HZok 初始值为 0。汉字没有ok
{ //汉字选定,则退出程序
tempchar = inputstring[inputstring_index++];//接收串口发送来的数据
//go(x1,1);
//x1 ++;
switch (tempchar)
{ //拼音输入只对 2~9 处理
//case '0':拼音输入状态对'0','1'屏蔽
//case '1':.
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!PYEnter)//PYEnter = 0x00:输入拼音状态
{
oneline[i]=tempchar;
i++;
t9PYn=0;
Add=0;//Add:汉字定位位置
cpt9PY_Mblen=T9PY_Get_Match_PY_MB(oneline,cpt9PY_Mb);//获取与输入相匹配的T9拼音列表(该函数比较完整了)
}
break;
case '/'://上一拼音
if (t9PYn > 0) t9PYn --;//上下拼音指示标志位
break;
case '*'://下一拼音
t9PYn ++;//上下拼音指示标志位
if (t9PYn >= cpt9PY_Mblen) //cpt9PY_Mblen :匹配的拼音数目
t9PYn = 0;//循环
break;
//汉字显示在这里溢出 ===== 在这里进行处理
case '-'://上一页 汉字 定位
if (Add >= 18)
Add -= 18;//Add:汉字定位位置
break;
case '+'://下一页 汉字
if(strlen((const char *)(cpTemp.PY_mb)) < 18)
break;
else if ((Add < strlen((const char *)(cpTemp.PY_mb)) - 18))
Add += 18;
break;
case BACKSPACE://????删除一个拼音字母
if (i>0) i--;
oneline[i]=0x00;
Add=0;
//获取与输入相匹配的T9拼音列表,存入 *cpt9PY_Mb[16]中
cpt9PY_Mblen=T9PY_Get_Match_PY_MB(oneline,cpt9PY_Mb);
break;
case '.': //输入状态和选字状态切换
case '\n':
Add = 0;
PYEnter ^= 0xff;//PYEnter = 0xff:选字状态
break;
case ' '://扩充为汉字拼音,英文字母输入法切换 --- 未加入
break;
case '=':
break;
default :
break;
}
if (PYEnter)
{//PYEnter = 0xff:选字状态
memcpy(&cpTemp,cpt9PY_Mb[t9PYn],sizeof(struct t9PY_index));
if((tempchar >= '1') && (tempchar <= '9'))//选择汉字
{
HZok=1;
t9PYn=0;
//printf (" \n");
//printf ("Target of Chinese word you had selected : ");
tempMB = (unsigned char *)cpTemp.PY_mb;
tempMB += (Add + (tempchar - '1')*2);
memcpy((void *)chinese_word,(const void *)tempMB,2);
puts ((const char *)chinese_word);//显示最后选择的一个汉字
printf ("\n");
go(x2,0);
write_data(chinese_word);
x2 ++;
if(x2 >= 8)
{
//go(0,0);
//write_data(" ");
x2 = 0;
}
}
else
{
//printf ("The spell of your Selection : ");
strcpy (pyma,cpTemp.PY);
//puts (pyma);//输出你选择的拼音
//printf ("\n press NUM keys to select,or press '+' and '-' for other \n");
//puts((const char *)(cpTemp.PY_mb+Add));//显示你选择拼音对应的汉字,供给选择
//printf (" 1 2 3 4 5 6 7 8 9\n");
}
}
else
{//非选字状态
//输出相匹配的临时拼音变量
//printf ("Spell : ");
//out_temp = 1;
//for (temp = t9PYn;temp < cpt9PY_Mblen;temp++)
//{ //???? t9PYn ????是什么作用
temp = t9PYn;
memcpy(&cpTemp,cpt9PY_Mb[temp],sizeof(struct t9PY_index));
strcpy(pyma,cpTemp.PY);
//printf("%d - ",out_temp++);
puts(pyma);
//}
go(x1,y2);
write_data(" ");
go(x1,y2);
write_data((unsigned char *)pyma);
}
}
clr_cpt9PY_Mb();
}
#endif /*__T9PY_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -