📄 nedu_sub_state.c.bak
字号:
(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 + -