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

📄 nedu_sub_state.c.bak

📁 一个基于单片机的小型操作系统
💻 BAK
📖 第 1 页 / 共 3 页
字号:
							(void)LCD_Prints(rcd.mail,fcolor, pList_r+(3*r_offset),bcolor);			//打印mail到LCD
							
							i=2;
							Uart_Printf("out of del mode");
						}
						
					}

				}
				
				OS_ENTER_CRITICAL();														//进入临界区
				Sub_Mode = TCH_INVALIDE;													//进入无有效动作状态
				OS_EXIT_CRITICAL();															//退出临界区
				
				OSTimeDly(200); 															//延时
				
			}//end while
		
		}
		else																//如果没有任何记录
		{
			OS_ENTER_CRITICAL();											//进入临界区
			state = NOREC;													//进入进入无记录状态
			OS_EXIT_CRITICAL();												//退出临界区
			return;
		}
}


/*
**********************************************************************************************************************
*                       NOREC_DISPLAY
*
* 作者:孙周旋
*
* 时间:2007年7月10日
*
* 描述:子状态机。显示当前无记录
*	 
* 参数:无。
*
* 返回值:无
* 
***********************************************************************************************************************
*/
void NoREC_Display(void)
{
	OS_CPU_SR  cpu_sr;
	LCD_Clear(CLR_ALL);
	while(1)
	{
		LCD_loard_tig(PDA_VERSION);										
		LCD_loard_tig(PDA_NORECORD);
		
		if(Sub_Mode == TCH_RETURN||Sub_Mode==TCH_K_ENTER)						//如果敲击的是“返回”	
		{
					//InsertALine(file,filename,rcd);
			OS_ENTER_CRITICAL();														//进入临界区
			state = NORMAL;															//状态为正常
			Sub_Mode = TCH_INVALIDE;												//进入无有效动作状态
			OS_EXIT_CRITICAL();
			return;																	//返回到主页面
					
		}
		OSTimeDly(500);
	}
}




/*
**********************************************************************************************************************
*                      InitREC
*
* 作者: 胡仲华
*
* 时间: 2007.07.10
*
* 描述: 清空输入数组
*	 
* 参数:char str[] :要清空的数组
*		 int strLength :数组长度
* 
*返回值:无。
* 
***********************************************************************************************************************
*/
void InitREC(char str[],int strLength)
{
	int i;
	for(i = 0;i < strLength;i++)
		str[i] = 0x0;
}
/*
**********************************************************************************************************************
*                       RECSETDISPLAY
*
* 作者: 邹海英
*
* 时间: 07.07.05
*
* 描述: 输入用户记录子状态机.
*            根据客户输入的数据记录对其进行处理。用户从触摸屏按钮或17键键盘分别录入客户的"姓名"、"电话"、"手机"、
*            "邮箱"四个字段的信息。输入的内容限定为ASCII字符。采用触摸屏输入时,按[Sft]按钮,改变大小写;按[Del]按钮,
*            删除当前项目上输入的一个字符;按[Esc]按钮,取消本次录入活动,返回到系统主界面;按[Enter]按钮,确认本次
*            录入活动,并存储记录到指定的文件。
*	         当所有字段信息全部不为空时,才能存储记录
*
* 参数:无。
*
* 返回值:无。
* 
***********************************************************************************************************************
*/
void REC_Set_Display(void)
{
	OS_CPU_SR  cpu_sr;
	FILECNT * file;
	U32 bcolor=0xff;							//背景色
	U32 fcolor=0x00;							//前景色
	U32 r_offset=0x690;							//条目间距
	U32* pList_r=(U32*)0x0c003b00;				//显示指针
	char filename[] = {'P','H','O','N','E','N','U','M','T','X','T'};		//文件名
	struct RECLIST rec;     					//用户输入记录结构变量
	int line=0;  								// 用来指示第几行,0-4分别表示用户姓名,电话号码,手机号码,邮箱所在的行数
	int index=0;								// name数组的初始索引
	int index1=0;								// telnum数组的初始索引
	int index2=0;								// plmnum数组的初始索引
	int index3=0;								// mail数组的初始索引
	BOOL flag=TRUE;						//Sft键是否按下的标志
  
	InitREC(rec.name,20);
	InitREC(rec.telnum,16);
	InitREC(rec.plmnum,16);
	InitREC(rec.mail,25);
	
	LCD_Clear(CLR_ALL);							//清除屏幕
	LCD_loard_tig(PDA_SETREC);

	file = OpenFile(filename,0);
	OS_ENTER_CRITICAL();				//关中断
	Sub_Mode = TCH_INVALIDE;			//赋值子模式
	OS_EXIT_CRITICAL(); 				//开中断	
	
	while(1)
	{
		(void)LCD_Prints(rec.name,fcolor,pList_r,bcolor);					// 显示姓名
		(void)LCD_Prints(rec.telnum,fcolor,pList_r+r_offset,bcolor);		//显示电话号码
		(void)LCD_Prints(rec.plmnum,fcolor,pList_r+(2*r_offset),bcolor);	//显示手机号码
		(void)LCD_Prints(rec.mail,fcolor,pList_r+(3*r_offset),bcolor);		//显示邮箱
		
		//显示输入状态
		switch(numlock)
		{
			case 0:(void)LCD_Prints("NUMBER",fcolor,pList_r-r_offset,bcolor);
						break;
			case 1:(void)LCD_Prints("CHAR-1",fcolor,pList_r-r_offset,bcolor);
						break;
			case 2:(void)LCD_Prints("CHAR-2",fcolor,pList_r-r_offset,bcolor);
						break;
		}
		
		//显示大小写状态
		if(flag)
		{
			(void)LCD_Prints("NUMBER",fcolor,pList_r-r_offset+20,bcolor);
		}	
		
		switch(line)							//让当前输入的行显示为黑底白字,其它行则仍为白底黑字
		{
		case 0:
			(void)LCD_Prints(" ",bcolor,pList_r+index*2,fcolor);
			break;
		case 1:
			(void)LCD_Prints(" ",bcolor,pList_r+r_offset+index1*2,fcolor);	
			break;
		case 2:
			(void)LCD_Prints(" ",bcolor,pList_r+(2*r_offset)+index2*2,fcolor);	
			break;
		case 3:
			(void)LCD_Prints(" ",bcolor,pList_r+(3*r_offset)+index3*2,fcolor);
			break;
		
		}//end switch
		
		/***********输入法1************/
		if(numlock == 1 && Sub_Mode >= TCH_K_0 && Sub_Mode <= TCH_K_9)
		{
			if(Sub_Mode == TCH_K_1)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_Q;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_A;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_Z;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_2)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_W;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_S;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_X;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_3)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_E;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_D;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_C;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_4)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_R;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_F;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_V;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_5)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_T;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_G;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_B;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_6)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_Y;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_H;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_N;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_7)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_U;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_J;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_M;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_8)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_I;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_K;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_COMA;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_9)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_O;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_L;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_DOT;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_0)
			{
				Delay(10000);
				switch(Sub_Mode)
				{
					case TCH_K_1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_P;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_EQU;
						OS_EXIT_CRITICAL();
							break;
					case TCH_K_3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_AT;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
		}

		/***********输入法2************/
		if(numlock == 2 && Sub_Mode >= TCH_K_0 && Sub_Mode <= TCH_K_9)
		{
			if(Sub_Mode == TCH_K_1)
			{
				Delay(10000);
				switch(number)
				{
					case 1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_A;
						OS_EXIT_CRITICAL();
							break;
					case 2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_B;
						OS_EXIT_CRITICAL();
							break;
					case 3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_C;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_2)
			{
				Delay(10000);
				switch(number)
				{
					case 1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_D;
						OS_EXIT_CRITICAL();
							break;
					case 2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_E;
						OS_EXIT_CRITICAL();
							break;
					case 3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_F;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_3)
			{
				Delay(10000);
				switch(number)
				{
					case 1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_G;
						OS_EXIT_CRITICAL();
							break;
					case 2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_H;
						OS_EXIT_CRITICAL();
							break;
					case 3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_I;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_INVALIDE;
						OS_EXIT_CRITICAL();
							break;
				}
			}
			else if(Sub_Mode == TCH_K_4)
			{
				Delay(10000);
				switch(number)
				{
					case 1:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_J;
						OS_EXIT_CRITICAL();
							break;
					case 2:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_K;
						OS_EXIT_CRITICAL();
							break;
					case 3:	
						OS_ENTER_CRITICAL();
						Sub_Mode = TCH_K_L;
						OS_EXIT_CRITICAL();
							break;
					default:
						OS_ENTER_CRITICAL();

⌨️ 快捷键说明

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