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

📄 输入状态栏.c

📁 C8051ucos源码
💻 C
字号:
#include "CM240128.H"
#include "scankey.h"
#include "51py.h"
#include <string.h>
#include <ctype.h>
//-----------------------------------------------------------------------------------------------------------------
static unsigned char InLoc;
static xdata unsigned char InStr[25];
idata unsigned char StateVal;//0字母 1数字 2拼音 
static xdata unsigned char OutBuf[5];
//-----------------------------------------------------------------------------------------------------------------
void InputStateOption(unsigned char val)
{
	StateVal=val;
		if(StateVal==0){Shift=0;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("英文:                                                  ",30);}
		if(StateVal==1){Shift=1;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("数字:                                                  ",30);}
		if(StateVal==2){Shift=0;/*0英文/1数值 切换*/InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音:                                                  ",30);}
			
}
//-----------------------------------------------------------------------------------------------------------------
unsigned char * InputStateInput(void)
{
unsigned char val,ln;
static unsigned char loc,pag;
static unsigned char *p;



	val = ScanKey();
	if(val==0)return(0);
	
	if(val == 8)//sw键
	{
		StateVal++;if(StateVal>2)StateVal=0;
		InputStateOption(StateVal);
		return(0);
	}
	
	if(StateVal==0)//英文输入法
	{
//		if((val>'Z'||val<'A')&&(val!=15)&&(val!='\n')&&(val!=1)&&(val!=2)&&(val!=3)&&(val!=4))return(0);//输入字符非法
//		if(val>'Z'||val<'A'){InStr[0] = val;InStr[1]=0;return(InStr);}
		InStr[0] = val;
		InStr[1]=0;
		SetCurrLoc(5,112);DisplayStr(InStr,5);
		return(InStr);
	}	
	
	if(StateVal==1)//数字输入法
	{
		if((val>'9'||val<'0')&&(val!=15)&&(val!='\n')&&(val!=1)&&(val!=2)&&(val!=3)&&(val!=4)&&(val!=':')&&(val!=6))return(0);//输入字符非法
		if(val==':')val='.';
		InStr[0] = val;
		InStr[1]=0;
		SetCurrLoc(5,112);DisplayStr(InStr,5);
		return(InStr);
	}	
	
	if(StateVal==2)//拼音输入法
	{ 		
		if(val>'Z'||val<'A')
		{
			if(strlen(InStr)==0){OutBuf[0] = val;OutBuf[1]=0;return(OutBuf);}
			if(loc>9)return(0);
			if(val==1)
			{//向上
				if(pag>0)pag--;else return(0);
				loc=0;
				SetCurrLoc(10,112);
				DisplayFill(' ',20);
				SetCurrLoc(10,112);
				DisplayStr((p+(pag*10)),20);
				SetCurrLoc((10+(loc*2)),112);
				DisplayPYStr((p+(loc*2)+(pag*10)),2);
				return(0);					
			}
			if(val==2)
			{//向右
				if(loc>9)return(0);
				loc++;if(loc>9)loc=9;
				ln = strlen(p);
				if(((loc*2)+(pag*10))>=ln)loc--;
				SetCurrLoc(10,112);
				DisplayFill(' ',20);
				SetCurrLoc(10,112);
				DisplayStr((p+(pag*10)),20);
				SetCurrLoc((10+(loc*2)),112);
				DisplayPYStr((p+(loc*2)+(pag*10)),2);
				return(0);					
			}
			if(val==3)
			{//向下
				pag++;
				ln = strlen(p);
				if(((pag*10)+1)>ln){pag--;return(0);}
				loc=0;
				SetCurrLoc(10,112);
				DisplayFill(' ',20);
				SetCurrLoc(10,112);
				DisplayStr((p+(pag*10)),20);
				SetCurrLoc((10+(loc*2)),112);
				DisplayPYStr((p+(loc*2)+(pag*10)),2);
				return(0);	
			}
			if(val==4)
			{//向左
				if(loc>9)return(0);
				if(loc>0)loc--;
				SetCurrLoc(10,112);
				DisplayFill(' ',20);
				SetCurrLoc(10,112);
				DisplayStr((p+(pag*10)),20);
				SetCurrLoc((10+(loc*2)),112);
				DisplayPYStr((p+(loc*2)+(pag*10)),2);
				return(0);
			}
			if(val == 0x0a)
			{//确认	回车
				OutBuf[0]=*(p+(loc*2)+(pag*10));
				OutBuf[1]=*(p+(loc*2)+(pag*10)+1);
				OutBuf[2]=0;
				InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音:                                                  ",30);
				pag=0;loc=0xff;
				return(OutBuf);
			}
			if(val == 0x0f)
			{//取消	删除
				InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音:                                                  ",30);
				pag=0;loc=0xff;
				return(0);
			}
		}
		if(InLoc==5){InLoc=0;memset(InStr,0,25);SetCurrLoc(0,112);DisplayStr("拼音:                                                  ",30);}
		InStr[InLoc++] = tolower(val);InStr[InLoc]=0;
		SetCurrLoc(5,112);DisplayStr(InStr,5);
	
		p = py_ime(InStr);
		loc=0xff;

		if(p!=0)
		{
			loc=0;pag=0;
			SetCurrLoc(10,112);
			DisplayFill(' ',20);
			SetCurrLoc(10,112);
			DisplayStr(p,20);
			SetCurrLoc(10,112);
			DisplayPYStr(p,2);
		}

	}	

return(0);
}
//-----------------------------------------------------------------------------------------------------------------




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -