📄 userinterface.c
字号:
}
}
strCopy("ALM",testinfor[0]);
strCopy(" 0",testinfor[1]);
strCopy(" 0",testinfor[2]);
strCopy(" OK",testinfor[3]);
strCopy(" OK",testinfor[4]);
strCopy(" OK",testinfor[5]);
strCopy(" OK",testinfor[6]);
strCopy("YES",testinfor[7]);
strCopy("YES",testinfor[8]);
strCopy("YES",testinfor[9]);
for(index = 0; index < 11; index++)
{
if(index == 0) strCopy("CDMP341",selfcheckinfor[0]);
if(index == 1) strCopy("V1.00",selfcheckinfor[1]);
if((index > 1) && (index < 11)) strCopy(" OK",selfcheckinfor[index]);
}
strCopy(" 1",linepara[0]);
strCopy(" 5k",linepara[1]);
strCopy(" 3CT",linepara[2]);
strCopy(" Y/Y",linepara[3]);
strCopy(" 9040",linepara[4]);
strCopy(" 8100",linepara[5]);
strCopy(" ON",linepara[6]);
strCopy(" ON",linepara[7]);
strCopy(" ON",linepara[8]);
strCopy(" ON",linepara[9]);
strCopy(" KH1",linepara[10]);
strCopy(" KH2",linepara[11]);
strCopy("MODE1",linepara[12]);
strCopy("IN01",energypara[0]);
strCopy(" 100",energypara[1]);
strCopy("IN02",energypara[2]);
strCopy(" 100",energypara[3]);
strCopy("IN03",energypara[4]);
strCopy(" 100",energypara[5]);
strCopy("IN04",energypara[6]);
strCopy(" 100",energypara[7]);
for(index = 0; index < 12; index++)
{
strCopy("1.0000",preciseadjustcoef[index]);
}
for(index = 0; index < 19; index++)
{
strCopy("---",protectivefunction[index]);
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void taskDisplayProcess(void *pdata);
* 功能描述: 对液晶显示界面的消息进行处理,并调用显示函数displayMainWnd()对显
* 示界面进行更新;
* 参数: pdata是无类型的数据指针;
* 返回值: 没有;
*****************************************************************************************************************
*/
void mainWndProcess(void)
{
INT8U totalitems = 15;
INT8U itemselected = 1; // 默认方式下第一项被选中;
INT8U itemhead = 1;
INT8U itemrear = 12;
INT16U msg;
INT8U *err = 0;
displayMainWnd(itemselected, itemhead,itemrear,MSG_NONE,TRUE);
for(;;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if(itemselected != totalitems) // 判断被选择项是否是所有项中最后一项;
{
itemselected++;
if(itemselected > itemrear)
{
itemhead++;
itemrear++;
displayMainWnd(itemselected,itemhead,itemrear,MSG_RIGHT,TRUE);
}
else
{
displayMainWnd(itemselected,itemhead,itemrear,MSG_RIGHT,FALSE);
}
}
break;
case MSG_LEFT:
if(itemselected != 1) // 判断被选项是否是所有项中的第一项;
{
itemselected--;
if(itemselected < itemhead)
{
itemhead--;
itemrear--;
displayMainWnd(itemselected,itemhead,itemrear,MSG_LEFT,TRUE);
}
else
{
displayMainWnd(itemselected,itemhead,itemrear,MSG_LEFT,FALSE);
}
}
break;
case MSG_ENTER:
switch(itemselected)
{
case 0x01:
systemDiagramProcess(); // 进入主接线图显示界面处理部分;
break;
case 0x02:
highsideDataProcess(); // 进入一次测量数据显示界面处理部分;
break;
case 0x03:
lowsideDataProcess(); // 进入二次测量数据显示界面处理部分;
break;
case 0x04:
energyDataProcess(); // 进入电度量数据显示界面处理部分;
break;
case 0x05:
contactorStateProcess(); // 进入开关量状态显示界面处理部分;
break;
case 0x06:
realtimeWaveProcess(); // 进入实时波形显示界面处理部分;
break;
case 0x07:
eventRecordProcess(); // 进入事件记录显示界面处理部分;
break;
case 0x08:
settingsProcess(); // 进入保护定值显示界面处理部分;
break;
case 0x09:
coordinationLogicProcess(); //进入梯形图逻辑显示界面处理部分;
break;
case 0x0A:
breakerStatisticInforProcess(); // 进入断路器统计信息显示界面处理部分;
break;
case 0x0B:
testInforProcess(); // 进入调试信息显示界面处理部分;
break;
case 0x0C:
selfCheckProcess(); // 进入自检信息显示界面处理部分;
break;
case 0x0D:
deviceParaProcess(); // 进入设备参数显示界面处理部分;
break;
case 0x0E:
systemSettingProcess(); // 进入系统设置显示界面处理部分;
break;
case 0x0F:
contrastAdjustProcess(); // 进入对比度调节显示界面处理部分;
break;
default:
doNothing();
}
displayMainWnd(itemselected, itemhead, //重画主界面显示部分;
itemrear,MSG_NONE,TRUE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayMainWnd(INT8U itemselected,INT8U itemhead,INT8U itemrear,
* INT16U msg, BOOLEAN paintAll)
* 功能描述: 更新显示液晶显示的主界面;
* 参数: itemselected用户当前选中的数据项,它的值在itemhead和itemrear之间;
* itemhead一页显示当中最上面的一项在所有项中的位置;
* itemrear一页显示当中最下面的一项在所有项中的位置;
* msg表明是在什么消息的发生导致要显示当前项的;
* paitAll决定是否要重新显示当前页面的所有内容;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayMainWnd(INT8U itemselected,INT8U itemhead,INT8U itemrear,
INT16U msg, BOOLEAN paintAll)
{
INT8U index;
if(paintAll == TRUE) // 判断主界面是否需要被重画;
{
for(index = 0; index < 12; index++)
{
if((index + itemhead) == itemselected)
{
printString(0,2+index*13,6,13,DISPREVERSE, // 反色显示被选中项;
mainwnditems[index + itemhead - 1],TRUE);
}
else
{
printString(0,2+index*13,6,13,0,
mainwnditems[index + itemhead - 1],TRUE);
}
}
flushBuffer();
}
else
{ // 主界面不需要被重画,重画需要被更新的部分;
if(msg == MSG_RIGHT)
{
printString(0,2+(itemselected - itemhead - 1)*13,6,13,0,
mainwnditems[itemselected-2],FALSE);
}
if(msg == MSG_LEFT)
{
printString(0,2+(itemselected - itemhead + 1)*13,6,13,0,
mainwnditems[itemselected],FALSE);
}
printString(0,2+(itemselected - itemhead)*13,6,13,DISPREVERSE,
mainwnditems[itemselected-1],FALSE);
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void systemDiagramProcess();
* 功能描述: 对主接线图显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void systemDiagramProcess()
{
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displaySystemDiagram();
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
break;
case MSG_LEFT:
break;
case MSG_ENTER:
loop = FALSE;
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displaySystemDiagram();
* 功能描述: 更新显示主接线图显示界面;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displaySystemDiagram()
{
printString(20,70,6,13,0,"Not implemented",TRUE);
flushBuffer();
return;
}
/*
*****************************************************************************************************************
* 函数名称: void highsideDataProcess();
* 功能描述: 对一次测量数据显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void highsideDataProcess()
{
INT8U totalitems = 13;
INT8U itemhead = 1;
INT8U itemrear = 12;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayHighsideData(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if((itemhead == 1)&&(itemrear == 12)) //判断是否已经显示了第二页;
{
itemhead = 13;
itemrear = 13;
displayHighsideData(itemhead,itemrear,TRUE);
}
break;
case MSG_LEFT:
if((itemhead == 13)&&(itemrear == 13)) // 判断是否已经显示了第一页;
{
itemhead = 1;
itemrear = 12;
displayHighsideData(itemhead,itemrear,TRUE);
}
break;
case MSG_ENTER:
loop = FALSE;
break;
case MSG_TIME:
displayHighsideData(itemhead,itemrear,FALSE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayHighsideData(INT8U itemhead,INT8U itemrear,
* BOOLEAN paintAll);
* 功能描述: 更新显示一次测量数据的显示界面;
* 参数: itemhead代表一页显示的头一项数据;
* itemrear代表一页显示的最后一项数据;
* paintAll决定显示的界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayHighsideData(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(highsidedataitems[itemhead + index - 1], buffer);
strInsert(highsidedata[itemhead + index - 1], buffer, 6);
printString(12,2+index*13,6,13,0,buffer,TRUE);
}
}
flushBuffer(); //将写入缓冲区的数据写入到液晶里;
}
else
{ // 刷新被显示项的内容;
for(index = 0; index < 12; index++)
{
if((itemhead+index) <= itemrear)
{
printString(42,2+index*13,6,13,0,highsidedata[itemhead+index-1],FALSE);
}
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void lowsideDataProcess();
* 功能描述: 对二次测量数据显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void lowsideDataProcess()
{
INT8U totalitems = 18;
INT8U itemhead = 1;
INT8U itemrear = 12;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayLowsideData(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if((itemhead == 1)&&(itemrear == 12)) // 判断第二页面是否已显示;
{
itemhead = 13;
itemrear = 18;
displayLowsideData(itemhead,itemrear,TRUE);
}
break;
case MSG_LEFT:
if((itemhead == 13)&&(itemrear == 18)) // 判断第一页是否已显示
{
itemhead = 1;
itemrear = 12;
displayLowsideData(itemhead,itemrear,TRUE);
}
break;
case MSG_ENTER:
loop = FALSE;
break;
case MSG_TIME:
displayLowsideData(itemhead,itemrear,FALSE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayLowsideData(INT8U itemhead,INT8U itemrear,
* BOOLEAN paintAll);
* 功能描述: 更新显示二次测量数据的显示界面;
* 参数: itemhead代表一页显示的头一项数据;
* itemrear代表一页显示的最后一项数据;
* paintAll决定显示的界面是否需要重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayLowsideData(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(lowsidedataitems[itemhead + index - 1],buffer);
strInsert(lowsidedata[itemhead + index - 1], buffer,7);
printString(12,2+index*13,6,13,0,buffer,TRUE);
}
}
flushBuffer(); // 将写入缓冲区的数据写入到液晶里;
}
else
{ // 刷新显示项的数据;
for(index = 0; index < 12; index++)
{
if((itemhead+index) <= itemrear)
{
printString(48,2+index*13,6,13,0,
lowsidedata[itemhead+index-1],FALSE);
}
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void energyDataProcess();
* 功能描述: 对电度量数据显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void energyDataProcess()
{
INT8U totalitems = 10;
INT8U itemhead = 1;
INT8U itemrear = 10;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayEnergyData(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -