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

📄 3kmenu2x.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 5 页
字号:
            {
                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 + -