📄 dialog.c
字号:
// TextOut( 0, 6, "结束", 0);
// TextOut( 6, 6, NewAlarmStr(DlgLineBuf, Gui.page, 3), 0);
}
/****************************************************************************/
void OldAlmProc(uchar msg_type, uchar msg_data)
{
int i = 1;
switch (msg_type)
{
case MSG_INIT:
i = GetOldAlarmCount();
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 = GetOldAlarmCount();
if (Dpage.max_size != i)
{
Dpage.max_size = i;
PostMsg(MSG_INIT, 0);
}
if (i)
{
PageNumMax(i-1);
TextOut(0, 0, "序号", 0);
TextOut(6, 0, OldAlarmStr(DlgLineBuf, Gui.page, 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, OldAlarmStr(DlgLineBuf, Gui.page, 1), 0);
TextOut( 0, 4, "开始", 0);
TextOut( 6, 4, OldAlarmStr(DlgLineBuf, Gui.page, 2), 0);
TextOut( 0, 6, "结束", 0);
TextOut( 6, 6, OldAlarmStr(DlgLineBuf, Gui.page, 3), 0);
}
else
{
PageNumMax(i);
TextOut(8, 2, "无历史告警", 0);
}
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;
}
//load old alarm from epprom
msg_type = 0;
msg_data = 0;
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
/****************************************************************************/
int ComIbufsize(uchar port)
{
return 5;
}
int ComIcount(uchar port)
{
return 5;//Com[port].icount;
}
void PortibufProc(uchar msg_type, uchar msg_data)
{
int i, j, y;
int combuf_size, combuf_count;
const CONTROL *ctrl;
ctrl = &Win[Gui.active_win].controls[Gui.active_ctrl];
switch (msg_type)
{
case MSG_INIT:
Dpage.sync_stop = 0;
LcdCursorSize(8);
Dpage.module = GetGuiModule();
combuf_size = ComIbufsize(0);
Dpage.h_size = (LCD_HSIZE-1);
Dpage.w_size = (LCD_WSIZE/2);
Dpage.page_size = (LCD_WSIZE/2)*(LCD_HSIZE-1);
PageNumMax(combuf_size/Dpage.page_size);
break;
case MSG_KEY:
switch (msg_data)
{
case KEY_OK: Dpage.sync_stop = !Dpage.sync_stop; break;
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:
break;
case MSG_PAINT:
combuf_size = ComIbufsize(0);
combuf_count = ComIcount(0);
Dpage.num = PageNum();
Dpage.begin_posit = Dpage.page_size * Dpage.num;
Dpage.end_posit = Dpage.begin_posit + Dpage.page_size;
if (Dpage.end_posit > combuf_size)
{
Dpage.end_posit = combuf_size;
}
// ctrl->data_type is com
// ctrl->data_index is potr buf index
if (Dpage.sync_stop)
{
TextOut(5, 0, "PAUSE", FONT_SMALL);
}
else
{
TextOut(5, 0, "IN ", FONT_SMALL);
Dpage.cursor_posit = 5;//ComSyncIbuf(Dpage.module, &DlgTempBuf[0]);
Dpage.cursor_posit = Dpage.cursor_posit & 0x7FFF;
}
if ( (Dpage.cursor_posit >= Dpage.begin_posit) && (Dpage.cursor_posit <= Dpage.end_posit) )
{
Dpage.data1 = Dpage.cursor_posit - Dpage.begin_posit;
LcdCursorSize(8);
LcdCursor(2 * (Dpage.data1%(Dpage.w_size)) ,1 + Dpage.data1/Dpage.w_size);
}
else
{
LcdCursorSize(0);
}
/* COMX IN CURSOR:BEGIN~END/SIZE 0/540*/
TextOut(0, 0, "COM", FONT_SMALL);
fix2s(Dpage.module+1, 0x10, &DlgLineBuf[0]);
TextOut(3, 0, &DlgLineBuf[0], FONT_SMALL);
fix2s(Dpage.cursor_posit, 0x30, &DlgLineBuf[0]);
TextOut(11, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(14, 0, ":", FONT_SMALL);
fix2s(Dpage.begin_posit+1, 0x30, &DlgLineBuf[0]);
TextOut(15, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(18, 0, "~", FONT_SMALL);
fix2s(Dpage.end_posit, 0x30, &DlgLineBuf[0]);
TextOut(19, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(22, 0, "/", FONT_SMALL);
fix2s(combuf_size, 0x30, &DlgLineBuf[0]);
TextOut(23, 0, &DlgLineBuf[0], FONT_SMALL);
for (i = Dpage.begin_posit, y = 1, j = 0; i < Dpage.end_posit; i++)
{
b2hex(DlgTempBuf[i], &DlgLineBuf[j]);
j += 2;
if (j > (LCD_WSIZE - 1))
{
DlgLineBuf[j] = '\0';
TextOut(0, y, &DlgLineBuf[0], FONT_SMALL);
y++;
j = 0;
}
}
DlgLineBuf[j] = '\0';
if(j)
{
TextOut(0, y, &DlgLineBuf[0], FONT_SMALL);
}
// msg_type = 0;
// msg_data = 0;
PageNumPut();
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
void PortobufProc(uchar msg_type, uchar msg_data)
{
int i, j, y;
int combuf_size, combuf_count;
const CONTROL *ctrl;
ctrl = &Win[Gui.active_win].controls[Gui.active_ctrl];
switch (msg_type)
{
case MSG_INIT:
Dpage.sync_stop = 0;
LcdCursorSize(8);
Dpage.module = GetGuiModule();
combuf_size = 0;//ComObufsize(0);
Dpage.h_size = (LCD_HSIZE-1);
Dpage.w_size = (LCD_WSIZE/2);
Dpage.page_size = (LCD_WSIZE/2)*(LCD_HSIZE-1);
PageNumMax(combuf_size/Dpage.page_size);
break;
case MSG_KEY:
switch (msg_data)
{
case KEY_OK: Dpage.sync_stop = !Dpage.sync_stop; break;
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:
break;
case MSG_PAINT:
combuf_size = 0;//ComObufsize(0);
combuf_count = 0;//ComOcount(0);
Dpage.num = PageNum();
Dpage.begin_posit = Dpage.page_size * Dpage.num;
Dpage.end_posit = Dpage.begin_posit + Dpage.page_size;
if (Dpage.end_posit > combuf_size)
{
Dpage.end_posit = combuf_size;
}
// ctrl->data_type is com
// ctrl->data_index is potr buf index
if (Dpage.sync_stop)
{
TextOut(5, 0, "PAUSE", FONT_SMALL);
}
else
{
TextOut(5, 0, "OUT ", FONT_SMALL);
Dpage.cursor_posit = 5;//ComSyncObuf(Dpage.module, &DlgTempBuf[0]);
Dpage.cursor_posit = Dpage.cursor_posit & 0x7FFF;
}
if ( (Dpage.cursor_posit >= Dpage.begin_posit) && (Dpage.cursor_posit <= Dpage.end_posit) )
{
Dpage.data1 = Dpage.cursor_posit - Dpage.begin_posit;
LcdCursorSize(8);
LcdCursor(2 * (Dpage.data1%(Dpage.w_size)) ,1 + Dpage.data1/Dpage.w_size);
}
else
{
LcdCursorSize(0);
}
/* COMX OUT CURSOR:BEGIN~END/SIZE 0/540*/
TextOut(0, 0, "COM", FONT_SMALL);
fix2s(Dpage.module+1, 0x10, &DlgLineBuf[0]);
TextOut(3, 0, &DlgLineBuf[0], FONT_SMALL);
fix2s(Dpage.cursor_posit, 0x30, &DlgLineBuf[0]);
TextOut(11, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(14, 0, ":", FONT_SMALL);
fix2s(Dpage.begin_posit+1, 0x30, &DlgLineBuf[0]);
TextOut(15, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(18, 0, "~", FONT_SMALL);
fix2s(Dpage.end_posit, 0x30, &DlgLineBuf[0]);
TextOut(19, 0, &DlgLineBuf[0], FONT_SMALL);
TextOut(22, 0, "/", FONT_SMALL);
fix2s(combuf_size, 0x30, &DlgLineBuf[0]);
TextOut(23, 0, &DlgLineBuf[0], FONT_SMALL);
for (i = Dpage.begin_posit, y = 1, j = 0; i < Dpage.end_posit; i++)
{
b2hex(DlgTempBuf[i], &DlgLineBuf[j]);
j += 2;
if (j > (LCD_WSIZE - 1))
{
DlgLineBuf[j] = '\0';
TextOut(0, y, &DlgLineBuf[0], FONT_SMALL);
y++;
j = 0;
}
}
DlgLineBuf[j] = '\0';
if(j)
{
TextOut(0, y, &DlgLineBuf[0], FONT_SMALL);
}
// msg_type = 0;
// msg_data = 0;
PageNumPut();
break;
default: break;
}
DefaultWinProc(msg_type, msg_data);
}
/****************************************************************************/
/****************************************************************************/
void CommandProc(uchar type)
{
int newpassword;
int renewpassword;
switch (type)
{
case 0:
PostMsg(MSG_CLOSE, 0);
break;
case 1://清除历史告警
if (MsgBox("确认操作","清除历史告警?", MB_OKCANCEL))
{
AlarmClear();
MsgBox("系统信息","历史告警清除完成", MB_OK);
}
break;
case 2://初始化
if (MsgBox("确认操作","系统参数初始化将为默认值", MB_OKCANCEL))
{
//SPutB(0, 'X');
// InitModule();
MsgBox("系统信息","操作完成,按复位键", MB_OK);
}
break;
case 3://修改密码
newpassword = GetModuleData(MODULE_JKMK|DATA_TEMP, 21, 0);
renewpassword = GetModuleData(MODULE_JKMK|DATA_TEMP, 22, 0);
if (newpassword == 0)
{
MsgBox("系统信息","密码不能为 0 ", MB_OK);
break;
}
if (newpassword == renewpassword)
{
MsgBox("系统信息","密码修改成功", MB_OK);
SetModuleData(MODULE_JKMK|DATA_MKCFG, 39, 0, newpassword);
SaveModuleData(MODULE_JKMK|DATA_MKCFG, 39, 0);
PostMsg(MSG_CLOSE, 0);
}
else
{
MsgBox("系统信息","两次输入新密码不同,请重新输入", MB_OK);
}
break;
case 4:
if (MsgBox("确认操作","清除用户密码?", MB_OKCANCEL))
{
SetModuleData(MODULE_JKMK|DATA_MKCFG, 39, 0, 0);
SaveModuleData(MODULE_JKMK|DATA_MKCFG, 39, 0);
MsgBox("系统信息","用户密码清除成功", MB_OK);
}
break;
case 5:
PostMsg(MSG_CLOSE, 0);
break;
case 6:
break;
case 7: //载入备份
if (MsgBox("确认操作","载入系统参数备份", MB_OKCANCEL))
{
SaveModuleBak();
MsgBox("系统信息","操作完成", MB_OK);
}
break;
case 8: //保存备份
if (MsgBox("确认操作","系统参数保存到备份", MB_OKCANCEL))
{
LoadModuleBak();
MsgBox("系统信息","操作完成", MB_OK);
}
case 9: //保存备份为当前参数
if (MsgBox("确认操作","保存全部系统参数", MB_OKCANCEL))
{
SaveModule();
MsgBox("系统信息","操作完成", MB_OK);
}
break;
break;
case 10:
// TranFrameTest(GetGuiModule());
MsgBox("系统信息","测试报文已发送,请查看接收报文", MB_OK);
break;
case 11:
// ComReset();
// ComClearIbuf(GetGuiModule());
// ComClearObuf(GetGuiModule());
MsgBox("系统信息","缓冲区清除成功", MB_OK);
break;
default:break;
}
}
/****************************************************************************/
/*
0 系统延时
1 屏幕保护
2 均充周期时间
3 均充保护时间
4 稳流均充时间
5 转均充延时
6 电池测试时间
7 放电时间
*/
void TimeOut(uchar index)
{
index =index;
switch (index)
{
case 0:
break;
case 1:/*屏幕保护*/
LcdOffLamp();
break;
case 2:/*均充周期*/
break;
case 3:/*均充保护周期*/
break;
case 4:/* 稳流均充时间*/
break;
case 5:/* 转均充延时*/
break;
case 6:/* 放电测试时间*/
break;
}
}
/****************************************************************************/
/****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -