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

📄 3kmenu34.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 3 页
字号:
/*********************
 Filename: 3KMENU34.C
 History&Datetime:
 
 DateTime: 
 JOB-TODO: 
   
 DateTime: 
 JOB-TODO: 

 
*********************/
#include "ST3000.H"
#include "STRUC_3K.H"
#include "CORE_VGA.H"
#include "CORE_COM.H"
#include "3KDEFN.H"

#define X_SPBOX  780
#define Y_SPBOX  564
#define BOX34_X  120
#define BOX34_Y  140
#define BOX34_HS 20
#define BOX34_VS 60
/*
#define BOX34_W  200
#define BOX34_H  152
*/
typedef struct {
    int x,y;
} POINT;

/**************** local variables ****************/
static const POINT arBOXPOS34[MAXCNL_3K] = {
    120, 140, // CU 01# ; 为了确保界面正常容错 按照CU 02#的值设定
    120, 140, // CU 02#
    340, 140, // CU 03#
    560, 140, // CU 04#
    780, 140, // CU 05#
    120, 352, // CU 06#
    340, 352, // CU 07#
    560, 352, // CU 08#
    780, 352, // CU 09#
    120, 564, // CU 10#
    340, 564, // CU 11#
    560, 564, // CU 12#
    780, 564  // CU 13#
};

/**************** extern variables ****************/
extern int hjCurvHeader[];
extern BITFlags CtrlUnitFlags[];
extern int vCurvErr[MAXCNL_3K][BOX34_W],hCurvErr[MAXCNL_3K][BOX34_W];

/**************** extern variables ****************/
extern void wjrUAdj323(const int x, const int y, const int evnt);
extern void wjrDAdj323(const int x, const int y, const int evnt);
extern void wjrLAdj323(const int x, const int y, const int evnt);
extern void wjrRAdj323(const int x, const int y, const int evnt);
extern void StopYtz(const unsigned char iSER, const unsigned char iFRESH);
extern int GetFlags_ytz(const int iCNL);
extern int GetJOB_ytz(const int jobID);

extern void _Query_jzCmdList(void);  
extern int REC_sub1com;
/******************************
 描述: 箭头色块形状
 参数: x,y 起点坐标
******************************/
void arrow(const int x, const int y)
{
    int shape[14];
    shape[0] =x+20;
    shape[1] =y+6;
    shape[2] =x+20;
    shape[3] =y;
    shape[4] =x+30;
    shape[5] =y+9;
    shape[6] =x+20;
    shape[7] =y+18;
    shape[8] =x+20;
    shape[9] =y+12;
    shape[10]=x;
    shape[11]=y+12;
    shape[12]=x;
    shape[13]=y+6;
    FillPoly(7, shape, 0, 255, 255);
}

/******************************
 描述: 显示每个通道的纵向工作状态图标 Work Mark
******************************/
void SyncWMark_V34(const int iCNL)
{
    Bar(arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y-26, arBOXPOS34[iCNL].x+26, arBOXPOS34[iCNL].y-2, 192, 192, 192);
    ShowICO2424((1+unit[iCNL].submenu1.bitfield.hand_auto),
        arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y-26);
}

/******************************
 描述: 显示每个通道的横向工作状态图标 Work Mark
******************************/
void SyncWMark_H34(const int iCNL)
{
    Bar(arBOXPOS34[iCNL].x+30, arBOXPOS34[iCNL].y-26, arBOXPOS34[iCNL].x+54, arBOXPOS34[iCNL].y-2, 192, 192, 192);
    ShowICO2424((3+unit[iCNL].submenu1.bitfield.h_motorruning),
        arBOXPOS34[iCNL].x+30, arBOXPOS34[iCNL].y-26);
}

/******************************
 描述: 速度显示框初始化
******************************/
void InitBOX_SP34(void)
{
    char sSZ[10]={0};
    Rect(X_SPBOX, Y_SPBOX, BOX34_W, BOX34_H, 1);
    Rect(X_SPBOX+1, Y_SPBOX+1, BOX34_W-2, BOX34_H-75, 0);
    Bar(X_SPBOX+1, Y_SPBOX+BOX34_H-74, X_SPBOX+BOX34_W-1, Y_SPBOX+BOX34_H-1, 0, 0, 128);
    if(VarST3000.Language)
    {
        if(VarST3000.jobAB==1)
        {   ShowASCMemX(X_SPBOX+44, Y_SPBOX+(BOX34_H-105)/2, 2, 2, "A-SPEED", 0, 0, 0);}
        else
        {   ShowASCMemX(X_SPBOX+44, Y_SPBOX+(BOX34_H-105)/2, 2, 2, "B-SPEED", 0, 0, 0);}
    }
    else
    {
        if(VarST3000.jobAB==1)
        {   ShowASCMemX(X_SPBOX+55, Y_SPBOX+(BOX34_H-105)/2, 2, 2, "A", 0, 0, 0);}
        else
        {   ShowASCMemX(X_SPBOX+55, Y_SPBOX+(BOX34_H-105)/2, 2, 2, "B", 0, 0, 0);}
        ShowGB2312X(X_SPBOX+75, Y_SPBOX+(BOX34_H-105)/2, 1, 2, "系线速度", 0, 0, 0);
    }
    sprintf(sSZ, "%06.1f", g_LINESPEED);
    SimLED(X_SPBOX+25, Y_SPBOX+BOX34_H-65, sSZ);
}

/******************************
 描述: 速度显示
******************************/
void DispSPEED34(void)
{
    char sSZ[10]={0};
    sprintf(sSZ, "%06.1f", g_LINESPEED);
    SimLED(X_SPBOX+25, Y_SPBOX+BOX34_H-65, sSZ);
}

/******************************
 描述: 显示状态图标助记内容 menu3
******************************/
void ShowLCaps_M3(void)
{
    int  xabsoff=20;
    int  yabsoff=BOX34_Y+BOX34_H+BOX34_VS/2;
    char *pLCapsM3[][2]={
        {"纵向","V"},
        {"横向","H"},
        {"误差","ERROR"},
        {"微调","TUNE"},
        {"报警","ALARM"},
        {"失效","LOST"},
        {"限位","LIMIT"},
        {"V手动", "V-MAN"},
        {"V自动", "V-AUT"},
        {"H手动", "H-MAN"},
        {"H自动", "H-AUT"}
    };
    Rectangle(10, BOX34_Y-18, BOX34_X-10, 730, 128, 128, 128);
    //指示箭头
    arrow(60, BOX34_Y+2);
    arrow(60, BOX34_Y+BOX34_H-20);
    //误差
    Bar(xabsoff, yabsoff, xabsoff+30, yabsoff+10, 255, 0, 0);
    //微调
    Bar(xabsoff, yabsoff+20, xabsoff+30, yabsoff+30, 0, 0, 0);
    //报警
    Bar(xabsoff, yabsoff+40, xabsoff+30, yabsoff+50, 0, 0, 255);
    //失效
    Bar(xabsoff, yabsoff+60, xabsoff+30, yabsoff+70, 0, 255, 0);
    //限位
    Bar(xabsoff, yabsoff+80, xabsoff+30, yabsoff+90, 0, 128, 255);
    //自动 手动图标提示信息
    ShowICO2424(1, 20, yabsoff+100); //V-manual operate icons
    ShowICO2424(2, 20, yabsoff+125); //V-automatic operate icons
    ShowICO2424(3, 20, yabsoff+150); //H-manual operate icons
    ShowICO2424(4, 20, yabsoff+175); //H-automatic operate icons
    //指示箭头
    arrow(60, BOX34_Y+(BOX34_VS+BOX34_H)*2+2);
    arrow(60, BOX34_Y+(BOX34_VS+BOX34_H)*2+BOX34_H-20);
    if(VarST3000.Language)
    {
        //箭头内容
        ShowASCMemX(20, BOX34_Y-2, 1, 2, pLCapsM3[0][1], 0, 0, 0);
        ShowASCMemX(20, BOX34_Y+BOX34_H-24, 1, 2, pLCapsM3[1][1], 0, 0, 0);
        //色块内容
        ShowASCMem(60, yabsoff-2, pLCapsM3[2][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+18, pLCapsM3[3][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+38, pLCapsM3[4][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+58, pLCapsM3[5][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+78, pLCapsM3[6][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+104, pLCapsM3[7][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+129, pLCapsM3[8][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+154, pLCapsM3[9][1], 0, 0, 0);
        ShowASCMem(60, yabsoff+179, pLCapsM3[10][1], 0, 0, 0);
        //箭头内容
        ShowASCMemX(20, BOX34_Y+(BOX34_VS+BOX34_H)*2-4, 1, 2, pLCapsM3[0][1], 0, 0, 0);
        ShowASCMemX(20, BOX34_Y+(BOX34_VS+BOX34_H)*2+BOX34_H-24, 1, 2, pLCapsM3[1][1], 0, 0, 0);
    }
    else
    {
        //箭头内容
        ShowGB2312(20, BOX34_Y+2, pLCapsM3[0][0], 0, 0, 0);
        ShowGB2312(20, BOX34_Y+BOX34_H-20, pLCapsM3[1][0], 0, 0, 0);
        //色块内容
        ShowGB2312(65, yabsoff-2, pLCapsM3[2][0], 0, 0, 0);
        ShowGB2312(65, yabsoff+18, pLCapsM3[3][0], 0, 0, 0);
        ShowGB2312(65, yabsoff+38, pLCapsM3[4][0], 0, 0, 0);
        ShowGB2312(65, yabsoff+58, pLCapsM3[5][0], 0, 0, 0);
        ShowGB2312(65, yabsoff+78, pLCapsM3[6][0], 0, 0, 0);
        ShowGB2312(50, yabsoff+104, pLCapsM3[7][0], 0, 0, 0);
        ShowGB2312(50, yabsoff+129, pLCapsM3[8][0], 0, 0, 0);
        ShowGB2312(50, yabsoff+154, pLCapsM3[9][0], 0, 0, 0);
        ShowGB2312(50, yabsoff+179, pLCapsM3[10][0], 0, 0, 0);
        //箭头内容
        ShowGB2312(20, BOX34_Y+(BOX34_VS+BOX34_H)*2, pLCapsM3[0][0], 0, 0, 0);
        ShowGB2312(20, BOX34_Y+(BOX34_VS+BOX34_H)*2+BOX34_H-20, pLCapsM3[1][0], 0, 0, 0);
    }
}

/******************************
 描述: 显示状态图标助记内容 menu4
******************************/
void ShowLCaps_M4(void)
{
    char *pLCapsM4[][2]={
        {"V误差", "V-ERR"},
        {"H误差", "H-ERR"},
        {"V报警", "V-ALR"},
        {"H报警", "H-ALR"},
        {"V手动", "V-MAN"},
        {"V自动", "V-AUT"},
        {"H手动", "H-MAN"},
        {"H自动", "H-AUT"}
    };
    Rectangle(10, BOX34_Y-18, BOX34_X-10, 730, 128, 128, 128);
    //纵向误差
    Bar(20, BOX34_Y+35, 50, BOX34_Y+45, 0, 255, 0);
    //横向误差
    Bar(20, BOX34_Y+70, 50, BOX34_Y+80, 0, 255, 255);
    //纵向报警
    Bar(20, BOX34_Y+105, 50, BOX34_Y+115,0, 128, 0 );
    //横向报警
    Bar(20, BOX34_Y+140, 50, BOX34_Y+150, 0, 0, 255);
    //
    ShowICO2424(1, 20, BOX34_Y+175); //V-manual operate icons
    ShowICO2424(2, 20, BOX34_Y+210); //V-automatic operate icons
    ShowICO2424(3, 20, BOX34_Y+245); //H-manual operate icons
    ShowICO2424(4, 20, BOX34_Y+280); //H-automatic operate icons
    if(VarST3000.Language)
    {
        ShowASCMem(60, BOX34_Y+32, pLCapsM4[0][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+67, pLCapsM4[1][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+102, pLCapsM4[2][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+137, pLCapsM4[3][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+179, pLCapsM4[4][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+214, pLCapsM4[5][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+249, pLCapsM4[6][1], 0, 0, 0);
        ShowASCMem(60, BOX34_Y+284, pLCapsM4[7][1], 0, 0, 0);
    }
    else
    {
        ShowGB2312(60, BOX34_Y+32, pLCapsM4[0][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+67, pLCapsM4[1][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+102, pLCapsM4[2][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+137, pLCapsM4[3][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+179, pLCapsM4[4][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+214, pLCapsM4[5][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+249, pLCapsM4[6][0], 0, 0, 0);
        ShowGB2312(60, BOX34_Y+284, pLCapsM4[7][0], 0, 0, 0);
    }
}

/******************************
 描述: 显示通道号信息以及通道修正或者显示区域的外框
******************************/
void ShowTitle_M34(void)
{
    int jcnl;
    char tSZ[10];
    for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
    {
        if( (jcnl==MAXCNL_3K-1) && (!unit[jcnl].submenu1.unitworksnum.i) ) 
        {   break;}
        memset(tSZ, 0, 10);
        if( unit[jcnl].submenu1.unitworksnum.i==1 &&
            unit[jcnl].submenu1.unitworksnum.j)
        {   sprintf(tSZ, "A%dU", jcnl+1);
            SyncWMark_V34(jcnl);
            if(unit[jcnl].submenu1.bitfield.hcontrol)
            {   SyncWMark_H34(jcnl);}
        }
        else if(unit[jcnl].submenu1.unitworksnum.i==2 &&
                unit[jcnl].submenu1.unitworksnum.j)
        {   sprintf(tSZ, "B%dU", jcnl+1);
            SyncWMark_V34(jcnl);
            if(unit[jcnl].submenu1.bitfield.hcontrol)
            {   SyncWMark_H34(jcnl);}
        }
        else
        {   sprintf(tSZ, "%dU", jcnl+1);}
        ShowGB2312(arBOXPOS34[jcnl].x+(BOX34_W-(int)strlen(tSZ)*16)/2, arBOXPOS34[jcnl].y-25, tSZ, 0, 0, 0);
        Rectangle(arBOXPOS34[jcnl].x-1, arBOXPOS34[jcnl].y-1, arBOXPOS34[jcnl].x+BOX34_W+1, arBOXPOS34[jcnl].y+BOX34_H+1, 0, 0, 0);
    }
}

/******************************
 描述: 显示每个通道的横向工作状态图标 Work Mark
******************************/
void SetHWMarkVISABLE(const int iCNL, const unsigned char bVIS)
{
    Bar(arBOXPOS34[iCNL].x+30, arBOXPOS34[iCNL].y-26,
        arBOXPOS34[iCNL].x+54, arBOXPOS34[iCNL].y-2, 192, 192, 192);
    if(bVIS)
    {   ShowICO2424((3+unit[iCNL].submenu1.bitfield.h_motorruning),
                arBOXPOS34[iCNL].x+30, arBOXPOS34[iCNL].y-26);
    }
    
}

/******************************
 描述: 显示每个通道的误差状态图标志 Error Mark
 参数: iCNL 通道号 ; iVIS 是否显示
******************************/
void SyncVEMark_M4(const int iCNL, const unsigned char iVIS)
{
    if(iVIS)
    {   Circle(arBOXPOS34[iCNL].x+BOX34_W-45, arBOXPOS34[iCNL].y-15, 10, 0, 0, 255);
        ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W-48, arBOXPOS34[iCNL].y-21, "V", 255, 255, 255);
    }
    else
    {   Circle(arBOXPOS34[iCNL].x+BOX34_W-45, arBOXPOS34[iCNL].y-15, 10, 192, 192, 192);}
}

/******************************
 描述: 显示每个通道的误差状态图标志 Error Mark
 参数: iCNL 通道号 ; iVIS 是否显示
******************************/
void SyncHEMark_M4(const int iCNL, const unsigned char iVIS)
{
    if(iVIS)
    {   Circle(arBOXPOS34[iCNL].x+BOX34_W-25, arBOXPOS34[iCNL].y-15, 10, 0, 0, 255);
        ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W-28, arBOXPOS34[iCNL].y-21, "H", 255, 255, 255);
    }
    else
    {   Circle(arBOXPOS34[iCNL].x+BOX34_W-25, arBOXPOS34[iCNL].y-15, 10, 192, 192, 192);}
}

/******************************
 描述: 显示每个通道的丢失状态图标志 Lapse Mark
 参数: iCNL 通道号 ; iVIS 是否显示
******************************/
void SyncLMark_M34(const int iCNL, const unsigned char iVIS)
{
    if(iVIS)
    {   Bar(arBOXPOS34[iCNL].x+BOX34_W-12, arBOXPOS34[iCNL].y-25,
            arBOXPOS34[iCNL].x+BOX34_W-2, arBOXPOS34[iCNL].y-5, 0, 255, 0);
    }
    else
    {   Bar(arBOXPOS34[iCNL].x+BOX34_W-12, arBOXPOS34[iCNL].y-25,
            arBOXPOS34[iCNL].x+BOX34_W-2, arBOXPOS34[iCNL].y-5, 192, 192, 192);
    }
}

/******************************
 描述: 纵向微调显示刷新 menu3
 参数: iCNL 指定的通道号
******************************/
void DispVAdj_M3(const int iCNL)
{
    char tSZ[10]={0};
    sprintf(tSZ, "%6.2f", unit[iCNL].submenu1.v_adjust/100.0);
    Bar(arBOXPOS34[iCNL].x+BOX34_W/2+28, arBOXPOS34[iCNL].y+2,
        arBOXPOS34[iCNL].x+BOX34_W-2, arBOXPOS34[iCNL].y+22, 192, 192, 192);
    ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2+28+(BOX34_W/2-30-(int)strlen(tSZ)*8), arBOXPOS34[iCNL].y+4, tSZ, 0, 0, 0);
}

/******************************
 描述: 横向微调显示刷新 menu3
 参数: iCNL 指定的通道号
******************************/
void DispHAdj_M3(const int iCNL)
{
    char tSZ[10]={0};

⌨️ 快捷键说明

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