📄 userinterface.c
字号:
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void selfCheckProcess()
{
INT8U totalitems = 11;
INT8U itemhead = 1;
INT8U itemrear = 11;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displaySelfCheckInfor(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_ENTER:
loop = FALSE;
break;
case MSG_TIME:
displaySelfCheckInfor(itemhead,itemrear,FALSE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displaySelfCheckInfor(INT8U itemhead,INT8U itemrear,
* BOOLEAN paintAll);
* 功能描述: 更新显示自检信息界面的内容;
* 参数: itemhead指示界面显示的第一项内容;
* itemrear指示界面显示的最后一项内容;
* paintAll指示显示界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displaySelfCheckInfor(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE)
{
for(index = 0; index < 11; index++)
{
buffer[0] = '\0';
strCat(selfcheckinforitems[index],buffer);
strCat(" ",buffer);
strCat(selfcheckinfor[index],buffer);
printString(6,index*13,6,13,0,buffer,TRUE);
}
flushBuffer();
}
else
{
for(index = 0; index < 11; index++)
{
printString(72,index*13,6,13,0,selfcheckinfor[index],FALSE);
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void deviceParaProcess();
* 功能描述: 对设备参数显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void deviceParaProcess()
{
INT8U totalitems = 8;
INT8U itemselected = 1;
INT8U itemhead = 1;
INT8U itemrear = 8;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayDevicePara(itemselected,itemhead,itemrear,MSG_NONE,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if(itemselected != totalitems) //判断最后一项是否被选中;
{
itemselected++;
displayDevicePara(itemselected,itemhead,
itemrear,MSG_RIGHT,FALSE);
}
break;
case MSG_LEFT:
if(itemselected != 1) // 判断第一项是否被选中;
{
itemselected--;
displayDevicePara(itemselected,itemhead,
itemrear,MSG_LEFT,FALSE);
}
break;
case MSG_ENTER:
if(itemselected == 8)
{
loop = FALSE;
}
else
{
switch(itemselected)
{
case 0x01:
lineParaProcess(); //线路参数显示界面的处理;
break;
case 0x02:
energyParaProcess(); // 电度量参数显示界面的处理;
break;
case 0x03:
contactorParaProcess(); // 开关量参数显示界面的处理;
break;
case 0x04:
lowsideRangeProcess(); // 二次测量量程显示界面的处理;
break;
case 0x05:
preciseAdjustCoefProcess(); // 精度校正系数显示界面的处理;
break;
case 0x06:
protectiveFunctionProcess();// 保护功能设置显示界面的处理;
break;
case 0x07:
coordinationEventProcess(); //梯形图事件显示界面的处理;
break;
default:
doNothing();
}
displayDevicePara(itemselected,itemhead, // 重画设备参数显示界面;
itemrear,MSG_NONE,TRUE);
}
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayDevicePara(INT8U itemselected, INT8U itemhead,
* INT8U itemrear, INT16U msg, BOOLEAN paintAll)
* 功能描述: 更新显示设备参数显示界面的内容;
* 参数: itemselected指示被选中的项;
* itemhead指示界面显示的第一项内容;
* itemrear指示界面显示的最后一项内容;
* msg指示选中项被选中发生的条件;
* paintAll指示显示界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayDevicePara(INT8U itemselected, INT8U itemhead,
INT8U itemrear, INT16U msg, BOOLEAN paintAll)
{
INT8U index;
if(paintAll == TRUE) // 决定界面是否需要被重画;
{
for(index = itemhead; index < (itemrear+1); index++)
{
if(index == itemselected) // 反色显示被选中项;
{
printString(0,(index-1)*13,6,13,DISPREVERSE,
deviceparaitems[index - 1],TRUE);
}
else
{
printString(0,(index-1)*13,6,13,0,deviceparaitems[index - 1],TRUE);
}
}
flushBuffer();
}
else // 更新显示被选中项,被选中项反色显示;
{
if(msg == MSG_RIGHT)
{
printString(0,(itemselected - 2)*13,6,13,0,
deviceparaitems[itemselected-2],FALSE);
}
if(msg == MSG_LEFT)
{
printString(0,itemselected*13,6,13,0,
deviceparaitems[itemselected],FALSE);
}
printString(0,(itemselected - 1)*13,6,13,DISPREVERSE,
deviceparaitems[itemselected-1],FALSE);
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void lineParaProcess();
* 功能描述: 对线路参数显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void lineParaProcess()
{
INT8U totalitems = 13;
INT8U itemhead = 1;
INT8U itemrear = 12;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayLinePara(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if((itemhead == 1)&&(itemrear == 12))
{
itemhead = 13;
itemrear = 13;
displayLinePara(itemhead,itemrear,TRUE);
}
break;
case MSG_LEFT:
if((itemhead == 13)&&(itemrear == 13))
{
itemhead = 1;
itemrear = 12;
displayLinePara(itemhead,itemrear,TRUE);
}
break;
case MSG_TIME:
displayLinePara(itemhead,itemrear,FALSE);
break;
case MSG_ENTER:
loop = FALSE;
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayLinePara(INT8U itemhead, INT8U itemrear, BOOLEAN paintAll);
* 功能描述: 更新显示线路参数显示界面的内容;
* 参数: itemhead指示界面显示的第一项内容;
* itemrear指示界面显示的最后一项内容;
* paintAll指示显示界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayLinePara(INT8U itemhead, INT8U itemrear, BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE)
{
for(index = 0; index < 12; index++)
{
if((itemhead+index) <= itemrear)
{
buffer[0] = '\0';
strCat(lineparaitems[index + itemhead - 1],buffer);
strCat(" ",buffer);
strCat(linepara[index + itemhead - 1],buffer);
printString(6,index*13+2,6,13,0,buffer,TRUE);
}
}
flushBuffer();
}
else
{
for(index = 0; index < 12; index++)
{
if((itemhead+index) <= itemrear)
{
printString(78,index*13+2,6,13,0,linepara[index +itemhead - 1],FALSE);
}
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void energyParaProcess();
* 功能描述: 对电度量参数显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void energyParaProcess()
{
INT8U totalitems = 5;
INT8U itemhead = 1;
INT8U itemrear = 5;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayEnergyPara(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_TIME:
displayEnergyPara(itemhead,itemrear,FALSE);
break;
case MSG_ENTER:
loop = FALSE;
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayEnergyPara(INT8U itemhead, INT8U itemrear, BOOLEAN paintAll);
* 功能描述: 更新电度量参数显示界面的内容;
* 参数: itemhead指示界面显示的第一项内容;
* itemrear指示界面显示的最后一项内容;
* paintAll指示显示界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayEnergyPara(INT8U itemhead, INT8U itemrear, BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE)
{
for(index = 0; index < 5; index++)
{
if(index == 0)
{
printString(0,index*13+2,6,13,0,energyparaitems[index],TRUE);
}
else
{
buffer[0] = '\0';
strCat(energyparaitems[index],buffer);
strCat(" ",buffer);
strCat(energypara[(index - 1)*2],buffer);
strCat(" ",buffer);
strCat(energypara[(index - 1)*2 + 1],buffer);
printString(6,index*13+2,6,13,0,buffer,TRUE);
}
}
flushBuffer();
}
else
{
for(index = 0; index < 4; index++)
{
printString(48,13+2 +index*13,6,13,0,energypara[2*index],FALSE);
printString(90,13 + 2+index*13,6,13,0,energypara[2*index+1],FALSE);
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void contactorParaProcess();
* 功能描述: 对开关量参数显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void contactorParaProcess()
{
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
INT8U itemhead = 1;
INT8U itemrear = 2;
displayContactorPara(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if((itemhead != (CONTACTOR_NUM - 1))&&(itemrear != CONTACTOR_NUM))
{
itemhead += 2;
itemrear += 2;
displayContactorPara(itemhead,itemrear,TRUE);
}
break;
case MSG_LEFT:
if((itemhead != 1)&&(itemrear != 2))
{
itemhead -= 2;
itemrear -= 2;
displayContactorPara(itemhead,itemrear,TRUE);
}
break;
case MSG_ENTER:
loop = FALSE;
break;
default:
doNothing();
}
}
return;
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayEnergyPara(INT8U itemhead, INT8U itemrear, BOOLEAN paintAll);
* 功能描述: 更新显示开关量参数显示界面的内容;
* 参数: 没有
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayContactorPara(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
INT8U index;
INT8U loop;
INT8U buffer[22];
for(loop = 0; loop < 2; loop++)
{
buffer[0] = '\0';
strCat(contactorpara[0],buffer);
for(index = 0; index < (itemhead + loop); index++)
{
if(buffer[3] == '9')
{
buffer[2]++;
buffer[3] = '0';
}
else
{
buffer[3]++;
}
}
strCat(InputContactors[itemhead+loop-1].ContactorType,buffer);
printString(0,6+loop*71,6,13,0,buffer,TRUE);
buffer[0] = '\0';
strCat(contactorpara[1],buffer);
strCat(" ",buffer);
strCat(InputContactors[itemhead+loop-1].StateZeroInfor,buffer);
printString(0,19+loop*71,6,13,0,buffer,TRUE);
buffer[0] = '\0';
strCat(contactorpara[2],buffer);
strCat(" ",buffer);
strCat(InputContactors[itemhead+loop-1].StateOneInfor,buffer);
printString(0,32+loop*71,6,13,0,buffer,TRUE);
buffer[0] = '\0';
strCat(contactorpara[3],buffer);
strCat(" ",buffer);
strCat(InputContactors[itemhead+loop-1].ConfirmTime,buffer);
strCat(" ms",buffer);
printString(0,45+loop*71,6,13,0,buffer,TRUE);
buffer[0] = '\0';
strCat(contactorpara[4],buffer);
strCat(" ",buffer);
strCat(eventtype[InputContactors[itemhead+loop-1].EventType],buffer);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -