📄 3kmenu34.c
字号:
sprintf(tSZ, "%6.2f", unit[iCNL].submenu1.h_adjust/100.0);
Bar(arBOXPOS34[iCNL].x+BOX34_W/2+28, arBOXPOS34[iCNL].y+BOX34_H-22,
arBOXPOS34[iCNL].x+BOX34_W-2, arBOXPOS34[iCNL].y+BOX34_H-2, 192, 192, 192);
ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2+28+(BOX34_W/2-30-(int)strlen(tSZ)*8), arBOXPOS34[iCNL].y+BOX34_H-20, tSZ, 0, 0, 0);
}
void ClearHAdj_M3(const int iCNL)
{
Bar(arBOXPOS34[iCNL].x+BOX34_W/2+28, arBOXPOS34[iCNL].y+BOX34_H-22,
arBOXPOS34[iCNL].x+BOX34_W-2, arBOXPOS34[iCNL].y+BOX34_H-2, 192, 192, 192);
}
void ClearHErr_M3(const int iCNL)
{
Bar(arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y+BOX34_H-22,
arBOXPOS34[iCNL].x+BOX34_W/2-28, arBOXPOS34[iCNL].y+BOX34_H-2, 192, 192, 192);
}
/******************************
描述: 报警框警戒线刷新(指定通道)
参数: iCNL 指定通道号; iVIS 是否显示
******************************/
void DispARect_M3(const int iCNL, const unsigned char iVIS)
{
int xCenter,yCenter;
int vInchOffset,hInchOffset;
float vDispInch,hDispInch;
xCenter=arBOXPOS34[iCNL].x+BOX34_W/2;
yCenter=arBOXPOS34[iCNL].y+BOX34_H/2;
Bar(arBOXPOS34[iCNL].x+26, arBOXPOS34[iCNL].y+26,
arBOXPOS34[iCNL].x+BOX34_W-26, arBOXPOS34[iCNL].y+BOX34_H-26, 192, 192, 192);
vDispInch=(BOX34_H-70)/2.0; //25*2-10*2
vDispInch=unit[iCNL].submenu1.v_alarm*vDispInch/100.0;
vInchOffset=(int)(vDispInch+0.05); //纵向报警框边线偏移像素
if(iVIS)
{
if(CtrlUnitFlags[iCNL].bits.bit5) //上限位状态
{ wjrUAdj323(xCenter-25, arBOXPOS34[iCNL].y, BES_LIMIT);}
else
{ wjrUAdj323(xCenter-25, arBOXPOS34[iCNL].y, BES_SHOW);}
//
if(CtrlUnitFlags[iCNL].bits.bit4) //下限位状态
{ wjrDAdj323(xCenter-25, arBOXPOS34[iCNL].y+BOX34_H-25, BES_LIMIT);}
else
{ wjrDAdj323(xCenter-25, arBOXPOS34[iCNL].y+BOX34_H-25, BES_SHOW);}
DispVAdj_M3(iCNL);
}
if(unit[iCNL].submenu1.bitfield.hcontrol)
{ //横向开
if(iVIS)
{
if(CtrlUnitFlags[iCNL].bits.bit2) //左限位状态
{ wjrLAdj323(arBOXPOS34[iCNL].x, yCenter-25, BES_LIMIT);}
else
{ wjrLAdj323(arBOXPOS34[iCNL].x, yCenter-25, BES_SHOW);}
//
if(CtrlUnitFlags[iCNL].bits.bit3) //右限位状态
{ wjrRAdj323(arBOXPOS34[iCNL].x+BOX34_W-25, yCenter-25, BES_LIMIT);}
else
{ wjrRAdj323(arBOXPOS34[iCNL].x+BOX34_W-25, yCenter-25, BES_SHOW);}
DispHAdj_M3(iCNL);
}
hDispInch=(BOX34_W-70)/2.0; //25*2-10*2
hDispInch=unit[iCNL].submenu1.h_alarm*hDispInch/100.0;
hInchOffset=(int)(hDispInch+0.05); //横向报警框边线偏移像素
//
Line(arBOXPOS34[iCNL].x+26, yCenter, arBOXPOS34[iCNL].x+BOX34_W-26, yCenter, 0, 0, 0);
Line(xCenter, arBOXPOS34[iCNL].y+26, xCenter, arBOXPOS34[iCNL].y+BOX34_H-26, 0, 0, 0);
Rectangle(xCenter-5-hInchOffset, yCenter-5-vInchOffset,
xCenter+5+hInchOffset, yCenter+5+vInchOffset, 0, 0, 0);
}
else
{ //横向关
Line(xCenter-8, arBOXPOS34[iCNL].y+26, xCenter-8, arBOXPOS34[iCNL].y+BOX34_H-26, 0, 0, 0);
Line(xCenter+8, arBOXPOS34[iCNL].y+26, xCenter+8, arBOXPOS34[iCNL].y+BOX34_H-26, 255, 255, 255);
Line(xCenter-7, yCenter-5-vInchOffset, xCenter+7, yCenter-5-vInchOffset, 0, 0, 0);
Line(xCenter-7, yCenter+5+vInchOffset, xCenter+7, yCenter+5+vInchOffset, 0, 0, 0);
}
if(iVIS)
{
Bar(xCenter-5, yCenter-5, xCenter+5, yCenter+5, 0, 0, 0);
}
}
/******************************
描述: 纵向误差显示刷新 menu3
参数: iCNL 指定的通道号; vDAT 纵向误差值
******************************/
void DispVErr_M3(const int iCNL, const int vDAT)
{
int xCenter,yCenter;
int vInchOffset,vNewData;
char tSZ[10]={0};
float vDispInch;
unsigned char overflag=0;
xCenter=arBOXPOS34[iCNL].x+BOX34_W/2;
yCenter=arBOXPOS34[iCNL].y+BOX34_H/2;
HideMouse();
DispARect_M3(iCNL, 0); //框背景
Bar(arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y+2,
arBOXPOS34[iCNL].x+BOX34_W/2-28, arBOXPOS34[iCNL].y+22, 192, 192, 192);
sprintf(tSZ, "%6.2f", vDAT/100.0);
if( vDAT<=-unit[iCNL].submenu1.v_alarm ||
vDAT>=unit[iCNL].submenu1.v_alarm )
{ overflag=1;}
vDispInch=(BOX34_H-70)/2.0; //2*25+10*2
if(vDAT>=110)
{ vNewData=110;}
else if(vDAT<=-110)
{ vNewData=-110;}
else
{ vNewData=vDAT;}
vDispInch=vNewData*vDispInch/100.0;
vInchOffset=(int)(vDispInch+0.05); //纵向报警框边线偏移像素
if(overflag)
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(tSZ)*8, arBOXPOS34[iCNL].y+4, tSZ, 0, 0, 255);
Bar(xCenter-5, yCenter-5-vInchOffset, xCenter+5, yCenter+5-vInchOffset, 0, 0, 255);
}
else
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(tSZ)*8, arBOXPOS34[iCNL].y+4, tSZ, 255, 0, 0);
Bar(xCenter-5, yCenter-5-vInchOffset, xCenter+5, yCenter+5-vInchOffset, 0, 0, 0);
}
ShowMouse();
}
/******************************
描述: 横向误差显示刷新 menu3
参数: iCNL 指定的通道号; vDAT 纵向误差值; hDAT 横向误差值
******************************/
void DispHErr_M3(const int iCNL, const int vDAT, const int hDAT)
{
int xCenter,yCenter;
int vInchOffset,vNewData;
int hInchOffset,hNewData;
char vSZ[10]={0};
char hSZ[10]={0};
float vDispInch,hDispInch;
unsigned char overflag=0; //bit0纵向溢出bit4横向溢出
xCenter=arBOXPOS34[iCNL].x+BOX34_W/2;
yCenter=arBOXPOS34[iCNL].y+BOX34_H/2;
//HideMouse();
DispARect_M3(iCNL, 0); //框背景 不刷新 按钮
//纵向显示误差
Bar(arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y+2,
arBOXPOS34[iCNL].x+BOX34_W/2-28, arBOXPOS34[iCNL].y+22, 192, 192, 192);
//ShowMouse();
sprintf(vSZ, "%6.2f", vDAT/100.0);
if( vDAT<=-unit[iCNL].submenu1.v_alarm ||
vDAT>= unit[iCNL].submenu1.v_alarm )
{ overflag=0x01;}
vDispInch=(BOX34_H-70)/2.0; //25*2-10*2
if(vDAT>=110)
{ vNewData=110;}
else if(vDAT<=-110)
{ vNewData=-110;}
else
{ vNewData=vDAT;}
vDispInch=vNewData*vDispInch/100.0;
vInchOffset=(int)(vDispInch+0.05); //纵向报警框边线偏移像素
//横向显示误差
//HideMouse();
Bar(arBOXPOS34[iCNL].x+2, arBOXPOS34[iCNL].y+BOX34_H-22,
arBOXPOS34[iCNL].x+BOX34_W/2-28, arBOXPOS34[iCNL].y+BOX34_H-2, 192, 192, 192);
//ShowMouse();
sprintf(hSZ, "%6.2f", hDAT/100.0);
if( hDAT<=-unit[iCNL].submenu1.h_alarm ||
hDAT>= unit[iCNL].submenu1.h_alarm)
{ overflag|=0x10;}
hDispInch=(BOX34_W-70)/2.0;
if(hDAT>=107)
{ hNewData=107;}
else if(hDAT<=-107)
{ hNewData=-107;}
else
{ hNewData=hDAT;}
hDispInch=hNewData*hDispInch/100.0;
hInchOffset=(int)(hDispInch+0.05);
if(overflag&0x01)
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(vSZ)*8, arBOXPOS34[iCNL].y+4, vSZ, 0, 0, 255);}
else
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(vSZ)*8, arBOXPOS34[iCNL].y+4, vSZ, 255, 0, 0);}
if(overflag&0x10)
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(hSZ)*8, arBOXPOS34[iCNL].y+BOX34_H-20, hSZ, 0, 0, 255);}
else
{ ShowASCMem(arBOXPOS34[iCNL].x+BOX34_W/2-32-(int)strlen(hSZ)*8, arBOXPOS34[iCNL].y+BOX34_H-20, hSZ, 255, 0, 0);}
if(overflag)
{ Bar(xCenter-5+hInchOffset, yCenter-5-vInchOffset, xCenter+5+hInchOffset, yCenter+5-vInchOffset, 0, 0, 255);}
else
{ Bar(xCenter-5+hInchOffset, yCenter-5-vInchOffset, xCenter+5+hInchOffset, yCenter+5-vInchOffset, 0, 0, 0);}
}
/******************************
描述: 上按钮响应
******************************/
void RespBAdj_M3_U(const int iCNL)
{
unsigned char vTurns;
if(unit[iCNL].submenu1.unitworksnum.i==1)
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsA;}
else
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsB;}
if(vTurns==2 || vTurns==5)
{ //逆序
if(unit[iCNL].submenu1.v_adjust<=-2000)
{ return;}
else
{ unit[iCNL].submenu1.v_adjust--;}
}
else
{ //顺序
if(unit[iCNL].submenu1.v_adjust>=2000)
{ return;}
else
{ unit[iCNL].submenu1.v_adjust++;}
}
wjrUAdj323(arBOXPOS34[iCNL].x+BOX34_W/2-25, arBOXPOS34[iCNL].y, BES_PRESS);
//纵向修正量显示
DispVAdj_M3(iCNL);
//记录纵向微调
REC_Sub1(iCNL, 4);
//通知下位机
SendCnlData(iCNL, 0x09);
}
/******************************
描述: 下按钮响应
******************************/
void RespBAdj_M3_D(const int iCNL)
{
unsigned char vTurns;
if(unit[iCNL].submenu1.unitworksnum.i==1)
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsA;}
else
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsB;}
if(vTurns==2 || vTurns==5)
{ //逆序
if(unit[iCNL].submenu1.v_adjust>=2000)
{ return;}
else
{ unit[iCNL].submenu1.v_adjust++;}
}
else
{ //顺序
if(unit[iCNL].submenu1.v_adjust<=-2000)
{ return;}
else
{ unit[iCNL].submenu1.v_adjust--;}
}
wjrDAdj323(arBOXPOS34[iCNL].x+BOX34_W/2-25, arBOXPOS34[iCNL].y+BOX34_H-25, BES_PRESS);
//纵向修正量显示
DispVAdj_M3(iCNL);
//记录纵向微调
REC_Sub1(iCNL, 4);
//通知下位机
SendCnlData(iCNL, 0x09);
}
/******************************
描述: 左按钮响应
******************************/
void RespBAdj_M3_L(const int iCNL)
{
unsigned char vTurns;
if(unit[iCNL].submenu1.unitworksnum.i==1)
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsA;}
else
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsB;}
if(vTurns==2 || vTurns==5)
{ //逆序
if(unit[iCNL].submenu1.h_adjust<=-2000)
{ return;}
else
{ unit[iCNL].submenu1.h_adjust--;}
}
else
{ //顺序
if(unit[iCNL].submenu1.h_adjust>=2000)
{ return;}
else
{ unit[iCNL].submenu1.h_adjust++;}
}
wjrLAdj323(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+BOX34_H/2-25, BES_PRESS);
//横向修正量显示
DispHAdj_M3(iCNL);
//记录横向微调
REC_Sub1(iCNL, 6);
//通知下位机
SendCnlData(iCNL, 0x09);
}
/******************************
描述: 右按钮响应
******************************/
void RespBAdj_M3_R(const int iCNL)
{
unsigned char vTurns;
if(unit[iCNL].submenu1.unitworksnum.i==1)
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsA;}
else
{ vTurns=unit[iCNL].submenu1.bitTurns.turnsoflabsB;}
if(vTurns==2 || vTurns==5)
{ //逆序
if(unit[iCNL].submenu1.h_adjust>=2000)
{ return;}
else
{ unit[iCNL].submenu1.h_adjust++;}
}
else
{ //顺序
if(unit[iCNL].submenu1.h_adjust<=-2000)
{ return;}
else
{ unit[iCNL].submenu1.h_adjust--;}
}
wjrRAdj323(arBOXPOS34[iCNL].x+BOX34_W-25, arBOXPOS34[iCNL].y+BOX34_H/2-25, BES_PRESS);
//横向修正量显示
DispHAdj_M3(iCNL);
//记录横向微调
REC_Sub1(iCNL, 6);
//通知下位机
SendCnlData(iCNL, 0x09);
}
/******************************
描述: 设置左右按钮是否可显示 BES_HIDE BES_SHOW
******************************/
void SetLRAdj_M3_VIS(const int iCNL, const int vi)
{
wjrLAdj323(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+BOX34_H/2-25, vi);
wjrRAdj323(arBOXPOS34[iCNL].x+BOX34_W-25, arBOXPOS34[iCNL].y+BOX34_H/2-25, vi);
}
/******************************
描述: 绘制黑框背景包含纵横向警戒线(指定通道)
参数: iCNL 指定的通道号
******************************/
void DrawCurvBox_M4(const int iCNL)
{
int alr_abs_off; //纵横向报警绝对偏移
int h50per=BOX34_H/2; //高度的50%
//背景黑色
Bar(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+BOX34_H, 0, 0, 0);
//中心线
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per, 255, 255, 255);
//纵向警戒线
alr_abs_off=(abs(unit[iCNL].submenu1.v_alarm))*h50per/100;
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per-alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per-alr_abs_off, 0, 128, 0);
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per+alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per+alr_abs_off, 0, 128, 0);
//横向警戒线
if(unit[iCNL].submenu1.bitfield.hcontrol)
{
alr_abs_off=(abs(unit[iCNL].submenu1.h_alarm))*h50per/100;
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per-alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per-alr_abs_off, 0, 0, 128);
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per+alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per+alr_abs_off, 0, 0, 128);
}
}
/******************************
描述: 描绘历史误差曲线
[iCNL]=通道号
******************************/
void DrawCurvLines_M4(const int iCNL)
{
int xoff,xAT;
int alr_abs_off; //纵横向报警绝对偏移
int h50per=BOX34_H/2; //高度的50%
//背景黑色
Bar(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+BOX34_H, 0, 0, 0);
//中心线
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per, 255, 255, 255);
//纵向警戒线
alr_abs_off=(abs(unit[iCNL].submenu1.v_alarm))*h50per/100;
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per-alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per-alr_abs_off, 0, 128, 0);
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per+alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per+alr_abs_off, 0, 128, 0);
//横向警戒线
if(unit[iCNL].submenu1.bitfield.hcontrol)
{
alr_abs_off=(abs(unit[iCNL].submenu1.h_alarm))*h50per/100;
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per-alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per-alr_abs_off, 0, 0, 128);
Line(arBOXPOS34[iCNL].x, arBOXPOS34[iCNL].y+h50per+alr_abs_off,
arBOXPOS34[iCNL].x+BOX34_W, arBOXPOS34[iCNL].y+h50per+alr_abs_off, 0, 0, 128);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -