?? 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);//顯示你選擇拼音對應(yīng)的漢字,供給選擇
puts((const char *)(cpTemp.PY_mb+Add));//顯示你選擇拼音對應(yīng)的漢字,供給選擇
printf (" 1 2 3 4 5 6 7 8 9\n");
}
}
else
{//非選字狀態(tài)
//輸出相匹配的臨時拼音變量
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[] 內(nèi)容
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 自動轉(zhuǎn)換成 unsigned char
const char * t9PY_T9;//對應(yīng)于輸入的數(shù)字
const char * PY; //輸入的數(shù)字對應(yīng)的拼音
const unsigned char * PY_mb; //拼音對應(yīng)的漢字
};
*/
void lcd_test(unsigned char * inputstring)
{
//PYEnter:輸入拼音狀態(tài)和選字狀態(tài)(功能選擇狀態(tài))切換 標志位
//0x00:輸入拼音狀態(tài) 0xff:選字狀態(tài)
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];//存放字庫里面數(shù)據(jù)的臨時變量
//lcd display
char inputstring_index = 0;
go(3,1);
write_data(inputstring);
//puts("按鍵 /:上一拼音 *:下一拼音 .:輸入狀態(tài)和選字狀態(tài)切換");
//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++];//接收串口發(fā)送來的數(shù)據(jù)
//go(x1,1);
//x1 ++;
switch (tempchar)
{ //拼音輸入只對 2~9 處理
//case '0':拼音輸入狀態(tài)對'0','1'屏蔽
//case '1':.
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!PYEnter)//PYEnter = 0x00:輸入拼音狀態(tài)
{
oneline[i]=tempchar;
i++;
t9PYn=0;
Add=0;//Add:漢字定位位置
cpt9PY_Mblen=T9PY_Get_Match_PY_MB(oneline,cpt9PY_Mb);//獲取與輸入相匹配的T9拼音列表(該函數(shù)比較完整了)
}
break;
case '/'://上一拼音
if (t9PYn > 0) t9PYn --;//上下拼音指示標志位
break;
case '*'://下一拼音
t9PYn ++;//上下拼音指示標志位
if (t9PYn >= cpt9PY_Mblen) //cpt9PY_Mblen :匹配的拼音數(shù)目
t9PYn = 0;//循環(huán)
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 '.': //輸入狀態(tài)和選字狀態(tài)切換
case '\n':
Add = 0;
PYEnter ^= 0xff;//PYEnter = 0xff:選字狀態(tài)
break;
case ' '://擴充為漢字拼音,英文字母輸入法切換 --- 未加入
break;
case '=':
break;
default :
break;
}
if (PYEnter)
{//PYEnter = 0xff:選字狀態(tài)
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));//顯示你選擇拼音對應(yīng)的漢字,供給選擇
//printf (" 1 2 3 4 5 6 7 8 9\n");
}
}
else
{//非選字狀態(tài)
//輸出相匹配的臨時拼音變量
//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__*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -