📄 userinterface.c
字号:
{
case MSG_ENTER:
loop = FALSE;
break;
case MSG_TIME:
displayEnergyData(itemhead,itemrear,FALSE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayEnergyData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll);
* 功能描述: 更新显示电度量数据显示界面;
* 参数: itemhead代表一页显示的头一项数据;
* itemrear代表一页显示的最后一项数据;
* paintAll表示电度量数据显示界面是否需要被重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayEnergyData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE) // 重画电度量数据显示界面;
{
for(index = 0; index < 10; index++)
{
if((index == 0)||(index == 5))
{
printString(6,2+index*13,6,13,0,
powerdataitems[itemhead+index-1],TRUE);
}
else
{
buffer[0] = '\0';
strCat(powerdataitems[index],buffer);
if((index > 0)&&(index < 5))
{
strInsert(powerdata[index - 1],buffer,6);
}
if((index > 5)&&(index < 10))
{
if(energypara[(index - 6) * 2][0] == '-')
{
strInsert("--------",buffer,6);
}
else
{
strInsert(powerdata[index - 2],buffer,6);
}
}
printString(6,2+index*13,6,13,0,buffer,TRUE);
}
}
flushBuffer();
}
else
{ // 更新显示电度量数据显示界面的内容;
for(index = 0; index < 4; index++)
{
printString(42,2+13+index*13,6,13,0,powerdata[index],FALSE);
}
for(index = 4; index < 8; index++)
{
printString(42,2+26+index*13,6,13,0,powerdata[index],FALSE);
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void contactorStateProcess();
* 功能描述: 对开关量状态显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void contactorStateProcess()
{
INT8U totalitems = 6;
INT8U itemhead = 1;
INT8U itemrear = 6;
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayContactorState(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_ENTER:
loop = FALSE;
break;
case MSG_TIME:
displayContactorState(itemhead,itemrear,FALSE);
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayContactorState(INT8U itemhead,INT8U itemrear,
* BOOLEAN paintAll);
* 功能描述: 更新显示电度量数据显示界面;
* 参数: itemhead代表一页显示的头一项数据;
* itemrear代表一页显示的最后一项数据;
* paintAll表示电度量数据显示界面是否需要被重画;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayContactorState(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE) // 重画开关量状态显示界面;
{
for(index = 0; index < 6; index++)
{
buffer[0] = '\0';
strCat(contactorstateitems[index],buffer);
strInsert(contactorstate[index*2],buffer,6);
strInsert(contactorstate[index*2 + 1],buffer,16);
printString(6,index*13,6,13,0,buffer,TRUE);
}
flushBuffer();
}
else
{ // 更新显示开关量状态显示界面里的项内容;
for(index = 0; index < 6; index++)
{
printString(42,index*13,6,13,0,contactorstate[index],FALSE);
}
for(index = 0; index < 6; index++)
{
printString(102,index*13,6,13,0,contactorstate[index+6],FALSE);
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void realtimeWaveProcess();
* 功能描述: 对实时波形显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void realtimeWaveProcess()
{
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
displayRealtimeWave();
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 displayRealtimeWave();
* 功能描述: 更新显示实时波形显示界面的内容;
* 参数: 没有;
* 返回值: 没有;
*****************************************************************************************************************
*/
void displayRealtimeWave()
{
printString(20,70,6,13,0,"Not implemented",TRUE);
flushBuffer();
return;
}
/*
*****************************************************************************************************************
* #define EVENTRECORD_NUM 0x08
* typedef struct{
* INT8U No[3];
* INT8U DateAndTime[19];
* INT8U EventContent[22];
* }EventRecord;
* EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void initOccuredEventRecord() // TEST ONLY;
{
INT8U index;
INT8U buffer[3];
INT8U loop;
for(index = 0; index < EVENTRECORD_NUM; index++)
{
OccuredEvent[index].No[0] = '\0';
if(index == 0)
{
strCat("01",OccuredEvent[index].No);
}
else
{
buffer[0] = '\0';
strCat(OccuredEvent[index-1].No,buffer);
if(buffer[1] == '9')
{
buffer[0]++;
buffer[1] = '0';
}
else
{
buffer[1]++;
}
strCat(buffer,OccuredEvent[index].No);
}
OccuredEvent[index].DateAndTime[0] = '\0';
strCat("05-09 07:56:55.294",OccuredEvent[index].DateAndTime);
OccuredEvent[index].EventContent[0] = '\0';
strCat("控制电源失电",OccuredEvent[index].EventContent);
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void eventRecordProcess();
* 功能描述: 对事件记录显示界面的消息进行处理并显示;
* 参数: 没有;
* 返回值: 没有;
* 使用变量: #define EVENTRECORD_NUM 0x08
* typedef struct{
* INT8U No[3];
* INT8U DateAndTime[19];
* INT8U EventContent[22];
* }EventRecord;
* EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void eventRecordProcess()
{
INT16U msg;
INT8U *err;
BOOLEAN loop = TRUE;
INT8U itemhead = 1;
INT8U itemrear = 4;
displayEventRecord(itemhead,itemrear,TRUE);
for(;loop == TRUE;)
{
msg = getMessage(err);
switch(msg)
{
case MSG_RIGHT:
if((itemhead != (EVENTRECORD_NUM - 3))&&
(itemrear != EVENTRECORD_NUM))
{
itemhead += 4;
itemrear += 4;
displayEventRecord(itemhead,itemrear,TRUE);
}
break;
case MSG_LEFT:
if((itemhead != 1)&&(itemrear != 4))
{
itemhead -= 4;
itemrear -= 4;
displayEventRecord(itemhead,itemrear,TRUE);
}
break;
case MSG_ENTER:
loop = FALSE;
break;
default:
doNothing();
}
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void displayEventRecord(INT8U itemhead,INT8U itemrear,
* BOOLEAN paintAll);
* 功能描述: 更新显示事件记录显示界面的内容;
* 参数: 没有;
* 返回值: 没有;
* 使用变量: #define EVENTRECORD_NUM 0x08
* typedef struct{
* INT8U No[3];
* INT8U DateAndTime[19];
* INT8U EventContent[22];
* }EventRecord;
* EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void displayEventRecord(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
INT8U index;
INT8U buffer[22];
if(paintAll == TRUE)
{
for(index = 0; index < 4; index++)
{
buffer[0] = '\0';
strCat(OccuredEvent[itemhead+index-1].No,buffer);
strCat(" ",buffer);
strCat(OccuredEvent[itemhead+index-1].DateAndTime,buffer);
printString(0,index*39+2,6,13,0,buffer,TRUE);
printString(0,index*39+2+13,6,13,0,
OccuredEvent[itemhead+index-1].EventContent,TRUE);
printString(0,index*39+2+26,6,13,0,"测试",TRUE); //
}
flushBuffer();
drawHorizLine(0,2+13*3,128,0xFF);
drawHorizLine(0,2+13*6,128,0xFF);
drawHorizLine(0,2+13*9,128,0xFF);
}
return;
}
/*
*****************************************************************************************************************
* 函数名称: void initpftable();
* 功能描述: 检查配置的保护功能,并把相应的信息(指针和每个保护功能对应的选项)
* 放入到数组pftable中;
* 参数: 没有;
* 返回值: 没有;
* 使用变量: #define PROTECTFUNC_NUM 0x13
* typedef struct{
* INT8U (*field)[22];
* INT8U (*data)[7];
* INT8U items;
* }PFT;
* PFT pftable[PROTECTFUNC_NUM];
* 参考变量: INT8U protectivefunction[19][4];
*****************************************************************************************************************
*/
void initpftable()
{
INT8U index = 0;
if(protectivefunction[0][0] != '-')
{
pftable[index].field = DLSD;
pftable[index].data = DLSDp;
pftable[index].items = 5;
index++;
}
if(protectivefunction[1][0] != '-')
{
pftable[index].field = XSDLSD;
pftable[index].data = XSDLSDp;
pftable[index].items = 6;
index++;
}
if(protectivefunction[2][0] != '-')
{
pftable[index].field = DSXGL;
pftable[index].data = DSXGLp;
pftable[index].items = 8;
index++;
}
if(protectivefunction[3][0] != '-')
{
pftable[index].field = FSXGL;
pftable[index].data = FSXGLp;
pftable[index].items = 4;
index++;
}
if(protectivefunction[4][0] != '-')
{
pftable[index].field = GFH;
pftable[index].data = GFHp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[5][0] != '-')
{
pftable[index].field = FXDL;
pftable[index].data = FXDLp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[6][0] != '-')
{
pftable[index].field = LXGL1;
pftable[index].data = LXGL1p;
pftable[index].items = 4;
index++;
}
if(protectivefunction[7][0] != '-')
{
pftable[index].field = LXGL2;
pftable[index].data = LXGL2p;
pftable[index].items = 4;
index++;
}
if(protectivefunction[8][0] != '-')
{
pftable[index].field = LXGL3;
pftable[index].data = LXGL3p;
pftable[index].items = 4;
index++;
}
if(protectivefunction[9][0] != '-')
{
pftable[index].field = DXJD;
pftable[index].data = DXJDp;
pftable[index].items = 4;
index++;
}
if(protectivefunction[10][0] != '-')
{
pftable[index].field = GDY;
pftable[index].data = GDYp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[11][0] != '-')
{
pftable[index].field = DDY;
pftable[index].data = DDYp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[12][0] != '-')
{
pftable[index].field = SY;
pftable[index].data = SYp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[13][0] != '-')
{
pftable[index].field = FXDY;
pftable[index].data = FXDYp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[14][0] != '-')
{
pftable[index].field = LXDY;
pftable[index].data = LXDYp;
pftable[index].items = 3;
index++;
}
if(protectivefunction[15][0] != '-')
{
pftable[index].field = FHGL;
pftable[index].data = FHGLp;
pftable[index].items = 7;
index++;
}
if(protectivefunction[16][0] != '-')
{
pftable[index].field = DZJZ;
pftable[index].data = DZJZp;
pftable[index].items = 7;
index++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -