📄 key.c
字号:
ShowOneChar(z_zhang,0,4,14);
}
if((ErrorTemp&0x20)==0)
{
ShowOneChar(z_zhen,0,6,12);
ShowOneChar(z_chang,0,6,14);
}
else
{
ShowOneChar(z_gu,0,6,12);
ShowOneChar(z_zhang,0,6,14);
}
}
void FillGuZhangPage2()
{
unsigned int ErrorShuZiTemp;
unsigned int ErrorMoNiTemp;
ErrorShuZiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD);
ErrorMoNiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2);
Fill4NULL(2,15);
Fill4NULL(4,15);
Fill4NULL(6,15);
if((ErrorShuZiTemp&0x40)!=0||(ErrorMoNiTemp&0x900)!=0)
{
ShowOneChar(z_guo,0,2,12);
ShowOneChar(z_ya,0,2,14);
}
else if((ErrorShuZiTemp&0x80)!=0||(ErrorMoNiTemp&0x24!=0))
{
ShowOneChar(z_qian,0,2,12);
ShowOneChar(z_ya,0,2,14);
}
else
{
ShowOneChar(z_zhen,0,2,12);
ShowOneChar(z_chang,0,2,14);
}
if((ErrorShuZiTemp&0x100)!=0||(ErrorMoNiTemp&0x1200)!=0)
{
ShowOneChar(z_guo,0,4,12);
ShowOneChar(z_ya,0,4,14);
}
else if((ErrorShuZiTemp&0x200)!=0||(ErrorMoNiTemp&0x48)!=0)
{
ShowOneChar(z_qian,0,4,12);
ShowOneChar(z_ya,0,4,14);
}
else
{
ShowOneChar(z_zhen,0,4,12);
ShowOneChar(z_chang,0,4,14);
}
if((ErrorShuZiTemp&0x400)!=0||(ErrorMoNiTemp&0x2400)!=0)
{
ShowOneChar(z_guo,0,6,12);
ShowOneChar(z_ya,0,6,14);
}
else if((ErrorShuZiTemp&0x800)!=0||(ErrorMoNiTemp&0x90)!=0)
{
ShowOneChar(z_qian,0,6,12);
ShowOneChar(z_ya,0,6,14);
}
else
{
ShowOneChar(z_zhen,0,6,12);
ShowOneChar(z_chang,0,6,14);
}
}
void FillGuZhangPage3()
{
unsigned char ErrorShuZiTemp;
unsigned int ErrorMoNiTemp;
ErrorShuZiTemp=ByteRead25045EEROM(SAVEGUZHANG_ADD+1); //只取高8位
ErrorMoNiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2); //取2个字节
Fill4NULL(0,15);
Fill4NULL(2,15);
Fill4NULL(4,15);
Fill4NULL(6,15);
if((ErrorMoNiTemp&0x01)!=0)
{
ShowOneChar(z_guo,0,0,12);
ShowOneChar(z_ya,0,0,14);
}
else if((ErrorMoNiTemp&0x02)!=0)
{
ShowOneChar(z_qian,0,0,12);
ShowOneChar(z_ya,0,0,14);
}
else
{
ShowOneChar(z_zhen,0,0,12);
ShowOneChar(z_chang,0,0,14);
}
if((ErrorMoNiTemp&0x4000)!=0)
{
ShowOneChar(z_guo,0,2,12);
ShowOneChar(z_liu,0,2,14);
}
else
{
ShowOneChar(z_zhen,0,2,12);
ShowOneChar(z_chang,0,2,14);
}
if((ErrorShuZiTemp&0x10)!=0)
{
ShowOneChar(z_guo,0,4,12);
ShowOneChar(z_ya,0,4,14);
}
else if((ErrorShuZiTemp&0x20)!=0)
{
ShowOneChar(z_qian,0,4,12);
ShowOneChar(z_ya,0,4,14);
}
else
{
ShowOneChar(z_zhen,0,4,12);
ShowOneChar(z_chang,0,4,14);
}
if((ErrorShuZiTemp&0x40)!=0)
{
ShowOneChar(z_guo,0,6,12);
ShowOneChar(z_liu,0,6,14);
}
else
{
ShowOneChar(z_zhen,0,6,12);
ShowOneChar(z_chang,0,6,14);
}
}
void FillGuZhangPage4()
{
unsigned char ErrorTemp;
ErrorTemp=ByteRead25045EEROM(SAVEGUZHANG_ADD);
Fill4NULL(2,15);
Fill4NULL(4,15);
Fill4NULL(6,15);
if((ErrorTemp&0x01)==0)
{
ShowOneChar(z_zhen,0,2,12);
ShowOneChar(z_chang,0,2,14);
}
else
{
ShowOneChar(z_guo,0,2,12);
ShowOneChar(z_wen,0,2,14);
}
if((ErrorTemp&0x02)==0)
{
ShowOneChar(z_zhen,0,4,12);
ShowOneChar(z_chang,0,4,14);
}
else
{
ShowOneChar(z_guo,0,4,12);
ShowOneChar(z_wen,0,4,14);
}
if((ErrorTemp&0x40)==0)
{
ShowOneChar(z_zhen,0,6,12);
ShowOneChar(z_chang,0,6,14);
}
else
{
ShowOneChar(z_guo,0,6,12);
ShowOneChar(z_wen,0,6,14);
}
}
void GetGuZhang() //取出故障
{
unsigned char i;
unsigned long GuZhangCode; //实际需要18位
//初始化
for(i=0;i<GUZHANGLEN;i++)
(ErrorStr+i) = 0;
OneGuZhangLen = 0; //一次故障的个数
OneGuZhangNum = 0;
//取出故障和故障时间
PageWrite25045EEROM(ReadGuZhangPtr,(unsigned char *)(&GuZhangShiJian));
PageWrite25045EEROM(ReadGuZhangPtr,(unsigned char *)(&GuZhangCode));
if( GuZhangCode==0)
break;
for(i=0;i<18;i++)
{
if(GuZhangCode&0x01==1)
{
*(ErrorStr+OneGuZhangLen) = i;
OneGuZhangLen ++;
}
GuZhangCode = GuZhangCode>>1;
}
GuZhangPageLen=(OneGuZhangLen+2)/4; //加1是为了加上第一行的时间和第二行的故障总数
if(OneGuZhangLen%4!=0) GuZhangPageLen=GuZhangPageLen+1;
}
void FillGuZhang() //显示实际的故障信息,按下确定键才更新
{
unsigned char i;
unsigned char *MessageStartPtr; //显示信息头地址在数组中的位置
unsigned char xnum; //显示的行数
if(GuZhangPageNum >= GuZhangPageLen||GuZhangPageNum==0)
return;
if((GuZhangPageNum == 0)&&(GuZhangPageLen==1))//只有一页
{
xnum = OneGuZhangLen;
MessageStartPtr = ErrorStr;
}
else if((GuZhangPageNum == 0)&&(GuZhangPageLen>1)) //多页中的第一页
{
xnum = 2;
MessageStartPtr = ErrorStr;
ShowOneChar(z_downArrow,FALSE,6,14);
}
else if(GuZhangPageNum == GuZhangPageLen-1) //最后一页
{
xnum = (OneGuZhangLen+2)%4
MessageStartPtr = ErrorStr+(GuZhangPageNum*4-2);
ShowOneChar(z_upArrow,FALSE,0,14);
}
else //中间页
{
xnum = 4;
MessageStartPtr =ErrorStr+(GuZhangPageNum*4-2);
ShowOneChar(z_downArrow,FALSE,6,14);
ShowOneChar(z_upArrow,FALSE,0,14);
}
LedFillNULL();
for(i=0;i<xnum;i++)
{
FillNum(OneGuZhangNum,0,i+i,0);
MessageBox(MESSAGE_GUZHANG+(*MessageStartPtr)*MESSAGE_GUZHANG_YNUM,MESSAGE_GUZHANG_STARTX+i+i,MESSAGE_GUZHANG_STARTY,1,MESSAGE_GUZHANG_YNUM);
MessageStartPtr++;
OneGuZhangNum++;
}
}
//fill 2 null before y;y>1,在第y列前写两个字即写宽度*长度=16*32,可以认为是4个数字
void Fill4NULL(unsigned char x,unsigned char y)
{
ShowOneHalfChar(z_NULL,FALSE,x,y);
ShowOneHalfChar(z_NULL,FALSE,x,y-1);
ShowOneHalfChar(z_NULL,FALSE,x,y-2);
ShowOneHalfChar(z_NULL,FALSE,x,y-3);
}
void Fill2NULL(unsigned char x,unsigned char y)
{
ShowOneHalfChar(z_NULL,FALSE,x,y);
ShowOneHalfChar(z_NULL,FALSE,x,y-1);
}
/*
void FillNULL(unsigned char xnum,unsigned char ynum,unsigned char x,unsigned char y)
{
unsigned char i;
unsigned char j;
for(i=0;i<xnum;i++)
for(j=0;j<ynum;j++)
ShowOneHalfChar(z_NULL,FALSE,x,y+i);
}
*/
void DefaultPageProcess()
{
if(Incomedata.SourceState==00) ShowWait();
else ShowCharPage(PAGE_DEFAULT,PAGE_DEFAULT_LINE,PAGE_DEFAULT_SEL);//显示默认界面
}
/*--------------key in default page,缺省状态下有键按下的处理程序-----------------------*/
void KeyInLedDefault()
{
FeedDog();
switch (gKeyCode)
{
case KEY_CANCEL :
MenuLayer = LED_DEFAULT;
DefaultPageProcess();
FillDefault();
break;
case KEY_UP :
if( MenuLayer == LED_DEFAULT) //当前显示的是缺省状态
{
MenuLayer = LED_DEFAULT_4; //菜单回到缺省状态时的累计量查询
}
else MenuLayer = MenuLayer - 2;
switch(MenuLayer)
{
case LED_DEFAULT: //液晶显示缺省状态
DefaultPageProcess();
FillDefault();
break;
case LED_DEFAULT_1: //显示缺省状态下快捷查询的输入量
ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
FillInput();
break;
case LED_DEFAULT_2: //输出量
ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
FillOutput();
break;
case LED_DEFAULT_3: //直流量
LedFillNULL();
MessageBox(MESSAGE_MENU3,MESSAGE_MENU3_STARTX,MESSAGE_MENU3_STARTY,MESSAGE_MENU3_XNUM,MESSAGE_MENU3_YNUM);
FillDirectCurrent();
break;
case LED_DEFAULT_4: //故障查询
LedFillNULL();
MessageBox(MESSAGE_MENU5,MESSAGE_MENU5_STARTX,MESSAGE_MENU5_STARTY,MESSAGE_MENU5_XNUM,MESSAGE_MENU5_YNUM);
FillGuZhangCode();
break;
}
break;
case KEY_DOWN :
if( MenuLayer == LED_DEFAULT_4)
{
MenuLayer = LED_DEFAULT;
}
else MenuLayer = MenuLayer + 2;
switch(MenuLayer)
{
case LED_DEFAULT: //液晶显示缺省状态
DefaultPageProcess();
FillDefault();
break;
case LED_DEFAULT_1: //显示缺省状态下快捷查询的输入量
ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
FillInput();
break;
case LED_DEFAULT_2: //输出量
ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
FillOutput();
break;
case LED_DEFAULT_3: //直流量
LedFillNULL();
MessageBox(MESSAGE_MENU3,MESSAGE_MENU3_STARTX,MESSAGE_MENU3_STARTY,MESSAGE_MENU3_XNUM,MESSAGE_MENU3_YNUM);
FillDirectCurrent();
break;
case LED_DEFAULT_4: //故障查询
LedFillNULL();
MessageBox(MESSAGE_MENU5,MESSAGE_MENU5_STARTX,MESSAGE_MENU5_STARTY,MESSAGE_MENU5_XNUM,MESSAGE_MENU5_YNUM);
FillGuZhangCode();
}
break;
case KEY_OK :
MenuLayer = LED_MENU_MAIN;
MenuSelect = PAGE_MENU_MAIN_SEL;
ShowCharPage(PAGE_MENU_MAIN,PAGE_MENU_MAIN_LINE,PAGE_MENU_MAIN_SEL);
break;
case KEY_UPDATE:
switch(MenuLayer)
{
case LED_DEFAULT:
if(IsUpdateLed==TRUE)
{
DefaultPageProcess();
IsUpdateLed = FALSE;
}
FillDefault();
break;
case LED_DEFAULT_1: //显示缺省状态下快捷查询的输入量
if(IsUpdateLed==TRUE)
{
ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
IsUpdateLed = FALSE;
}
FillInput();
break;
case LED_DEFAULT_2: //输出量
if(IsUpdateLed==TRUE)
{
ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
IsUpdateLed = FALSE;
}
FillOutput();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -