📄 3kmenu34.c
字号:
/*********************
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 + -