459 lines
13 KiB
C++
459 lines
13 KiB
C++
#include "PanelSelfCheck.h"
|
|
|
|
#include "RuntimeData2.h"
|
|
#include "Runtime.h"
|
|
|
|
#define TextTopOffSet 6
|
|
#define ListLineCnt 10
|
|
|
|
#define dfColor_NoExist clSilver
|
|
#define dfColor_WaitCheck clNearBlack
|
|
#define dfColor_OnCheck clMedOrange
|
|
#define dfColor_CheckDone clMedGreen
|
|
|
|
#define dfLine1_Top 100
|
|
#define dfLine2_Top 299
|
|
#define dfLine3_Top 349
|
|
|
|
#define dfMaster_Top 180
|
|
#define dfSlaver_Top 100
|
|
#define dfBtm 349
|
|
|
|
static const short svGridMasterX [10] = {10, 130, 220, 340, 430, 550, 496, 572, 648, 724};
|
|
static const short svGridSlaveX [10] = {10, 130, 220, 340, 430, 550, 496, 572, 648, 724};
|
|
static const short svGridMasterY [10] = {135, 165, 195, 225, 255, 285, 315, 345, 375, 405};
|
|
static const short svGridSlaveY [10] = {105, 135, 165, 195, 225, 255, 285, 315, 345, 375};
|
|
|
|
static const char ccTip [10] [64]={
|
|
//"网络设置" 1111_ 1=allow 0=NotAllow S=BySet
|
|
"本机为网络主机,发送自检命令到从机",
|
|
"正在检查备电",
|
|
"",
|
|
"正在检查回路",
|
|
"正在检查总线盘",
|
|
"正在检查直线盘",
|
|
"正在检查回路母板",
|
|
"正在检查通讯板",
|
|
"正在检查记忆单元",
|
|
"正在查询网络从机:",
|
|
};
|
|
|
|
static const char ccState [16] [64]={
|
|
//"网络设置" 1111_ 1=allow 0=NotAllow S=BySet
|
|
"接收到从机回复信息",
|
|
"正在检查回路",
|
|
"正在检查总线盘",
|
|
"正在检查直线盘",
|
|
"正在检查回路母板",
|
|
"正在检查通讯板",
|
|
"正在检查记忆单元",
|
|
};
|
|
|
|
void TPanelSelfCheck::Init(int x1, int y1, int aW, int aH, int OwnerX, int OwnerY, u32 aColor)
|
|
{
|
|
#define CH 30 //Caption Height
|
|
unsigned short Left,Right, Top, Bottom, Width, Height, i;
|
|
Bound.SetBySize(OwnerX + x1, OwnerY + y1, aW, aH);
|
|
Left = Bound.Left +3;
|
|
Top = Bound.Top+3;
|
|
Width = aW - 7;
|
|
Height = aH - 7;
|
|
Right = Bound.Right -4;
|
|
Bottom = Bound.Bottom -4;
|
|
Caption.Init(Left,Top,Width, CH, 0, 0, clWhite, clMaroon);
|
|
Content.Set(Left, Top+CH, Right, Bottom);
|
|
|
|
SText.Init (519, Top, 280, CH, 0, 0, clWhite, clMaroon);
|
|
STextTip.Init(519, Top + 40, 280, CH, 0, 0, clWhite, clMoneyGreen);
|
|
Color = aColor;
|
|
#undef CH
|
|
|
|
AskingEnter = 1;
|
|
DoIndex = 0;
|
|
CheckDone = 0;
|
|
Checking = 0;
|
|
|
|
Caption.Border.Color = clGray;
|
|
|
|
vEdit.Init(666,140,80,36,Left,Top,1,clTeal);
|
|
vEdit.Visible = 0;
|
|
vEdit.Enable = 1;
|
|
vEdit.Selected = 1;
|
|
|
|
}
|
|
|
|
void TPanelSelfCheck::RenderBackGround(void)
|
|
{
|
|
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, Color);
|
|
}
|
|
|
|
void TPanelSelfCheck::RenderBackGround(unsigned int aClr)
|
|
{
|
|
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, aClr);
|
|
}
|
|
|
|
void TPanelSelfCheck::RenderContent(void)
|
|
{
|
|
#define FixColColor clMedGray
|
|
#define OddColor clNearMoneyGreen
|
|
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, Color);
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawSelf(void)
|
|
{
|
|
unsigned int x, y, x2, y2, w, h;
|
|
|
|
VertLineRender(Bound.Left, Bound.Top, Bound.Height -1, 0xFFFFFFFF);
|
|
VertLineRender(Bound.Right -1, Bound.Top +1, Bound.Height -2, 0xFF808080);
|
|
VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF404040);
|
|
|
|
HorizLineRender(Bound.Left, Bound.Top, Bound.Width - 1, 0xFFFFFFFF);
|
|
HorizLineRender(Bound.Left +1, Bound.Bottom -1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF404040);
|
|
|
|
x = Bound.Left +2 ;
|
|
x2 = Bound.Right -2;
|
|
y = Bound.Top +2;
|
|
y2 = Bound.Bottom - 2;
|
|
w = Bound.Width -4;
|
|
h = Bound.Height - 4;
|
|
VertLineRender (x, y, h-1, 0xFF808080);
|
|
HorizLineRender (x, y, w-1, 0xFF808080);
|
|
|
|
VertLineRender (x+1, y+1, h-2, 0xFF404040);
|
|
HorizLineRender (x+1, y+1, w-2, 0xFF404040);
|
|
|
|
VertLineRender (x2-1, y+1, h-2, 0xFFD4D0C8);
|
|
HorizLineRender (x+1, y2-1, w-2, 0xFFD4D0C8);
|
|
|
|
VertLineRender (x2, y, h, 0xFFFFFFFF);
|
|
HorizLineRender (x, y2, w, 0xFFFFFFFF);
|
|
|
|
RenderContent();
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawCaption(void)
|
|
{
|
|
Caption.Show();
|
|
DrawCaption1();
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawCaption1(void)
|
|
{
|
|
if(MainCtl.fData.Split.IsMaster)
|
|
SText.Show();
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawStateIdf_0(void)
|
|
{
|
|
//正常 离线 报警 故障 屏蔽 重码 污染 输入开 输出开
|
|
#define GS 20
|
|
#define TS 60
|
|
|
|
unsigned int aLeft, aTop, aTopR;
|
|
|
|
aTop = Content.Top +4;
|
|
aTopR = Content.Top +6;
|
|
aLeft = Content.Left + 20;
|
|
|
|
RectFillRender( aLeft, aTopR, aLeft + 20, aTopR + 18, dfColor_NoExist);
|
|
aLeft += GS;
|
|
TextRender_string24(aLeft,aTop,clNearBlack, "不存在");
|
|
aLeft += TS + 30;
|
|
|
|
RectFillRender( aLeft, aTopR, aLeft + 20, aTopR + 18, dfColor_WaitCheck);
|
|
aLeft += GS;
|
|
TextRender_string24(aLeft,aTop,clNearBlack, "待检");
|
|
aLeft += TS;
|
|
|
|
RectFillRender( aLeft, aTopR, aLeft + 20, aTopR + 18, dfColor_OnCheck);
|
|
aLeft += GS;
|
|
TextRender_string24(aLeft,aTop,clNearBlack, "在检");
|
|
aLeft += TS;
|
|
|
|
RectFillRender( aLeft, aTopR, aLeft + 20, aTopR + 18, dfColor_CheckDone);
|
|
aLeft += GS;
|
|
TextRender_string24(aLeft,aTop,clNearBlack, "完成");
|
|
aLeft += TS;
|
|
|
|
#undef GS
|
|
#undef TS
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawOngoGrid(void)
|
|
{
|
|
//正常 离线 报警 故障 屏蔽 重码 污染 输入开 输出开
|
|
#define GS 20
|
|
#define TS 60
|
|
|
|
unsigned int i, aLeft, aTop, aClr;
|
|
|
|
aTop = Content.Top +30;
|
|
aLeft = Content.Left + 6;
|
|
|
|
TextRender_string24(aLeft,aTop,clNearBlack, "控制器1-64");
|
|
|
|
aLeft += 130;
|
|
for(i=0; i<64; i++){
|
|
if(Machine[i].Exist){
|
|
if(Machine[i].CheckState == 0){
|
|
aClr = dfColor_WaitCheck;
|
|
}else
|
|
if(Machine[i].CheckState == 1){
|
|
aClr = dfColor_OnCheck;
|
|
}else
|
|
if(Machine[i].CheckState == 2){
|
|
aClr = dfColor_CheckDone;
|
|
}
|
|
}else{
|
|
aClr = dfColor_NoExist;
|
|
}
|
|
RectFillRender( aLeft, aTop, aLeft + 9, aTop + 22, aClr);
|
|
aLeft = aLeft + 10;
|
|
}
|
|
|
|
#undef GS
|
|
#undef TS
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawFixText()
|
|
{
|
|
const short *aL,*aT;
|
|
int i;
|
|
if(MainCtl.fData.Split.IsMaster){
|
|
aL = svGridMasterX;
|
|
aT = svGridMasterY;
|
|
}else{
|
|
aL = svGridSlaveX;
|
|
aT = svGridSlaveY;
|
|
}
|
|
|
|
TextRender_string24(aL[0]+30,aT[0],clNearBlack, "登记数量");
|
|
TextRender_string24(aL[2]+30,aT[0],clNearBlack, "离线数量");
|
|
TextRender_string24(aL[4]+30,aT[0],clNearBlack, "故障数量");
|
|
|
|
for(i=0; i<3; i++){
|
|
TextRender_string24(aL[i*2],aT[1],clNearBlack, "备电");
|
|
TextRender_string24(aL[i*2],aT[2],clNearBlack, "存储");
|
|
TextRender_string24(aL[i*2],aT[3],clNearBlack, "通讯板");
|
|
TextRender_string24(aL[i*2],aT[4],clNearBlack, "回路");
|
|
TextRender_string24(aL[i*2],aT[5],clNearBlack, "总线盘");
|
|
TextRender_string24(aL[i*2],aT[6],clNearBlack, "直线盘");
|
|
TextRender_string24(aL[i*2],aT[7],clNearBlack, "回路母板");
|
|
TextRender_string24(aL[i*2],aT[8],clNearBlack, "外联动卡");
|
|
TextRender_string24(aL[i*2],aT[9],clNearBlack, "终端设备");
|
|
}
|
|
}
|
|
|
|
void TPanelSelfCheck::DrawList(void)
|
|
{
|
|
const short *aL,*aT;
|
|
|
|
if(MainCtl.fData.Split.IsMaster){
|
|
aL = svGridMasterX;
|
|
aT = svGridMasterY;
|
|
}else{
|
|
aL = svGridSlaveX;
|
|
aT = svGridSlaveY;
|
|
ViewIndex = MainCtl.fData.Split.MyNum;
|
|
}
|
|
|
|
if(ViewIndex < 64){
|
|
if(Machine[ViewIndex].CheckState == 2){
|
|
TextDigitRender3Right24(aL[1], aT[1], clNearBlack, Color, Machine[ViewIndex].Registed.Bat);
|
|
TextDigitRender3Right24(aL[1], aT[2], clNearBlack, Color, Machine[ViewIndex].Registed.Mem);
|
|
TextDigitRender3Right24(aL[1], aT[3], clNearBlack, Color, Machine[ViewIndex].Registed.CommBoardCount);
|
|
TextDigitRender3Right24(aL[1], aT[4], clNearBlack, Color, Machine[ViewIndex].Registed.CircultCount);
|
|
TextDigitRender3Right24(aL[1], aT[5], clNearBlack, Color, Machine[ViewIndex].Registed.HandCtlCount);
|
|
TextDigitRender3Right24(aL[1], aT[6], clNearBlack, Color, Machine[ViewIndex].Registed.DirectCtlCount);
|
|
TextDigitRender3Right24(aL[1], aT[7], clNearBlack, Color, Machine[ViewIndex].Registed.MotherBoardCount);
|
|
TextDigitRender3Right24(aL[1], aT[8], clNearBlack, Color, Machine[ViewIndex].Registed.ExLinkBoardCount);
|
|
TextDigitRender3Right24(aL[1], aT[9], clNearBlack, Color, Machine[ViewIndex].Registed.EpDevCount);
|
|
|
|
TextDigitRender3Right24(aL[3], aT[1], clNearBlack, Color, Machine[ViewIndex].Offline.Bat);
|
|
TextDigitRender3Right24(aL[3], aT[2], clNearBlack, Color, Machine[ViewIndex].Offline.Mem);
|
|
TextDigitRender3Right24(aL[3], aT[3], clNearBlack, Color, Machine[ViewIndex].Offline.CommBoardCount);
|
|
TextDigitRender3Right24(aL[3], aT[4], clNearBlack, Color, Machine[ViewIndex].Offline.CircultCount);
|
|
TextDigitRender3Right24(aL[3], aT[5], clNearBlack, Color, Machine[ViewIndex].Offline.HandCtlCount);
|
|
TextDigitRender3Right24(aL[3], aT[6], clNearBlack, Color, Machine[ViewIndex].Offline.DirectCtlCount);
|
|
TextDigitRender3Right24(aL[3], aT[7], clNearBlack, Color, Machine[ViewIndex].Offline.MotherBoardCount);
|
|
TextDigitRender3Right24(aL[3], aT[8], clNearBlack, Color, Machine[ViewIndex].Offline.ExLinkBoardCount);
|
|
TextDigitRender3Right24(aL[3], aT[9], clNearBlack, Color, Machine[ViewIndex].Offline.EpDevCount);
|
|
|
|
TextDigitRender3Right24(aL[5], aT[1], clNearBlack, Color, Machine[ViewIndex].Fault.Bat);
|
|
TextDigitRender3Right24(aL[5], aT[2], clNearBlack, Color, Machine[ViewIndex].Fault.Mem);
|
|
TextDigitRender3Right24(aL[5], aT[3], clNearBlack, Color, Machine[ViewIndex].Fault.CommBoardCount);
|
|
TextDigitRender3Right24(aL[5], aT[4], clNearBlack, Color, Machine[ViewIndex].Fault.CircultCount);
|
|
TextDigitRender3Right24(aL[5], aT[5], clNearBlack, Color, Machine[ViewIndex].Fault.HandCtlCount);
|
|
TextDigitRender3Right24(aL[5], aT[6], clNearBlack, Color, Machine[ViewIndex].Fault.DirectCtlCount);
|
|
TextDigitRender3Right24(aL[5], aT[7], clNearBlack, Color, Machine[ViewIndex].Fault.MotherBoardCount);
|
|
TextDigitRender3Right24(aL[5], aT[8], clNearBlack, Color, Machine[ViewIndex].Fault.ExLinkBoardCount);
|
|
TextDigitRender3Right24(aL[5], aT[9], clNearBlack, Color, Machine[ViewIndex].Fault.EpDevCount);
|
|
}
|
|
}
|
|
}
|
|
|
|
void TPanelSelfCheck::Show(void)
|
|
{
|
|
DrawSelf();
|
|
Caption.Enable = 1;
|
|
|
|
LoadData();
|
|
|
|
if(MainCtl.fData.Split.IsMaster){
|
|
TMyString::sFromStr("组网系统自检-本机为网络主机", Caption.Text);
|
|
}else{
|
|
TMyString::sFromStr("本机系统自检", Caption.Text);
|
|
}
|
|
TMyString::sFromStr("选定机器号查看", SText.Text);
|
|
DrawCaption();
|
|
if(MainCtl.fData.Split.IsMaster){
|
|
DrawStateIdf_0();
|
|
DrawOngoGrid();
|
|
TextRender_string24(vEdit.Bound.Left - 20,vEdit.Bound.Top - 30,clNearBlack, "控制器序号");
|
|
vEdit.Str.FromInt(MainCtl.fData.Split.MyNum);
|
|
vEdit.Show();
|
|
HorizLineRender(10, svGridMasterY[0] - 6, 780, clGray);
|
|
VertLineRender(svGridMasterX[1] + 80, svGridMasterY[0]-5, 308, clGray);
|
|
VertLineRender(svGridMasterX[3] + 80, svGridMasterY[0]-5, 308, clGray);
|
|
VertLineRender(svGridMasterX[5] + 80, svGridMasterY[0]-5, 308, clGray);
|
|
}else{
|
|
VertLineRender(svGridMasterX[1] + 80, svGridSlaveY[0], 350, clGray);
|
|
VertLineRender(svGridMasterX[3] + 80, svGridSlaveY[0], 350, clGray);
|
|
VertLineRender(svGridMasterX[5] + 80, svGridSlaveY[0], 350, clGray);
|
|
}
|
|
|
|
DrawFixText();
|
|
DrawList();
|
|
}
|
|
|
|
void TPanelSelfCheck::ReDraw(void)
|
|
{
|
|
Caption.Enable = 1;
|
|
DrawCaption();
|
|
if(MainCtl.fData.Split.IsMaster){
|
|
DrawStateIdf_0();
|
|
DrawOngoGrid();
|
|
}
|
|
|
|
DrawList();
|
|
}
|
|
|
|
void TPanelSelfCheck::LoadData(void)
|
|
{
|
|
int i;
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
Machine[i].Exist = MainCtl.fData.Split.ExistSlaveTabel[i];
|
|
}
|
|
if( (MainCtl.fData.Split.MyNum >0) && (MainCtl.fData.Split.MyNum < 65) ){
|
|
Machine[MainCtl.fData.Split.MyNum-1].Exist = 1;
|
|
}
|
|
}
|
|
|
|
TGuiMsgReturn TPanelSelfCheck::KeyIn(unsigned char aKey)
|
|
{
|
|
int ind, i, F;
|
|
TGuiMsgReturn aMsg = guiMsgNone;
|
|
TGuiMsgReturn MBoxMsg = guiMsgNone;
|
|
//Up or Down One Index___________________
|
|
if(AskingEnter){
|
|
MBoxMsg = MessageBox.KeyIn(aKey);
|
|
if(MBoxMsg == guiMsgOkAndReturn){
|
|
AskingEnter = 0;
|
|
Checking = 1;
|
|
Show();
|
|
return guiMsgNone;
|
|
}
|
|
if(MBoxMsg == guiMsgReturn){
|
|
return guiMsgReturn;
|
|
}else{
|
|
return guiMsgNone;
|
|
}
|
|
}else{
|
|
switch(aKey){
|
|
case '0':
|
|
case '1':
|
|
case '2':
|
|
case '3':
|
|
case '4':
|
|
case '5':
|
|
case '6':
|
|
case '7':
|
|
case '8':
|
|
case '9':
|
|
case VK_LEFT:
|
|
case VK_RIGHT:
|
|
case VK_DELETE:
|
|
vEdit.KeyIn(aKey);
|
|
vEdit.Show();
|
|
break;
|
|
case VK_UP:
|
|
F = 0;
|
|
ind = vEdit.Str.ToInteger();
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
ind--;
|
|
if(ind < 1)ind = 64;
|
|
if(Machine[ind-1].Exist){
|
|
vEdit.Str.FromInt(ind);
|
|
F = 1;
|
|
break;
|
|
}
|
|
}
|
|
if(F){
|
|
vEdit.Show();
|
|
}
|
|
break;
|
|
case VK_DOWN:
|
|
F = 0;
|
|
ind = vEdit.Str.ToInteger();
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
ind++;
|
|
if(ind > 64)ind = 1;
|
|
if(Machine[ind-1].Exist){
|
|
vEdit.Str.FromInt(ind);
|
|
F = 1;
|
|
break;
|
|
}
|
|
}
|
|
if(F){
|
|
vEdit.Show();
|
|
}
|
|
break;
|
|
case VK_TAB:
|
|
|
|
break;
|
|
case VK_EXECUTE:
|
|
break;
|
|
}
|
|
}
|
|
if(aKey == VK_RETURN){
|
|
aMsg = guiMsgReturn;
|
|
}
|
|
//____________________________________________________________________<- List View
|
|
|
|
return aMsg;
|
|
}
|
|
|
|
void TPanelSelfCheck::ShowAskingEnter()
|
|
{
|
|
MessageBox.Init(0, 36, 800, 406, 0, 0, clMoneyGreen) ;
|
|
MessageBox.SetBtnOkCancel();
|
|
MessageBox.SetReturnValue(guiMsgNone, guiMsgOkAndReturn, guiMsgReturn, guiMsgNone);
|
|
MessageBox.Show();
|
|
MessageBox.DoWait4EnterSelfCheck();
|
|
AskingEnter = 1;
|
|
}
|
|
|
|
void TPanelSelfCheck::DoSequence()
|
|
{
|
|
if(Checking == 1){
|
|
//if(ccTip)
|
|
}
|
|
}
|
|
|
|
void TPanelSelfCheck::Task1000Ms()
|
|
{
|
|
|
|
}
|
|
|