⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t9py.h

📁 msp430的中文输入程序
💻 H
📖 第 1 页 / 共 2 页
字号:
                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 + -