📄 dialog.c
字号:
/*
* Filename : dialog.c
* Author : Li Dawen
* Copyright (c): Coslight Group .co
* Create Date : 2002.04.27
* Version : 0.1.0
*/
#include "config.h"
//
//#include "includes.h"
//#include "dialog.h"
//#include "mcugui.h"
//#include "module.h"
//#include "lcd.h"
//#include "resource.h"
char DlgLineBuf[60];
uchar DlgTempBuf[600];
DLGPAGE Dpage;
/****************************************************************************/
void ExampleProc(uchar msg_type, uchar msg_data)
{
switch (msg_type)
{
case MSG_KEY:
switch (msg_data)
{
case KEY_UP: PageNumPrev(); break;
case KEY_DOWN: PageNumNext(); break;
case KEY_LEFT: PageNumHome(); break;
case KEY_RIGHT: PageNumEnd(); break;
case KEY_ESC: PostMsg(MSG_CLOSE, 0);; break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_INIT: break;
case MSG_LOAD: break;
case MSG_CLOSE: break;
case MSG_SCROLLUP: break;
case MSG_SCROLLDOWN: break;
case MSG_FOCUSMOVE: break;
case MSG_COMMAND: break;
case MSG_PAINT: break;
case MSG_SAVE: break;
case MSG_DLGINIT: break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void DrawAxis(void)
{
int x, y, i, len;
int left = 0, bottom = 56;
char buf[3];
DrawLedText(4, 0, "260V/50A", FONT_SMALL);
DrawLedText(4, bottom-6, "180V/0A", FONT_SMALL);
//x line
for (x = 0; x < 240; x++)
{
y = bottom;
LcdPutxy(x, y, 1);
}
//x >
LcdPutxy(238, bottom+1, 1);
LcdPutxy(238, bottom-1, 1);
// LcdPutxy(237, bottom+1, 1);
// LcdPutxy(237, bottom-1, 1);
// LcdPutxy(237, bottom+2, 1);
// LcdPutxy(237, bottom-2, 1);
//y line
for (y = 0; y < 64; y++)
{
x = left;
LcdPutxy(x, y, 1);
}
//y ^
LcdPutxy(left-1, 1, 1);
LcdPutxy(left+1, 1, 1);
// LcdPutxy(left-1, 2, 1);
// LcdPutxy(left+1, 2, 1);
// LcdPutxy(left-2, 2, 1);
// LcdPutxy(left+2, 2, 1);
for (x = left, i = 0; x < 240; x++, i++)
{
if ((i%20 == 0) && (i != 0))
{
len = fix2s(i/10, 0x20, buf);
left_nrm(buf, len);
DrawLedText(x-4, bottom+3, buf, FONT_SMALL);
}
if (i%10 == 0)
{
LcdPutxy(x, bottom+1, 1);
}
if (i%20 == 0)
{
LcdPutxy(x, bottom+2, 1);
}
}
//data line
for (x = left, i = 0; x < 240; x++, i++)
{
y = i%54;
// LcdPutxy(x, y, 1);
}
}
/****************************************************************************/
void Batt24Proc(uchar msg_type, uchar msg_data)
{
int x, y;
Gui.win_status|= ~WS_EDITON;
switch (msg_type)
{
case MSG_INIT: break;
case MSG_PAINT:
LcdCursor(0, 0);
LcdCursorSize(0);
LcdClearText();
DrawAxis();
msg_type = 0;
msg_data = 0;
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void MainWinProc(uchar msg_type, uchar msg_data)
{
switch (msg_type)
{
case MSG_INIT: break;
case MSG_KEY:
if (msg_data == KEY_OK)
{
LoadWin(11);
msg_type = 0;
msg_data = 0;
}
if (msg_data == KEY_HELP)
{
// HelpBox(HelpText[0], HelpText[0], 0);//提示错误所以注销
msg_type = 0;
msg_data = 0;
}
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void DlgProc(uchar msg_type, uchar msg_data)
{
switch (msg_type)
{
case MSG_INIT: break;
case MSG_PAINT: PageNumPut(); break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void ZlmkViewProc(uchar msg_type, uchar msg_data)
{
int i, value, y;
switch (msg_type)
{
case MSG_INIT:
Dpage.page_size = 4;
Dpage.max_size = GetModuleCount(MODULE_CDMK);
if (Dpage.max_size)
{
PageNumMax((Dpage.max_size-1)/Dpage.page_size);
}
else
{
PageNumMax(0);
}
break;
case MSG_KEY:
switch (msg_data)
{
case KEY_UP: PageNumPrev(); break;
case KEY_DOWN: PageNumNext(); break;
case KEY_LEFT: PageNumHome(); break;
case KEY_RIGHT: PageNumEnd(); break;
case KEY_ESC: PostMsg(MSG_CLOSE, 0);; break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_FOCUSMOVE:
switch (msg_data)
{
case FOCUS_HOME: PageNumHome(); break;
case FOCUS_END: PageNumEnd(); break;
case FOCUS_PREV: PageNumPrev(); break;
case FOCUS_NEXT: PageNumNext(); break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_PAINT:
Dpage.num = PageNum();
Dpage.begin_posit = Dpage.num * Dpage.page_size;
Dpage.end_posit = (Dpage.num+1) * Dpage.page_size;
if (Dpage.end_posit > Dpage.max_size)
Dpage.end_posit = Dpage.max_size;
for (y = 0, i = Dpage.begin_posit; i < Dpage.end_posit; i++)
ShowCdmk(0, 2*y++, i);
PageNumPut();
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
/* 显示整流模块*/
void ShowCdmk(int x, int y, int module)
{
int value, len;
x = x;
len = TextFormat(&DlgLineBuf[0], "%2d", module+1);
TextOut(0, y, &DlgLineBuf[0], FONT_DEFAULT);
value = GetModuleData(MODULE_CDMK|DATA_AI, 0, module);
len = TextFormat(&DlgLineBuf[0], "%3.1dV", value);
left_nrm(&DlgLineBuf[0], len);
TextOut(3, y, &DlgLineBuf[0], FONT_DEFAULT);
value = GetModuleData(MODULE_CDMK|DATA_AI, 1, module);
len = TextFormat(&DlgLineBuf[0], "%2.1dA", value);
left_nrm(&DlgLineBuf[0], len);
TextOut(10, y, &DlgLineBuf[0], FONT_DEFAULT);
value = GetModuleData(MODULE_CDMK|DATA_AI, 3, module);
len = TextFormat(&DlgLineBuf[0], "%3d%%", value);
left_nrm(&DlgLineBuf[0], len);
TextOut(16, y, &DlgLineBuf[0], FONT_DEFAULT);
value = GetModuleData(MODULE_CDMK|DATA_DI, 1, module);
GetItem(value, "自动\n手动", &DlgLineBuf[0]);
TextOut(21, y, &DlgLineBuf[0], FONT_DEFAULT);
value = GetModuleData(MODULE_CDMK|DATA_DI, 0, module);
GetItem(value, "/开\n/关", &DlgLineBuf[0]);
TextOut(25, y, &DlgLineBuf[0], FONT_DEFAULT);
}
/****************************************************************************/
void JymkViewProc(uchar msg_type, uchar msg_data)
{
int i, value, y;
switch (msg_type)
{
case MSG_INIT:
Dpage.page_size = 4;
Dpage.max_size = GetModuleCount(MODULE_JYMK);
value = GetModuleData(MODULE_JYMK|DATA_MKCFG, 3, 0);
if (Dpage.max_size)
{
PageNumMax((Dpage.max_size-1)/Dpage.page_size);
}
else
{
PageNumMax(0);
}
break;
case MSG_KEY:
switch (msg_data)
{
case KEY_UP: PageNumPrev(); break;
case KEY_DOWN: PageNumNext(); break;
case KEY_LEFT: PageNumHome(); break;
case KEY_RIGHT: PageNumEnd(); break;
case KEY_ESC: PostMsg(MSG_CLOSE, 0);; break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_FOCUSMOVE:
switch (msg_data)
{
case FOCUS_HOME: PageNumHome(); break;
case FOCUS_END: PageNumEnd(); break;
case FOCUS_PREV: PageNumPrev(); break;
case FOCUS_NEXT: PageNumNext(); break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_PAINT:
Dpage.num = PageNum();
Dpage.begin_posit = Dpage.num * Dpage.page_size;
Dpage.end_posit = (Dpage.num+1) * Dpage.page_size;
if (Dpage.end_posit > Dpage.max_size)
Dpage.end_posit = Dpage.max_size;
for (y = 0, i = Dpage.begin_posit; i < Dpage.end_posit; i++)
ShowCdmk(0, 2*y++, i);
PageNumPut();
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
/* 显示电池*/
void ShowBatt(int x, int y, int index, int module)
{
int value, len;
x = x;
len = TextFormat(&DlgLineBuf[0], "%2d", index+1);
TextOut(x, y, &DlgLineBuf[0], FONT_SMALL);
value = GetModuleData(MODULE_DDMK|DATA_AI, index, module);
len = TextFormat(&DlgLineBuf[0], "%2.3d", value);
left_nrm(&DlgLineBuf[0], len);
TextOut(x+3, y, &DlgLineBuf[0], FONT_SMALL);
//只有电导型显示电导
if (GetModuleData(MODULE_DDMK|DATA_MKCFG, 4, module))
{
value = GetModuleData(MODULE_DDMK|DATA_AI, 24+index*2, module);
len = TextFormat(&DlgLineBuf[0], "%4d", value);
left_nrm(&DlgLineBuf[0], len);
TextOut(x, y, &DlgLineBuf[0], FONT_SMALL);
}
}
/****************************************************************************/
/* 显示绝缘模块支路*/
/* 显示支路*/
void ShowJymkZl(int x, int y, int index, int module)
{
int value, len;
len = TextFormat(&DlgLineBuf[0], "%2d", index+1);
TextOut(0, y, &DlgLineBuf[0], FONT_SMALL);
value = GetModuleData(MODULE_JYMK|DATA_AI, index*2, module);
TextFormat(&DlgLineBuf[0], "+%3dK", value);
TextOut(x+3, y, &DlgLineBuf[0], FONT_SMALL);
value = GetModuleData(MODULE_JYMK|DATA_AI, index*2+1, module);
TextFormat(&DlgLineBuf[0], "-%3dK", value);
TextOut(x+8, y, &DlgLineBuf[0], FONT_SMALL);
}
/****************************************************************************/
void NewAlmProc(uchar msg_type, uchar msg_data)
{
int i;
switch (msg_type)
{
case MSG_INIT:
i = GetNewAlarmCount();
Dpage.max_size = i;
if (i == 0)
PageNumMax(i);
else
PageNumMax(i-1);
PageNumEnd();
break;
case MSG_KEY:
switch (msg_data)
{
case KEY_UP: PageNumPrev(); break;
case KEY_DOWN: PageNumNext(); break;
case KEY_LEFT: PageNumHome(); break;
case KEY_RIGHT: PageNumEnd(); break;
case KEY_ESC: PostMsg(MSG_CLOSE, 0);; break;
}
LcdCls();
msg_type = 0;
msg_data = 0;
break;
case MSG_PAINT:
i = GetNewAlarmCount();
if (Dpage.max_size != i)
{
Dpage.max_size = i;
LcdCls();
}
if (i == 0)
{
PageNumMax(i);
LcdCls();
TextOut(8, 2, "无当前告警", 0);
PostMsg(MSG_CLOSE, 0);
}
else
{
PageNumMax(i-1);
ShowNewAlm(PageNum());
}
PageNumPut();
break;
case MSG_FOCUSMOVE:
switch (msg_data)
{
case FOCUS_HOME: PageNumHome(); break;
case FOCUS_END: PageNumEnd(); break;
case FOCUS_PREV: PageNumPrev(); break;
case FOCUS_NEXT: PageNumNext(); break;
}
msg_type = 0;
msg_data = 0;
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void ShowNewAlm(int index)
{
int i;
TextOut(0, 0, "序号", 0);
TextOut(6, 0, NewAlarmStr(DlgLineBuf, index, 0), 0);
TextOut(0, 2, "类型", 0);
for (i = 0; i < 24; i++)
DlgLineBuf[i] = ' ';
DlgLineBuf[i] = '\0';
TextOut(6, 2, DlgLineBuf, 0);
TextOut(6, 2, NewAlarmStr(DlgLineBuf, index, 1), 0);
TextOut( 0, 4, "开始", 0);
TextOut( 6, 4, NewAlarmStr(DlgLineBuf, index, 2), 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -