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

📄 3kmenu2x.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 5 页
字号:
			unit[jcnl].submenu1.bitfield.hand_auto=vNewWKS;
			CommandData[jcnl].Cmd6[2]=(vNewWKS?0x03:0x00);
			if(unit[jcnl].submenu1.bitfield.hcontrol)
			{	//横向开关
				unit[jcnl].submenu1.bitfield.h_motorruning=vNewWKS;
				if(vNewWKS)
				{	CommandData[jcnl].Cmd6[6]|=0x20;}
				else
				{	CommandData[jcnl].Cmd6[6]&=0xdf;}
			}
			//对于智能开的一定要关掉
			if(unit[jcnl].submenu1.bitfield.autowork)
			{	unit[jcnl].submenu1.bitfield.autowork=0;
				SetwjrSearAddrFlags(jcnl, 0);
				CommandData[jcnl].Cmd6[1]&=0x09;
			}
			vMustSyncFlags[jcnl]=1;
			//___刷新标记
			SetWrkMark23(jcnl, 1);
		}
	}
	if(vNewWKS)
	{	NotifyCU789AB(VarST3000.jobAB);} //自动. 这里面没有发送6号工作命令
	else //手动
	{
		if(VarST3000.jobAB==1)
		{	EntireStatus.EntireIntelligent_A=0;}
		else
		{	EntireStatus.EntireIntelligent_B=0;}
		//____整机智能关闭
		Button(30, 240, 85, 45, 0x00, NULL, 192, 192, 192);
		ShowICO3232(3, 53, 246);
		//____本组智能关闭
		Button(870, 380, 85, 45, 0x00, NULL, 192, 192, 192);
		ShowICO3232(16, 894, 386);
	}
	_SetVWS_M23(); //___纵向自动手动图标
	if( unit[UnitSEL-1].submenu1.bitfield.hcontrol )
	{	_SetHWS_M23();} //___横向自动手动图标
	//___通知控制单元更新状态
	for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
	{
		if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
			unit[jcnl].submenu1.unitworksnum.j && vMustSyncFlags[jcnl])
		{	SendCnlData(jcnl, 0x06);}
	}
}

/***
 波形显示放大
***/
void RespZOOM(void)
{
    unsigned tCofBan=( (VarST3000.jobAB==1) ? SysSet.CofBanA : SysSet.CofBanB );
    //Button(870, 310, 85, 45, 0x10, NULL, 192, 192, 192);
    Rect(870,310,85,45,1);//2007-4-12 10:43 
    delay(BTN_DELAY);
    Button(870, 310, 85, 45, 0x00, NULL, 192, 192, 192);
    if( Scaling==1 )
    {
        if( tCofBan>=5000 ) {   Scaling=4;}
        else {   Scaling=2;}
        if( Scaling==MaxScale )
        {   ShowICO3232(13, 894, 316);}
        else
        {   ShowICO3232(14, 894, 316);}
    }
    else if( Scaling==2 )
    {
        Scaling=1;
        if( tCofBan>=5000 )
        {   ShowICO3232(15, 894, 316);}
        else
        {   ShowICO3232(14, 894, 316);}
    }
    else if( Scaling==4 )
    {
        Scaling=2;
        ShowICO3232(14, 894, 316);
    }
    ResetWavAttrib(UnitSEL-1, 1);
    DrawWAVbk();
    DrawRuler();
    DrawGate();
    MoveTo(displaybar[UnitSEL-1]+displaywidth[UnitSEL-1]/(Scaling*2), 468);
    LineTo(displaybar[UnitSEL-1]+displaywidth[UnitSEL-1]/(Scaling*2), 668, 0, 0, 255);
    if( adresult )
    {   DrawWAVfr(lineheader[UnitSEL-1]); DrawZ();}
}

/******************************
 描述: 显示指定通道的内容显示
******************************/
void DispYTZFact_M21(const int iCNL)
{
	char  tSZ[10]={0};
	float vFLOAT;
	unsigned int  vCBRec;
	unsigned char vSEL,hSEL;
	unsigned char vSErRec=unit[iCNL].submenu1.unitworksnum.i;
	if(vSErRec==1)
	{	vSEL=ytzVSELa; hSEL=ytzHSELa; vCBRec=SysSet.CofBanA;}
	else
	{	vSEL=ytzVSELb; hSEL=ytzHSELb; vCBRec=SysSet.CofBanB;}
	//___纵向实际值显示
	if(vSEL==0) //纵向重复值
	{	sprintf(tSZ, "%6.2f", unit[iCNL].submenu6.VRepeatValue/100.0);}
	else if(vSEL==1) //纵向计算值
	{	vFLOAT=unit[iCNL].submenu6.length/100.0+0.005;
		if(vFLOAT<50) { vFLOAT+=(vCBRec/10.0);}
		sprintf(tSZ, "%8.2f", vFLOAT); 
	}
	else //if(vSEL==2) //纵向设定值
	{	sprintf(tSZ, "%6.2f", unit[iCNL].submenu6.VSetupValue/100.0);}
	Edit(270, 138+40*iCNL, 85, 32, 0x05, tSZ);
	//___横向实际值显示
	if( unit[iCNL].submenu1.bitfield.hcontrol )
	{
		if(hSEL==0) //横向重复值
		{	sprintf(tSZ, "%6.2f", unit[iCNL].submenu6.HRepeatValue/100.0);}
		else //if(hSEL==1) //横向设定值
		//{	sprintf(tSZ, "%6.2f", unit[iCNL].submenu6.HSetupValue/100.0);}
		{	sprintf(tSZ, "%6.2f", (unit[iCNL].submenu6.HSetupValue+unit[iCNL].submenu6.HMaxValue)/100.0);}
		Edit(470, 138+40*iCNL, 85, 32, 0x05, tSZ);
	}
}

/******************************
 描述:	预套准(选择值刷新屏幕)
******************************/
void SyncVSEL_YTZ(const int iSEL)
{
	if( !GetJOB_ytz(VarST3000.jobAB) )
	{	//表示有通道并且没有处于开始状态
		switch(iSEL)
		{
		case 1: //设定值
			{
				int  jcnl;
				char tSZ[10];
				unsigned char sty_b=(VarST3000.Language?0x01:0x03);
				hjYTZButton(1, (sty_b));      //___纵向重复值未选
				hjYTZButton(4, (sty_b));      //___横向重复值未选
				hjYTZButton(2, (sty_b));      //___纵向计算值未选
				hjYTZButton(3, (sty_b|0x10)); //___纵向设定值选中
				hjYTZButton(5, (sty_b|0x10)); //___横向设定值选中
				if(VarST3000.jobAB==1)
				{	ytzVSELa=2; ytzHSELa=1;}
				else
				{	ytzVSELb=2; ytzHSELb=1;}
				ytzSetTitle(3); //___纵向设定
				ytzSetTitle(5); //___横向设定
				for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
				{
					if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
						unit[jcnl].submenu1.unitworksnum.j)
					{	//whitebackground
						//___纵向设定值
						memset(tSZ, 0, 10);
						sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.VSetupValue/100.0);
						Edit(270, 138+40*jcnl, 85, 32, 0x00, NULL);
						Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
						//___横向设定值
						memset(tSZ, 0, 10);
						//sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.HSetupValue/100.0);
						sprintf(tSZ, "%6.2f", (unit[jcnl].submenu6.HSetupValue+unit[jcnl].submenu6.HMaxValue)/100.0);
						Edit(470, 138+40*jcnl, 85, 32, 0x00, NULL);
						Edit(570, 138+40*jcnl, 85, 32, 0x05, tSZ);
					}
				}
			}
			break;
		case 2: //重复值
			{
				int  jcnl;
				char tSZ[10];
				unsigned char sty_b=(VarST3000.Language?0x01:0x03);
				hjYTZButton(1, (sty_b|0x10)); //___纵向重复值选中
				hjYTZButton(4, (sty_b|0x10)); //___横向重复值选中
				hjYTZButton(2, (sty_b));      //___纵向计算值未选
				hjYTZButton(3, (sty_b));      //___纵向设定值未选
				hjYTZButton(5, (sty_b));      //___横向设定值未选
				if(VarST3000.jobAB==1)
				{	ytzVSELa=0; ytzHSELa=0;}
				else
				{	ytzVSELb=0; ytzHSELb=0;}
				ytzSetTitle(1); //___纵向重复
				ytzSetTitle(4); //___横向重复
				for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
				{
					if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
						unit[jcnl].submenu1.unitworksnum.j)
					{	//whitebackground
						//___纵向实际和纵向重复
						memset(tSZ, 0, 10);
						sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.VRepeatValue/100.0);
						Edit(270, 138+40*jcnl, 85, 32, 0x00, NULL);
						Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
						//___横向实际和横向重复
						memset(tSZ, 0, 10);
						sprintf(tSZ, "%6.2f", unit[jcnl].submenu6.HRepeatValue/100.0);
						Edit(470, 138+40*jcnl, 85, 32, 0x00, NULL);
						Edit(570, 138+40*jcnl, 85, 32, 0x05, tSZ);
					}
				}
			}
			break;
		case 3: //计算值
			{
				int   jcnl;
				char  tSZ[10];
				float vFLOAT;
				unsigned char sty_b=(VarST3000.Language?0x01:0x03);
				unsigned int  vCBRec=(VarST3000.jobAB==1?SysSet.CofBanA:SysSet.CofBanB);
				hjYTZButton(1, (sty_b));      //___弹起纵向重复值
				hjYTZButton(2, (sty_b|0x10)); //___选中纵向计算值
				hjYTZButton(3, (sty_b));      //___弹起纵向设定值
				if(VarST3000.jobAB==1)
				{	ytzVSELa=1;}
				else
				{	ytzVSELb=1;}
				ytzSetTitle(2); //纵向计算值
				for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
				{
					if( unit[jcnl].submenu1.unitworksnum.i==VarST3000.jobAB &&
						unit[jcnl].submenu1.unitworksnum.j)
					{	//whitebackground
						//vert(ONLY)
						vFLOAT = unit[jcnl].submenu6.length/100.0+0.005;
						if(vFLOAT<50) { vFLOAT+=(vCBRec/10.0);}
						memset(tSZ, 0, 10);
						sprintf(tSZ, "%8.2f", vFLOAT); 
						Edit(270, 138+40*jcnl, 85, 32, 0x00, NULL);
						Edit(370, 138+40*jcnl, 85, 32, 0x05, tSZ);
					}
				}
			}
			break;
		default:
			break;
		}
	}
}



/******************************
 描述:	横向报警区域(带清除背景的功能)
******************************/
void SyncNewCNLh_Range(void)
{
	int		vX,vY;
	int		vAlrNew,hAlrNew;
	vAlrNew=unit[UnitSEL-1].submenu1.v_alarm;
	hAlrNew=unit[UnitSEL-1].submenu1.h_alarm;
	if(vAlrNew>=100)	{	vAlrNew=100;}
	if(hAlrNew>=100)	{	hAlrNew=100;}
	//clear background of range border
	Bar(AlrAdjBox_M23_X+26, AlrAdjBox_M23_Y+26,
		AlrAdjBox_M23_X+AlrAdjBox_M23_W-26, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-26, 192, 192, 192);
	//horzation border
	Line(AlrAdjBox_M23_X+26, AlrAdjBox_M23_Y+AlrAdjBox_M23_W/2,
			AlrAdjBox_M23_X+AlrAdjBox_M23_W-26, AlrAdjBox_M23_Y+AlrAdjBox_M23_H/2, 0, 0, 0);
	//vertical border
	Line(AlrAdjBox_M23_X+AlrAdjBox_M23_W/2, AlrAdjBox_M23_Y+26,
			AlrAdjBox_M23_X+AlrAdjBox_M23_W/2, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-26, 0, 0, 0);
	//left.right & top.bottom range border
	vX=AlrAdjBox_M23_X+AlrAdjBox_M23_W/2;
	vY=AlrAdjBox_M23_Y+AlrAdjBox_M23_H/2;
	Rectangle(vX-5-hAlrNew, vY-5-vAlrNew, vX+5+hAlrNew, vY+5+vAlrNew, 0, 0, 0);
}

/******************************
 描述:	纵向报警区域(带清除背景的功能)
******************************/
void SyncNewCNLv_Range(void)
{
	int		vX,vY;
	int		vAlrNew;
	vAlrNew=unit[UnitSEL-1].submenu1.v_alarm;
	if(vAlrNew>=100)	{	vAlrNew=100;}
	vX=AlrAdjBox_M23_X+AlrAdjBox_M23_W/2;
	vY=AlrAdjBox_M23_Y+AlrAdjBox_M23_H/2;
	//clear background of range border
	Bar(AlrAdjBox_M23_X+26, AlrAdjBox_M23_Y+26,
		AlrAdjBox_M23_X+AlrAdjBox_M23_W-26, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-26, 192, 192, 192);
	//left.right border
	Line(vX-10, AlrAdjBox_M23_Y+26, vX-10, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-26, 0, 0, 0);
	Line(vX+10, AlrAdjBox_M23_Y+26, vX+10, AlrAdjBox_M23_Y+AlrAdjBox_M23_H-26, 255, 255, 255);
	//top.bottom range border
	Line(vX-9, vY-5-vAlrNew, vX+9, vY-5-vAlrNew, 0, 0, 0);
	Line(vX-9, vY+5+vAlrNew, vX+9, vY+5+vAlrNew, 0, 0, 0);
}

/******************************
 描述: 设置预套准命令
 参数:
 	-ichanel	通道号
 	-value		值
 	-flag		纵向 还是 横向
******************************/
void RespAddrEnable23(void)
{
	int vICO;
	unsigned char vStyle;
	if(SysSet.AddEnable)
	{	SysSet.AddEnable=0;
		vICO=11; vStyle=0x00;
	}
	else
	{	SysSet.AddEnable=1;
		vICO=12; vStyle=0x10;
	}
	Button(870, 240, 85, 45, vStyle, NULL, 192, 192, 192);
	ShowICO3232(vICO, 894, 246);
}



/******************************
 描述:	左移波门
******************************/
void RespMoveGateL(void)
{
	unsigned char _tofSysTurns;
	Button(30, 402, 80, 45, (VarST3000.Language?0x11:0x13), szptr_leftright[0][VarST3000.Language], 192, 192, 192);	//left
	delay(15);
	Button(30, 402, 80, 45, (VarST3000.Language?0x01:0x03), szptr_leftright[0][VarST3000.Language], 192, 192, 192);	//left
	unit[UnitSEL-1].submenu1.addressofwav--;
	if( unit[UnitSEL-1].submenu1.addressofwav<0 )
	{	unit[UnitSEL-1].submenu1.addressofwav+=2000;}
	addrpoint=unit[UnitSEL-1].submenu1.addressofwav*MaxScale/2;
	if(VarST3000.jobAB==1)
	{	_tofSysTurns=SysSet.bitTurns.TurnofLabsA;}
	else
	{	_tofSysTurns=SysSet.bitTurns.TurnofLabsB;}
	if(_tofSysTurns==2 || _tofSysTurns==5)	//逆序
	{	lineheader[UnitSEL-1]=addrpoint-2*RulerLength;}
	else
	{	lineheader[UnitSEL-1]=addrpoint+2*RulerLength+displaywidth[UnitSEL-1]-1000*Scaling;}
	displaybar[UnitSEL-1]=12+(addrpoint-lineheader[UnitSEL-1])/Scaling;
	if(lineheader[UnitSEL-1]<0)
	{	lineheader[UnitSEL-1]+=1000*MaxScale;}
	//
	SendCnlData(UnitSEL-1, 0x08);
	//
	DispGateAddr();
	//
	DrawWAVbk();
	DrawGate();
	if(adresult)
	{
		DrawWAVfr(lineheader[UnitSEL-1]);
		DrawZ();
	}
}

/******************************
 描述:	右移波门
******************************/
void RespMoveGateR(void)
{
	unsigned char _tofSysTurns;
	Button(200,402, 80, 45, (VarST3000.Language?0x11:0x13), szptr_leftright[1][VarST3000.Language], 192, 192, 192);	//right
	delay(15);
	Button(200,402, 80, 45, (VarST3000.Language?0x01:0x03), szptr_leftright[1][VarST3000.Language], 192, 192, 192);	//right
	unit[UnitSEL-1].submenu1.addressofwav++;
	if( unit[UnitSEL-1].submenu1.addressofwav>=2000 )
	{	unit[UnitSEL-1].submenu1.addressofwav-=2000;}
	addrpoint=unit[UnitSEL-1].submenu1.addressofwav*MaxScale/2;
	if(VarST3000.jobAB==1)
	{	_tofSysTurns=SysSet.bitTurns.TurnofLabsA;}
	else
	{	_tofSysTurns=SysSet.bitTurns.TurnofLabsB;}
	if(_tofSysTurns==2 || _tofSysTurns==5)	//逆序
	{	lineheader[UnitSEL-1]=addrpoint-2*RulerLength;}
	else
	{	lineheader[UnitSEL-1]=addrpoint+2*RulerLength+displaywidth[UnitSEL-1]-1000*Scaling;}
	displaybar[UnitSEL-1]=12+(addrpoint-lineheader[UnitSEL-1])/Scaling;
	if(lineheader[UnitSEL-1]<0)
	{	lineheader[UnitSEL-1]+=1000*MaxScale;}
	//
	SendCnlData(UnitSEL-1, 0x08);
	//
	DispGateAddr();
	//
	DrawWAVbk();
	DrawGate();
	if(adresult)
	{
		DrawWAVfr(lineheader[UnitSEL-1]);
		DrawZ();

⌨️ 快捷键说明

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