⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialog.c

📁 Keil平台
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
* 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 + -