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

📄 3kmenu6.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 5 页
字号:
/********************
 Filename: 3KMENU6.C
 History&Datetime:
 
 DateTime: 2007-2-7 05:25下午
 JOB-TODO:除电机开关页之外 通道点击的范围偏小 将其鼠标点击范围在menu()函数中
 放大为Button + Edit 都可点击响应
********************/
#include "ST3000.H"
#include "STRUC_3K.H"
#include "CORE_VGA.H"
#include "CORE_COM.H"
#include "3KDEFN.H"

static char *szptr_m6_1[15][2] = {
    {"纵向报警值", "V-ALARM"},
    {"纵向微调值","V-TUNE"},
    {"纵向增益P值","V-GAIN P"},
    {"纵向增益D值","V-GAIN D"},
    {"纵向平均值","V-AVERAGE"},
    {"纵向周期频数","V-CYCLE"},
    {"纵向不工作区","V-DEAD ZONE"},
    {"纵向电机开关","V-MOT SWITCH"},
    {"横向报警值", "H-ALARM"},
    {"横向微调值","H-TUNE"},
    {"横向增益P值","H-GAIN P"},
    {"横向增益D值","H-GAIN D"},
    {"横向平均值","H-AVERAGE"},
    {"横向周期频数","H-CYCLE"},
    {"横向不工作区","H-DEAD ZONE"}
};

/**************** local variables ****************/
unsigned char vStdSEL6;
    /* vStdSEL6=1 表示标准一;
       =2 表示标准二;
       =3 表示单标记. */
int vNewPageSEL6,vOldPageSEL6;
int vNewUnitSEL6,vOldUnitSEL6;

/**************** extern constants ****************/
extern const _tagMenuAttr MenuAttr;
extern const _tagInstAttr InstAttr;
extern const _tagSizeAttr SizeAttrB;
extern const _tagSizeAttr SizeAttrE;
extern const _tagSizeAttr SizeConfig;

extern void _Query_jzCmdList(void);
extern int  REC_sub1com;
/***
 本屏幕的所有页牵扯到PD值、报警值、微调值、平均值等等 需要即改即发
 或者换页 换屏发送处理函数
***/
void SyncCMD_M6(void)
{
    //换屏检查命令发送情况  可以预料到的命令包含:
    //纵横向报警值 CmdFlags[?].bits.bit3;   //09H command
    //纵向控制参数 CmdFlags[?].bits.bit4;   //0AH command
    //横向控制参数 CmdFlags[?].bits.bit5;   //0BH command
    int t;
    for(t=1; t<VarST3000.UnitCounts; t++)
    {
        if( CmdFlags[t].bits.bit3 ) {   SendCnlData(t, 0x09);}
    }
    delay(30);
    for(t=1; t<VarST3000.UnitCounts; t++)
    {
        if( CmdFlags[t].bits.bit4 ) {   SendCnlData(t, 0x0a);}
    }
    delay(30);
    for(t=1; t<VarST3000.UnitCounts; t++)
    {
        if( CmdFlags[t].bits.bit5 ) {   SendCnlData(t, 0x0b);}
    }
}

/***
 标准页选择
***/
void SyncSTDSEL_M6(const int IDsel)
{
    int heightofcaps=25;
    char *szSTD[3][2]={
        "标准一","STD1",
        "标准二","STD2",
        "单标记","OMK"
    };
    //major box rectangle of left
    MoveTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+MenuAttr.bH-20);
    LineTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
    //major box rectangle of right and bottom
    MoveTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+MenuAttr.bH-20);
    LineTo(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-20, MenuAttr.sY+MenuAttr.bH-20, 128, 128, 128);
    LineTo(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-20, MenuAttr.sY+20+heightofcaps, 128, 128, 128);
    Bar(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+18,
        MenuAttr.sX+MenuAttr.tW+171, MenuAttr.sY+19+heightofcaps, 192, 192, 192);
    if(IDsel==1)
    {   // 标准1
        //page1
        MoveTo(MenuAttr.sX+MenuAttr.tW+21, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+69, MenuAttr.sY+20+heightofcaps, 192, 192, 192);
        //
        MoveTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+18, 255, 255, 255);	//20-2
        LineTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+18, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+20+heightofcaps, 128, 128, 128);
        LineTo(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-20, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+29, MenuAttr.sY+22, szSTD[0][1], 255, 20, 20);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+22, szSTD[0][0], 255, 20, 20);}
        //page2
        MoveTo(MenuAttr.sX+MenuAttr.tW+71, MenuAttr.sY+20);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+19+heightofcaps, 128, 128, 128);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+80, MenuAttr.sY+22, szSTD[1][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+73, MenuAttr.sY+22, szSTD[1][0], 0, 0, 0);}
        //page3
        MoveTo(MenuAttr.sX+MenuAttr.tW+121, MenuAttr.sY+19+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+121, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+19+heightofcaps, 128, 128, 128);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+130, MenuAttr.sY+22, szSTD[2][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+123, MenuAttr.sY+22, szSTD[2][0], 0, 0, 0);}
    }
    else if(IDsel==2)
    {   // 标准2
        //page2
        MoveTo(MenuAttr.sX+MenuAttr.tW+71, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+119, MenuAttr.sY+20+heightofcaps, 192, 192, 192);
        //
        MoveTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+18, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+18, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+20+heightofcaps, 128, 128, 128);
        LineTo(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-20, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+80, MenuAttr.sY+22, szSTD[1][1], 255, 20, 20);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+73, MenuAttr.sY+22, szSTD[1][0], 255, 20, 20);}
        //page1
        MoveTo(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+19+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+69, MenuAttr.sY+20, 255, 255, 255);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+29, MenuAttr.sY+22, szSTD[0][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+22, szSTD[0][0], 0, 0, 0);}
        //page3
        MoveTo(MenuAttr.sX+MenuAttr.tW+121, MenuAttr.sY+20);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+19+heightofcaps, 128, 128, 128);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+130, MenuAttr.sY+22, szSTD[2][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+123, MenuAttr.sY+22, szSTD[2][0], 0, 0, 0);}
    }
    else if(IDsel==3)
    {   // 单标记
        //page3
        MoveTo(MenuAttr.sX+MenuAttr.tW+121, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+169, MenuAttr.sY+20+heightofcaps, 192, 192, 192);
        //
        MoveTo(MenuAttr.sX+MenuAttr.tW+20, MenuAttr.sY+20+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+120, MenuAttr.sY+18, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+18, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+170, MenuAttr.sY+20+heightofcaps, 128, 128, 128);
        LineTo(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-20, MenuAttr.sY+20+heightofcaps, 255, 255, 255);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+130, MenuAttr.sY+22, szSTD[2][1], 255, 20, 20);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+123, MenuAttr.sY+22, szSTD[2][0], 255, 20, 20);}
        //page1
        MoveTo(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+19+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+69, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+69, MenuAttr.sY+19+heightofcaps, 128, 128, 128);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+29, MenuAttr.sY+22, szSTD[0][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+22, MenuAttr.sY+22, szSTD[0][0], 0, 0, 0);}
        //page2
        MoveTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+19+heightofcaps);
        LineTo(MenuAttr.sX+MenuAttr.tW+70, MenuAttr.sY+20, 255, 255, 255);
        LineTo(MenuAttr.sX+MenuAttr.tW+119, MenuAttr.sY+20, 255, 255, 255);
        if(VarST3000.Language)
        {   ShowASCMem(MenuAttr.sX+MenuAttr.tW+80, MenuAttr.sY+22, szSTD[1][1], 0, 0, 0);}
        else
        {   ShowGB2312(MenuAttr.sX+MenuAttr.tW+73, MenuAttr.sY+22, szSTD[1][0], 0, 0, 0);}
    }
}

/***
 刷新选中标准页内所有通道指定内容的显示
***/
void SyncDispbySTD_M6(void)
{
    int t,xfrom=MenuAttr.sX+MenuAttr.tW+InstAttr.x_offset+SizeAttrB.w+InstAttr.v_instance;
    char szE[10];
    unsigned char eSTL;
    switch( vNewPageSEL6 )
    {
    case 3: // 纵向增益P值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.VPlus_P[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 4: // 纵向增益D值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.VPlus_D[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 5: // 纵向平均值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.VHaver[vStdSEL6-1].VAver);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 6: // 纵向周期频数
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.VFps[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 7: // 纵向不工作区
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%6.2f", unit[t].submenu2.VDeadZone[vStdSEL6-1]/100.0);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 11: // 横向增益P值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.HPlus_P[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 12: // 横向增益D值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.HPlus_D[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 13: // 横向平均值
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.VHaver[vStdSEL6-1].HAver);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}
            Edit(xfrom, MenuAttr.sY+InstAttr.y_offset+t*(SizeAttrB.h+InstAttr.h_instance),
                SizeAttrE.w, SizeAttrE.h, eSTL, szE);
        }
        break;
    case 14: // 横向周期频数
        for(t=1; t<VarST3000.UnitCounts; t++)
        {
            eSTL=0x0f;
            memset(szE, 0, 10);
            sprintf(szE, "%5d", unit[t].submenu2.HFps[vStdSEL6-1]);
            if( t==(vNewUnitSEL6-1) ) {   eSTL|=0x40;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -