📄 chnpyime.c
字号:
//if(hz_num*2<=20) //如果更改后汉字数小于等于10,则一定要刷新显示
{
memset(disp_buf,0,50);
sprintf(disp_buf,"名称:");
strcpy(disp_buf+5,chinese_string);
clear_lcd(2,2);
lcd_disp(2,0,disp_buf);
//clear_lcd(2,1);
//lcd_disp(2,0,chinese_string);
}
/* else
//lcd_disp(2,0,&chinese_string[(hz_num-10)*2]); //如果汉字数大于10个,则只显示后最后10个字
{
clear_lcd(2,1);
lcd_disp(2,0,chinese_string);
}
*/
}
//else
// beep(50);
clear_lcd(1,1);
//clear_lcd(3,1);
input_complete=0;
continue;
}
if((inputideal==0)||(inputideal==2)||(inputideal==3))//拼音输入
{
if(!input_complete)//输入拼音没有完成
{
//send_char(key_buf);
if(key_buf>='a'&&key_buf<='z')
{//输入的是小写字母
while(strlen(input_string)<6)//显示输入的拼音
{
if((inputideal==2)||(inputideal==3))
{
if(hz_num==input_maxlen) //如果已经达到最大字数,
{
sprintf(disp_buf,"对不起,不能再输入");
clear_lcd(3,1);
lcd_disp(3,0,disp_buf);
if(low_pwr) return CANCEL; //如果断电了,则EXIT
openbacklight();
clear_err=1;
input_string[0]=key_buf;
hz_str_len=0;
break;
}
if(inputideal==2)key_buf-=32;
chinese_string[hz_num]=key_buf;
hz_num++;
chinese_string[hz_num]=0;
memset(disp_buf,0,50);
sprintf(disp_buf,"名称:");
strcpy(disp_buf+5,chinese_string);
clear_lcd(2,1);
lcd_disp(2,0,disp_buf);
input_string[0]=0;
//send_char(0xbb);
// continue;
}
else{
input_string[strlen(input_string)]=key_buf;
memset(disp_buf,0,50);
sprintf(disp_buf,"输入的拼音为:");
strcpy(disp_buf+13,input_string);
lcd_disp(1,0,disp_buf);//lcd_disp(1,1,input_string);
}
break;
}
}
else if(key_buf==PY_ENTER)//PY_SUBTOTAL)//确认输入的拼音
{
if((hz_num>(input_maxlen-2))&&(input_string[0]))//
//if(hz_num==Max_length) //如果已经达到最大字数,
{
//if(strlen(input_string)==0)return 0;//输入汉字完成,结束操作
sprintf(disp_buf,"对不起,不能再输入");
clear_lcd(3,1);
lcd_disp(3,0,disp_buf);
if(low_pwr) return CANCEL; //如果断电了,则EXIT
openbacklight();
clear_err=1;
input_string[0]=1;
hz_str_len=0;
break;//继续等待下一个汉字的拼音输入continue;
//return 0;
}
else if((key_buf==PY_ENTER)&&chinese_string[0]&&(!input_string[0])&&(!clear_err)) //直接回车输入完毕
return 0;//输入汉字完成,结束操作
if((sequence = pinyin(input_string))==0x20)//if((sequence = py_ime(input_string))==PY_SEQUENCE_error)
{
sprintf(disp_buf,"对不起,无此汉字!!!");
lcd_disp(3,0,disp_buf);
clear_err=1;
input_string[0]=1;
continue;
}
input_complete=1;
for(i=0;i<211;i++) chi_str_tmp[i] = 0;
strcpy(chi_str_tmp,pinyin(input_string));
for(i=0;i<7;i++) input_string[i] = 0;
ChStrLen = strlen(chi_str_tmp); //汉字的个数
//send_char(ChStrLen);
//send_str(20,chi_str_tmp);
ChLnNum = ChStrLen/HZ_DISP_NUM;
if(!(ChStrLen%HZ_DISP_NUM)) ChLnNum-=1;
for(j=0;j<ChLnNum+1;j++)
{
for(k=0;k<HZ_DISP_NUM+1;k++)output[j][k]=0;
memcpy(output[j],&chi_str_tmp[HZ_DISP_NUM*j],HZ_DISP_NUM);
if(j==ChLnNum)for(k=strlen(output[j]);k<HZ_DISP_NUM;k++) {output[j][k]=0;}
}
page = 0;
no=0;
clear_lcd(1,1);
con_disp2(1,no*2,2,output[page]);
//lcd_disp(1,0,output[page]);//显示第0页
//con_disp1(1,no*2,2,&output[page][no*2]);
}
}
else if(input_complete==1)//已经输入完拼音,开始选择汉字
{
switch(key_buf)
{
case UP_ARROW:
//前翻页,'0'
//向前翻一页并显示
if(page==0) {break;}
else
{
page-=1;
no=0;
clear_lcd(1,1);
break;
}
case DOWN_ARROW://后翻页
if(page==ChLnNum) {break;}
else
{
page+=1;
no=0;
clear_lcd(1,1);
break;
}
case LEFT_ARROW:
if(!no)
{
if(page>0)
{
page-=1;
no=0;
clear_lcd(1,1);
}
break;
}
no--;
break;
case RIGHT_ARROW:
disp_num=strlen(output[page]);
disp_num/=2;
//send_char(no);
if(no==(disp_num-1))
{
//send_char(ChLnNum);
if((disp_num==12)&&(page<(ChLnNum-1)&&(ChLnNum>0))){page+=1;clear_lcd(1,1);}
else if(page>0){page-=1;clear_lcd(1,1);}
no=0;
break;
}
no++;
break;
case PY_ENTER:
memcpy(hz,&output[page][no*2],2);
input_complete=2;
break;
}
//clear_lcd(1,1);
con_disp2(1,no*2,2,output[page]);
// lcd_disp(1,0,output[page]);
//con_disp1(1,no*2,2,&output[page][no*2]);
}
}
else if((inputideal==1)||(inputideal==4))//区位输入法
{
if(key_buf>='0'&&key_buf<='9')
{//输入的是小写字母
while(strlen(input_string)<6)
{
if(inputideal==4)
{
if(hz_num==input_maxlen) //如果已经达到最大字数,
{
sprintf(disp_buf,"对不起,不能再输入");
clear_lcd(3,1);
lcd_disp(3,0,disp_buf);
if(low_pwr) return CANCEL; //如果断电了,则EXIT
openbacklight();
clear_err=1;
input_string[0]=key_buf;
hz_str_len=0;
break;
}
chinese_string[hz_num]=key_buf;
hz_num++;
chinese_string[hz_num]=0;
memset(disp_buf,0,50);
sprintf(disp_buf,"名称:");
strcpy(disp_buf+5,chinese_string);
clear_lcd(2,1);
lcd_disp(2,0,disp_buf);
input_string[0]=0;
}
else{
input_string[strlen(input_string)]=key_buf;
memset(disp_buf,0,50);
sprintf(disp_buf,"输入的区位码为:");
strcpy(disp_buf+13,input_string);
lcd_disp(1,0,disp_buf);//lcd_disp(1,1,input_string);
}
break;
}
}
else if(key_buf==PY_ENTER)//PY_SUBTOTAL)
{
if((hz_num>(input_maxlen-2))&&(input_string[0]))//Max_length) //如果已经达到最大字数,//Alan 03-10-17
{
//if(strlen(input_string)==0)return 0;//输入汉字完成,结束操作
sprintf(disp_buf,"对不起,不能再输入");
clear_lcd(3,1);
lcd_disp(3,0,disp_buf);
if(low_pwr) return CANCEL; //如果断电了,则EXIT
openbacklight();
clear_err=1;
input_string[0]=1;
hz_str_len=0;
break;//继续等待下一个汉字的拼音输入continue;
//return 0;
}
else if((key_buf==PY_ENTER)&&chinese_string[0]&&(!input_string[0])&&(!clear_err))return 0;//输入汉字完成,结束操作 //直接回车输入完毕
else if (strlen(input_string)>3)
{
if(getquweiHZ(input_string,hz))
{
sprintf(disp_buf,"对不起,无此汉字!!!");
lcd_disp(3,0,disp_buf);
clear_err=1;
input_string[0]=1;
continue;
}
input_complete=2;
}
}
}
if(input_complete==2)//选到一个汉字,显示出选到的汉字
{
memcpy(&chinese_string[hz_num],hz,2);
hz_num+=2;
chinese_string[hz_num]=0;
chi_str_tmp[0]=0;
memset(disp_buf,0,50);
sprintf(disp_buf,"名称:");
strcpy(disp_buf+5,chinese_string);
clear_lcd(2,1);
lcd_disp(2,0,disp_buf);
break;//继续等待下一个汉字的拼音输入
}
}//while(1)
}//for
//send_char(0xaa);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -