📄 3kmenu2x.c
字号:
{
if( iCNL<7 )
{ Circle(235, 75+50*iCNL, 5, 128, 255, 128);}
else
{ Circle(355, 75+50*(iCNL-6), 5, 128, 255, 128);}
}
else
{
if( iCNL<7 )
{ Circle(235, 75+50*iCNL, 5, 0, 255, 255);}
else
{ Circle(355, 75+50*(iCNL-6), 5, 0, 255, 255);}
}
}
else
{
if( unit[iCNL].submenu1.bitfield.hand_auto )
{
if( iCNL<7 )
{ Circle(235, 68+50*iCNL, 5, 128, 255, 128);}
else
{ Circle(355, 68+50*(iCNL-6), 5, 128, 255, 128);}
}
else
{
if( iCNL<7 )
{ Circle(235, 68+50*iCNL, 5, 0, 255, 255);}
else
{ Circle(355, 68+50*(iCNL-6), 5, 0, 255, 255);}
}
}
}
else
{
if( iCNL<7 )
{ Bar(230, 50+50*iCNL, 242, 85+50*iCNL, 192, 192, 192);}
else
{ Bar(350, 50+50*(iCNL-6), 362, 85+50*(iCNL-6), 192, 192, 192);}
}
}
/***
刷新(1)预套准屏; (2)正常套色设置; (3)波形设置.
***/
void DrawM2fr(const int mID)
{
int t,k,ico;
char tBuff[10];
int ShapeCorner[6]={435,170,460,127,485,170};
unsigned char tSTL;
unsigned tCofBan;
char szchar[20];
switch(mID)
{
case 1:
// OFF alarm of A.B-SEr
OUT7|=0xc0;
outportb(0x302, OUT7);
delay(1);
ClearClientScr();
Rect(120, 120, 600, 575, 0);
Rect(122, 122, 596, 571, 1);
Rectangle(750, 120, 980, 360, 128, 128, 128);
Rectangle(750, 410, 980, 600, 128, 128, 128);
Rectangle(751, 121, 981, 361, 255, 255, 255);
Rectangle(751, 411, 981, 601, 255, 255, 255);
if( VarST3000.jobAB==1 )
{ Button(170, 130, 80, 35, 0x81, "A", 192, 192, 192);}
else
{ Button(170, 130, 80, 35, 0x81, "B", 192, 192, 192);}
Bar(825, 119, 900, 122, 192, 192, 192);
ShowGB2312(830, 112, (VarST3000.Language?"V-CTRL":"纵向控制"), 0, 0, 0);
Bar(825, 409, 900, 412, 192, 192, 192);
ShowGB2312(830, 402, (VarST3000.Language?"H-CTRL":"横向控制"), 0, 0, 0);
ShowGB2312(278, 140, (VarST3000.Language?"REALPOS":"实际位置"), 0, 0, 0);
ShowGB2312(478, 140, (VarST3000.Language?"REALPOS":"实际位置"), 0, 0, 0);
for(t=1; t<VarST3000.UnitCounts; t++)
{
memset(tBuff, 0, 10);
sprintf(tBuff, "%dU", t+1);
ShowASCMemX(220, 140+40*t, 1, 2, tBuff, 0, 0, 0);
if(unit[t].submenu6.length>250000.0)
{ unit[t].submenu6.length=250000.0;}
}
UpdateScr21(); //刷新AB系选择影响的界面
XPButton(212, 710, 100, 50, 1);
ShowICO8840(7, 218, 715);
XPButton(462, 710, 100, 50, 0);
ShowICO8840(8, 468, 715);
XPButton(712, 710, 100, 50, 0);
ShowICO8840(9, 718, 715);
break;
case 2:
//close all alarm of A.B SEr
OUT7|=0xc0; //bit7=1 bit6=1
outportb(0x302, OUT7);
//disable all input allow.
ClearClientScr();
box_frame(678, 78, 1012, 682);//2007-2-6 10:51
DrawNumKBoard(690, 100);
//显示版辊周长
if(VarST3000.jobAB==1)
{ sprintf(tBuff, "%5.1f", SysSet.CofBanA/10.0);
trnSEL=SysSet.bitTurns.TurnofLabsA;
mrkSEL=SysSet.bitShape.ShapeA;
}
else
{ sprintf(tBuff, "%5.1f", SysSet.CofBanB/10.0);
trnSEL=SysSet.bitTurns.TurnofLabsB;
mrkSEL=SysSet.bitShape.ShapeB;
}
Button(710, 450, 100, 50, 0x81, "C", 192, 192, 192);
Edit(830, 455, 120, 40, 0x00, NULL);
ShowASCMemX(965, 467, 1, 2, "mm", 0, 0, 0);
ShowGB2312(850, 467, tBuff, 0, 0, 0);
//OK按钮
Button(780, 550, 100, 50, 0x81, "OK", 192, 192, 192);
//中间框线
box_frame(308,78,662,682);
//运动方向箭头
Bar(453,170,467,650,0,0,0);
FillPoly(3,ShapeCorner,0,0,0);
//中间的小框线
Rectangle(529,171,621,351,255,255,255);
Rectangle(491,371,651,471,255,255,255);
Rectangle(529,491,621,591,255,255,255);
Rectangle(528,170,620,350,128,128,128);
Rectangle(490,370,650,470,128,128,128);
Rectangle(528,490,620,590,128,128,128);
//5个标记排列按钮
for(k=1; k<=5; k++)
{ SetSTurnsBDISP_M22(k, (k==trnSEL?1:0));}
//7个标记形式按钮
ShowAllShapeBTN();
_SyncShapeSEL(mrkSEL, 1);
//显示当前系中工作通道的圆块
for(t=1; t<VarST3000.UnitCounts; t++)
{
if(unit[t].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[t].submenu1.unitworksnum.j)//2007-2-9 11:55上午
{ Circle(22, 158+45*(t-1), 7, 128, 255, 128);}
}
//通道参数项选择按钮
g_SimParaID=0; //___色标设置
SyncSimPSEL22(1); //___需要重新设定光标
Button(20, 80, 70, 45, 0x81, (VarST3000.jobAB==1?"A":"B"), 192, 192, 192);
bFlagsINPUT22=0x00; //不允许输入
//___三个子选菜单按钮
XPButton(212, 710, 100, 50, 0);
ShowICO8840(7, 218, 715);
XPButton(462, 710, 100, 50, 1);
ShowICO8840(8, 468, 715);
XPButton(712, 710, 100, 50, 0);
ShowICO8840(9, 718, 715);
//
ClearCmdFlags(); //清除命令改动状态标志
break;
case 3:
//___清除客户区背景
ClearClientScr();
//___系切换按钮
Button(30, 100, 85, 45, 0x81, (VarST3000.jobAB==1?"A":"B"), 192, 192, 192);
//___移动波门按钮
tSTL=(VarST3000.Language?0x01:0x03);
Button(30, 402, 80, 45, tSTL, szptr_leftright[0][VarST3000.Language], 192, 192, 192); //left
Button(200,402, 80, 45, tSTL, szptr_leftright[1][VarST3000.Language], 192, 192, 192); //right
//___报警按钮
if(VarST3000.AlarmCtrlOnOff)
{ tSTL=0x10; ico=6;}
else
{ tSTL=0x00; ico=5;}
Button(30, 310, 85, 45, tSTL, NULL, 192, 192, 192);
ShowICO3232(ico, 53, 316); //___Alarm
//___速度显示
Rect(AlrAdjBox_M23_X, AlrAdjBox_M23_Y+AlrAdjBox_M23_H+5, AlrAdjBox_M23_W, 60, 1);
Bar(AlrAdjBox_M23_X+1, AlrAdjBox_M23_Y+AlrAdjBox_M23_H+6,
AlrAdjBox_M23_X+AlrAdjBox_M23_W, AlrAdjBox_M23_Y+AlrAdjBox_M23_H+64, 0, 0, 128);
memset(tBuff, 0, 10);
sprintf(tBuff, "%06.1f", g_LINESPEED);
SimLED(AlrAdjBox_M23_X+30, AlrAdjBox_M23_Y+AlrAdjBox_M23_H+12, tBuff);
ShowASCMemX(AlrAdjBox_M23_X+AlrAdjBox_M23_W-70, AlrAdjBox_M23_Y+AlrAdjBox_M23_H+30, 1, 2, "m/min", 0, 0, 255);
//___寻址按钮
if(SysSet.AddEnable)
{ tSTL=0x10; ico=12;}
else
{ tSTL=0x00; ico=11;}
Button(870, 240, 85, 45, tSTL, NULL, 192, 192, 192);
ShowICO3232(ico, 894, 246);
//___同步刻度和比例属性
if(VarST3000.jobAB==1)
{ tCofBan=SysSet.CofBanA;}
else
{ tCofBan=SysSet.CofBanB;}
//___波形默认比例观看(1倍)
if(tCofBan>=5000)
{ Scaling=MaxScale=4;}
else
{ Scaling=MaxScale=2;}
Button(870, 310, 85, 45, 0x00, NULL, 192, 192, 192);
ShowICO3232(13, 894, 316); //___1X zoom
//___整机工作状态 hjAWS_A表示A系; hjAWS_B表示B系.
GetEntireAuto(VarST3000.jobAB);
_SetAllWS_M23(); //___整机自动手动图标
//___整机智能 hjAptitudeFlag_A表示A系; hjAptitudeFlag_B表示B系.
GetEntireIntelligent(VarST3000.jobAB);
_SetAllSA_M23(); //___整机智能工作图标
//___调整框边框显示
Rect(AlrAdjBox_M23_X-2, AlrAdjBox_M23_Y-2,
AlrAdjBox_M23_W+4, AlrAdjBox_M23_H+4, 0);
Rect(AlrAdjBox_M23_X-1, AlrAdjBox_M23_Y-1,
AlrAdjBox_M23_W+2, AlrAdjBox_M23_H+2, 1);
//___告知A/D板采样切换
//______bit0表示采样1=4k pulse; 0=2k pulse.
//______bit1表示系属1=A系; 0=B系.
OUT7&=0xfc;
if(VarST3000.jobAB==1)
{ OUT7|=0x02;} //bit1=1 Convert to A系.
if(tCofBan>=5000)
{ OUT7|=0x01;} //bit0=1 Convert to 4k-Pulse.
outportb(0x302, OUT7);
delay(5);
//通道 以首个有效工作通道作为默认选中通道
UnitSEL_Old=0;
UnitSEL=0;
//绘制所有系内通道(可以点击) 和非本系的通道按钮(不可点击)
for(t=1; t<VarST3000.UnitCounts; t++)
{
memset(tBuff, 0, 10);
sprintf(tBuff, "%dU", t+1);
if( unit[t].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[t].submenu1.unitworksnum.j)
{ tSTL=0x81;
if(UnitSEL==0)
{ UnitSEL=UnitSEL_Old=(t+1);}
SetWrkMark23(t, 1); //___状态色块标记
}
else
{ tSTL=0x85;}
if(t==UnitSEL-1) { tSTL|=0x10;} //___首选通道按下
if(t<7)
{ Button(150, 50+50*t, 75, 35, tSTL, tBuff, 192, 192, 192);}
else
{ Button(270, 50+50*(t-6), 75, 35, tSTL, tBuff, 192, 192, 192);}
}
//检查是否存在工作色组
if(UnitSEL>0)
{ //存在
_SetVWS_M23(); //___纵向自动手动图标
_SetHWS_M23(); //___横向自动手动图标
_SetCnlSA_M23(); //___本组智能开关图标
//___误差修正框内容对应通道显示
wjrUAdj323(AlrAdjBox_M23_X+AlrAdjBox_M23_W/2-25, AlrAdjBox_M23_Y, BES_SHOW);
wjrDAdj323(AlrAdjBox_M23_X+AlrAdjBox_M23_W/2-25, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-25, BES_SHOW);
DispVAdj_M23();
if(unit[UnitSEL-1].submenu1.bitfield.hcontrol)
{ SetLRAdjVIS_M23(BES_SHOW); //___左右调节按钮显示
DispHAdj_M23();
DispHErr_M23(vRealErr[UnitSEL-1], hRealErr[UnitSEL-1]);
}
else
{ DispVErr_M23(vRealErr[UnitSEL-1]);}
ResetWavAttrib(UnitSEL-1, 0);
Rect(8, 466, 1008, 205, 1);
DrawWAVbk();
DrawRuler();
//波门地址显示
DispGateAddr();
//波门
DrawGate();
//通知该色组将模拟总线打开
CommandData[UnitSEL-1].Cmd6[6]|=0x01;
SendCnlData(UnitSEL-1, 0x06);
}
else
{ //不存在工作的色组
//通道纵向手动自动按钮 (默认显示手动)
Button(870, 100, 85, 45, 0x00, NULL, 192, 192, 192);
ShowICO3232(7, 894, 106);
//通道横向手动自动按钮 (默认显示手动)
Button(870, 170, 85, 45, 0x00, NULL, 192, 192, 192);
ShowICO3232(9, 894, 176);
//本组智能开关按钮 (默认显示本组智能关)
Button(870, 380, 85, 45, 0x00, NULL, 192, 192, 192);
ShowICO3232(16, 894, 386);
//
ResetWavAttrib(1, 0);
Rect(8, 466, 1008, 205, 1);
DrawWAVbk();
DrawRuler();
}
//___三个子选菜单按钮
XPButton(212, 710, 100, 50, 0);
ShowICO8840(7, 218, 715);
XPButton(462, 710, 100, 50, 0);
ShowICO8840(8, 468, 715);
XPButton(712, 710, 100, 50, 1);
ShowICO8840(9, 718, 715);
break;
default:
break;
}
}
/******************************
描述: 开关通道重新排列标准色序
******************************/
void SyncNewOrderBySEL22(void)
{
int jcnl;
char szB[20];
unsigned char aOrder=0;
unsigned char bOrder=0;
if(unit[0].submenu1.unitworksnum.i==1)
{ aOrder=1; unit[0].submenu1.unitworksnum.j=0;}
else if(unit[0].submenu1.unitworksnum.i==2)
{ bOrder=1; unit[0].submenu1.unitworksnum.j=0;}
//更新色序
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if(unit[jcnl].submenu1.unitworksnum.i==1)
{ unit[jcnl].submenu1.unitworksnum.j=aOrder;
aOrder++;
unit[jcnl].submenu1.ColorNum=unit[jcnl].submenu1.unitworksnum.j;
CommandData[jcnl].Cmd6[1]&=0xfe; //bit0=0 A系
}
else if(unit[jcnl].submenu1.unitworksnum.i==2)
{ unit[jcnl].submenu1.unitworksnum.j=bOrder;
bOrder++;
unit[jcnl].submenu1.ColorNum=unit[jcnl].submenu1.unitworksnum.j;
CommandData[jcnl].Cmd6[1]|=0x01; //bit0=1 B系
}
else
{ unit[jcnl].submenu1.unitworksnum.i=0;
unit[jcnl].submenu1.unitworksnum.j=0;
unit[jcnl].submenu1.ColorNum=unit[jcnl].submenu1.unitworksnum.j;
}
REC_Sub1(jcnl, 1); //记录unitworksnum
REC_Sub1(jcnl, 9); //记录ColorNum;
}
}
/******************************
描述: 显示波形界面的丢失提示色棒
******************************/
void SyncLapseMark(const unsigned char visible)
{
if(visible)
{ Bar(AlrAdjBox_M23_X-25, AlrAdjBox_M23_Y,
AlrAdjBox_M23_X-5, AlrAdjBox_M23_Y+AlrAdjBox_M23_H, 255, 255, 125);}
else
{ Bar(AlrAdjBox_M23_X-25, AlrAdjBox_M23_Y,
AlrAdjBox_M23_X-5, AlrAdjBox_M23_Y+AlrAdjBox_M23_H, 192, 192, 192);}
}
/******************************
描述: 整机手动与自动的转换
******************************/
void RespAllWorkStatus(void)
{
int jcnl,vICO;
unsigned char sty_b,vNewWKS;
unsigned char vMustSyncFlags[MAXCNL_3K]={0};
if(VarST3000.jobAB==1)
{
if( EntireStatus.EntireAuto_A )
{ EntireStatus.EntireAuto_A=0; vICO=1; sty_b=0x00;}
else
{ EntireStatus.EntireAuto_A=1; vICO=2; sty_b=0x10;}
vNewWKS=EntireStatus.EntireAuto_A;
}
else
{
if( EntireStatus.EntireAuto_B )
{ EntireStatus.EntireAuto_B=0; vICO=1; sty_b=0x00;}
else
{ EntireStatus.EntireAuto_B=1; vICO=2; sty_b=0x10;}
vNewWKS=EntireStatus.EntireAuto_B;
}
//HideMouse();
Button(30, 170, 85, 45, sty_b, NULL, 192, 192, 192);
ShowICO3232(vICO, 53, 176);
SyncLapseMark(0);
//ShowMouse();
//更新各通道的工作状态标志和相关的工作命令
for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
{
if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
unit[jcnl].submenu1.unitworksnum.j)
{ //刷新当前系的通道状态和命令
//____纵向自动手动
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -