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

📄 3kmenu7.c

📁 嵌入式开发 嵌入式开发 嵌入式开发
💻 C
📖 第 1 页 / 共 5 页
字号:
	case 1: // 标记排列
		for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
		{
			memset(uchar7, 0, 10);
			memset(echar7, 0, 10);
			uStyle=0x81;
			eStyle=(VarST3000.Language?0x0b:0x03); //change english style from 0x0f to 0x0b.
			if(unit[jcnl].submenu1.unitworksnum.i==1 &&
				unit[jcnl].submenu1.unitworksnum.j)
			{	//A系
				sprintf(uchar7, "A%dU", jcnl+1);
				if(vNewUnitSEL7==0)
				{	vNewUnitSEL7=jcnl+1;
					vOldUnitSEL7=vNewUnitSEL7;
					uStyle|=0x10;	//按下
					eStyle|=0x40;	//蓝色背景
				}
				jsuffix=unit[jcnl].submenu1.bitTurns.turnsoflabsA-1;
			}
			else if(unit[jcnl].submenu1.unitworksnum.i==2 &&
				    unit[jcnl].submenu1.unitworksnum.j)
			{	//B系
				sprintf(uchar7, "B%dU", jcnl+1);
				if(vNewUnitSEL7==0)
				{	vNewUnitSEL7=jcnl+1;
					vOldUnitSEL7=vNewUnitSEL7;
					uStyle|=0x10;	//按下
					eStyle|=0x40;	//蓝色背景
				}
				jsuffix=unit[jcnl].submenu1.bitTurns.turnsoflabsB-1;
			}
			else
			{	sprintf(uchar7, "%dU", jcnl+1);
				uStyle=0x85;
				eStyle=0x80;	
				jsuffix=0;
			}
			xNew=MenuAttr.sX+MenuAttr.tW+InstAttr.x_offset;
			yNew=MenuAttr.sY+InstAttr.y_offset+jcnl*(SizeAttrB.h+InstAttr.h_instance);
			Button(xNew, yNew, SizeAttrB.w, SizeAttrB.h, uStyle, uchar7, 192, 192, 192);
			Edit(xNew+SizeAttrB.w+InstAttr.v_instance, yNew,
					SizeAttrE.w, SizeAttrE.h, eStyle, szptr_m7_turns[jsuffix][VarST3000.Language]);
		}
		xNew=MenuAttr.sX+MenuAttr.tW+MenuAttr.bW+50;
		uStyle=(VarST3000.Language?0x81:0x03);	//暂时表示按钮风格
		Button(xNew, 224, 100, 50, uStyle, szptr_m7_turns[0][VarST3000.Language], 192, 192, 192);
		Button(xNew, 294, 100, 50, uStyle, szptr_m7_turns[1][VarST3000.Language], 192, 192, 192);
		Button(xNew, 364, 100, 50, uStyle, szptr_m7_turns[2][VarST3000.Language], 192, 192, 192);
		Button(xNew, 434, 100, 50, uStyle, szptr_m7_turns[3][VarST3000.Language], 192, 192, 192);
		Button(xNew, 504, 100, 50, uStyle, szptr_m7_turns[4][VarST3000.Language], 192, 192, 192);
		break;
	case 2:	//标准色序
		SyncDisp_M73(vSErSEL7);
		xNew=MenuAttr.sX+MenuAttr.tW+MenuAttr.bW+50;
		uStyle=(VarST3000.Language?0x81:0x03);	//暂时表示按钮风格
		Button(xNew, 224, 100, 50, uStyle, szptr_m7_3[0][VarST3000.Language], 192, 192, 192);	//色序加
		Button(xNew, 294, 100, 50, uStyle, szptr_m7_3[1][VarST3000.Language], 192, 192, 192);	//色序减
		break;
	case 3:	//波门宽度
		DrawNumKBoard(690, 100);
		for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
		{
			memset(uchar7, 0, 10);
			memset(echar7, 0, 10);
			sprintf(uchar7, "%dU", jcnl+1);
			sprintf(echar7, "%5d", unit[jcnl].submenu2.ValueWidth);
			uStyle=0x81;
			eStyle=0x0f;//(VarST3000.Language?0x0f:0x03);
			if( unit[jcnl].submenu1.unitworksnum.i &&
				unit[jcnl].submenu1.unitworksnum.j)
			{
				if(vNewUnitSEL7==0)
				{	vNewUnitSEL7=jcnl+1;
					vOldUnitSEL7=vNewUnitSEL7;
					uStyle|=0x10;	//按下
					eStyle|=0x40;	//蓝色背景
				}
			}
			xNew=MenuAttr.sX+MenuAttr.tW+InstAttr.x_offset;
			yNew=MenuAttr.sY+InstAttr.y_offset+jcnl*(SizeAttrB.h+InstAttr.h_instance);
			Button(xNew, yNew, SizeAttrB.w, SizeAttrB.h, uStyle, uchar7, 192, 192, 192);
			Edit(xNew+SizeAttrB.w+InstAttr.v_instance, yNew, SizeAttrE.w, SizeAttrE.h, eStyle, echar7);
		}
		// 清除输入缓冲区 屏蔽符号和小数 2位有效数
		ClearKBuffer();
		g_Klength=2; g_Kmask=0x03;
		break;
	case 4:	//标准设置	坐标计算复杂 20051028 14:47更新为固定坐标
		DrawNumKBoard(690, 100);
		vOldPNoSEL7=1;	//默认选择都放在标准选择按钮上
		vNewPNoSEL7=1;	//默认选择都放在标准选择按钮上
		//按钮
		uStyle=(VarST3000.Language?0x81:0x03);
		Button(205, 220, 100, 35, uStyle, szptr_m7_2[0][VarST3000.Language], 192, 192, 192);	//标准选择
		Button(205, 270, 100, 35, uStyle, szptr_m7_2[3][VarST3000.Language], 192, 192, 192);	//标记角度
		Button(205, 320, 100, 35, uStyle, szptr_m7_3[2][VarST3000.Language],192, 192, 192);	//色标间距
		Button(355, 170, 100, 35, uStyle, szptr_m7_2[1][VarST3000.Language], 192, 192, 192);		//A系列
		Button(505, 170, 100, 35, uStyle, szptr_m7_2[2][VarST3000.Language], 192, 192, 192);		//B系列
		//内容框
		//标准选择
		eStyle=(VarST3000.Language?0x01:0x03);
		Edit(355, 220, 100, 35, (eStyle|0x40), szptr_m7_2[4+SysSet.bitStand.AsetStandard][VarST3000.Language]);
		Edit(505, 220, 100, 35, eStyle, szptr_m7_2[4+SysSet.bitStand.BsetStandard][VarST3000.Language]);
		//标记角度
		eStyle=0x0F;
		memset(echar7, 0, 10);
		sprintf(echar7, "%5d", SysSet.ASignTangle);
		Edit(355, 270, 100, 35, eStyle, echar7);
		memset(echar7, 0, 10);
		sprintf(echar7, "%5d", SysSet.BSignTangle);
		Edit(505, 270, 100, 35, eStyle, echar7);
		//色标间距
		memset(echar7, 0, 10);
		sprintf(echar7, "%5.2f", SysSet.ColorWidthA/100.0);
		Edit(355, 320, 100, 35, eStyle, echar7);
		memset(echar7, 0, 10);
		sprintf(echar7, "%5.2f", SysSet.ColorWidthB/100.0);
		Edit(505, 320, 100, 35, eStyle, echar7);
		//
		uStyle=(VarST3000.Language?0x81:0x03);	//暂时表示按钮风格
		Button(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW+50, 450, 100, 50, uStyle, szptr_m7_2[4][VarST3000.Language], 192, 192, 192);	//标准一
		Button(MenuAttr.sX+MenuAttr.tW+MenuAttr.bW+170, 450, 100, 50, uStyle, szptr_m7_2[5][VarST3000.Language], 192, 192, 192);	//标准二
		break;
	case 5:	//纵横向电机正反转
		xNew=MenuAttr.sX+MenuAttr.tW;
		Rectangle(xNew+15, MenuAttr.sY+50, xNew+480, MenuAttr.sY+MenuAttr.bH-50, 128, 128, 128);
		Rectangle(xNew+16, MenuAttr.sY+51, xNew+481, MenuAttr.sY+MenuAttr.bH-49, 255, 255, 255);
		Line(xNew+170, MenuAttr.sY+52, xNew+170, MenuAttr.sY+MenuAttr.bH-51, 128, 128, 128);
		Line(xNew+325, MenuAttr.sY+52, xNew+325, MenuAttr.sY+MenuAttr.bH-51, 128, 128, 128);
		Bar(xNew+65, MenuAttr.sY+50, xNew+120, MenuAttr.sY+52, 192, 192, 192);
		Bar(xNew+220,MenuAttr.sY+50, xNew+275, MenuAttr.sY+52, 192, 192, 192);
		Bar(xNew+375,MenuAttr.sY+50, xNew+430, MenuAttr.sY+52, 192, 192, 192);
		if(VarST3000.Language)
		{	ShowASCMem(xNew+75, MenuAttr.sY+42, "VERT", 0, 0, 0);
			ShowASCMem(xNew+230,MenuAttr.sY+42, "HORZ", 0, 0, 0);
			ShowASCMem(xNew+378,MenuAttr.sY+42, "SINGLE", 0,0,0);
		}
		else
		{	ShowGB2312(xNew+75, MenuAttr.sY+42, "纵向", 0, 0, 0);
			ShowGB2312(xNew+230,MenuAttr.sY+42, "横向", 0, 0, 0);
			ShowGB2312(xNew+378,MenuAttr.sY+42, "单标记", 0,0,0);
		}
		for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
		{	SyncMRev76(jcnl, 0x07);}
		break;
	case 6:	//横向控制开关
		Rectangle(MenuAttr.sX+MenuAttr.tW+50, MenuAttr.sY+50,
					MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-50, MenuAttr.sY+MenuAttr.bH-50, 128, 128, 128);
		Rectangle(MenuAttr.sX+MenuAttr.tW+51, MenuAttr.sY+51,
					MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-49, MenuAttr.sY+MenuAttr.bH-49, 255, 255, 255);
		for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
		{	SyncHCtrl77(jcnl);}
		break;
/*******************************************/
    case 7: // 系统配置表
        {
            #ifndef ST3000_TMODE
            int t,iCtrlUnitID,rLEN,iCtrlExist=0;
            unsigned long ttmsouts=0L;
            #endif
            DrawCfgTable(MenuAttr.sX+MenuAttr.tW+(MenuAttr.bW-SizeConfig.w)/2, MenuAttr.sY+80);
            SimKB_MS78(690, 100);
            #ifndef ST3000_TMODE
            for(t=0; t<MAXCNL_3K; t++)
            {
                checkbuffer[t].unitnumber=0;
                smsg1.id=(t<<6);
                smsg1.rtr=0;
                smsg1.dlen=0;
                CAN_SendMsg(smsg1);
            }
            VarST3000.UnitCounts=VarST3000.UnitActuals=0;
            ttmsouts=0L;
            delay(2000);
            while( (VarST3000.UnitActuals<MAXCNL_3K) && (ttmsouts<100000) )
            {
                if( CAN_RecvMsg(&rmsg1) )
                {
                    if( (rmsg1.id&0x3f)==0) 
                    {   // 确认是单元上报单元编号
                    	
                        iCtrlExist=0;
                        iCtrlUnitID=((rmsg1.id>>6)&0x0f);
                        if(rmsg1.dlen!=3)
                        {	continue;}
                        if( iCtrlUnitID<1 || iCtrlUnitID>MAXCNL_3K )
                        {   continue;}
                        for(t=1; t<=VarST3000.UnitActuals; t++)
                        {
                            if( rmsg1.data[0]==checkbuffer[t].buffer[4] &&
                                rmsg1.data[1]==checkbuffer[t].buffer[5] &&
                                rmsg1.data[2]==checkbuffer[t].buffer[6] &&
                                iCtrlUnitID==checkbuffer[t].unitnumber)
                            {   iCtrlExist=1; break;}
                        }
                        if( (!iCtrlExist) && (rmsg1.data[0]) )
                        {
                            VarST3000.UnitActuals++;
                            checkbuffer[VarST3000.UnitActuals].buffer[3] =iCtrlUnitID;
                            checkbuffer[VarST3000.UnitActuals].buffer[4] =rmsg1.data[0];
                            checkbuffer[VarST3000.UnitActuals].buffer[5] =rmsg1.data[1];
                            checkbuffer[VarST3000.UnitActuals].buffer[6] =rmsg1.data[2];
                            checkbuffer[VarST3000.UnitActuals].unitnumber=iCtrlUnitID;
                            ttmsouts=0L; 
                        }
                    }
                }
                else {   ttmsouts++;}
            }
            /*
            排序 并且刷新配置表显示
            */       
            ReSortCURecv();
            DrawCfgTable(MenuAttr.sX+MenuAttr.tW+(MenuAttr.bW-SizeConfig.w)/2, MenuAttr.sY+80);
            SysSet.unitscount=VarST3000.UnitCounts=MAXCNL_3K; // 单元最大没有限制 无论多少都认为是13色的机械
            #endif
            // 清除输入缓冲区 屏蔽小数和符号输入 限定为2有效数长度
            ClearKBuffer();
            g_Klength=2; g_Kmask=0x03;
        }
        break;
/*******************************************/
    case 8: //恢复出厂参数
        xNew=MenuAttr.sX+MenuAttr.tW+(MenuAttr.bW-400)/2;
        yNew=MenuAttr.sY+(MenuAttr.bH-240)*2/5;
        Win32Dlg(xNew, yNew, 400, 240);
        if(VarST3000.Language)
        {   ShowASCMem(xNew+60, yNew+60, "RESTORE SYSTEM PARAMETER,YES OR NO?", 255, 0, 0);}
        else
        {   ShowGB2312(xNew+60, yNew+60, "系统将恢复出厂参数,请确认是否恢复?", 255, 0, 0);}
        Button(xNew+60, yNew+180, 100, 40, 0x81, "OK", 192, 192, 192);
        Button(xNew+240,yNew+180, 100, 40, 0x81, "Cancel", 192, 192, 192);
        break;
    case 9://二次印刷开关
        Rectangle(MenuAttr.sX+MenuAttr.tW+50, MenuAttr.sY+50,
                    MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-50, MenuAttr.sY+MenuAttr.bH-50, 128, 128, 128);
        Rectangle(MenuAttr.sX+MenuAttr.tW+51, MenuAttr.sY+51,
                    MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-49, MenuAttr.sY+MenuAttr.bH-49, 255, 255, 255);
        for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
        {   SyncSecPrn711(jcnl);}
        break;
    case 10://屏幕保护
        Rectangle(MenuAttr.sX+MenuAttr.tW+50, MenuAttr.sY+50,
                    MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-50, MenuAttr.sY+MenuAttr.bH-50, 128, 128, 128);
        Rectangle(MenuAttr.sX+MenuAttr.tW+51, MenuAttr.sY+51,
                    MenuAttr.sX+MenuAttr.tW+MenuAttr.bW-49, MenuAttr.sY+MenuAttr.bH-49, 255, 255, 255);
        for(jcnl=1; jcnl<VarST3000.UnitCounts; jcnl++)
        {   SyncSCRPROT712(jcnl);}
        break;
    default:
        break;
    }
}

/******************************
 描述: 检查用户所修改的单元号是否有重复号
******************************/
unsigned CheckREPEAT(void)
{
	int i,j;
	unsigned retvalue=0;
	for(i=1; i<VarST3000.UnitActuals; i++)
	{
		for(j=i+1; j<=VarST3000.UnitActuals; j++)
		{
			if(checkbuffer[i].buffer[3]==checkbuffer[j].buffer[3])
			{
				retvalue=1;
				i=VarST3000.UnitActuals+10;
				break;
			}
		}
	}
	return(retvalue);
}

/******************************
 描述: 系统配置页事件处理函数
******************************/
void RespPAGE7_M7(const int x, const int y)
{
	int  kNO,kInteger7;
	int  j,w_sysno,x_machno=x+SizeConfig.w*4/5+5;
	char vchar[20];
	unsigned char onceflag78=0;
	for(j=1; j<=VarST3000.UnitActuals; j++)
	{
		if( (ClickCol>=x_machno && ClickCol<=x_machno+SizeConfig.w/5-5) &&
			(ClickRow>=y+j*30-1 && ClickRow<=y+j*30+23) && vItemSEL7!=j)
		{
			if(vItemSEL7==100)
			{	//年
				Bar(x+SizeConfig.w/3+3, y+SizeConfig.h+41,
					x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)-8, y+SizeConfig.h+74, 255, 255, 255);
				memset(vchar, 0, 20);
				sprintf(vchar, "%02d", system1[0].sub1.B1);
				ShowGB2312(x+SizeConfig.w/3+3+(((SizeConfig.w*2/3)/3)-40)/2, y+SizeConfig.h+50, vchar, 0, 0, 0);
			}
			else if(vItemSEL7==110)
			{	//月
				Bar(x+SizeConfig.w/3+3+(SizeConfig.w*2/3)/3, y+SizeConfig.h+41,
					x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)*2-8, y+SizeConfig.h+74, 255, 255, 255);
				memset(vchar, 0, 20);
				sprintf(vchar, "%02d", system1[0].sub1.B2);
				ShowGB2312(x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)+(((SizeConfig.w*2/3)/3)-40)/2, y+SizeConfig.h+50, vchar, 0, 0, 0);
			}
			else if(vItemSEL7==120)
			{	//编号
				Bar(x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)*2, y+SizeConfig.h+41,
					x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)*3-5, y+SizeConfig.h+74, 255, 255, 255);
				memset(vchar, 0, 20);
				sprintf(vchar, "%03d", system1[0].sub1.B3);
				ShowGB2312(x+SizeConfig.w/3+3+((SizeConfig.w*2/3)/3)*2+(((SizeConfig.w*2/3)/3)-48)/2, y+SizeConfig.h+50, vchar, 0, 0, 0);
			}
			else if(vItemSEL7>0 && vItemSEL7<=VarST3000.UnitActuals)
			{
				Bar(x_machno-1, y+vItemSEL7*30-1,
					x_machno+SizeConfig.w/5-7, y+vItemSEL7*30+23, 255, 255, 255);
				memset(vchar, 0, 20);
				sprintf(vchar, "%02d", checkbuffer[vItemSEL7].buffer[3]+1);
				ShowGB2312(x+SizeConfig.w-32, y+vItemSEL7*30+3, vchar, 0, 0, 0);
			}
			Bar(x_machno-1, y+j*30-1, x_machno+SizeConfig.w/5-7, y+j*30+23, 255, 0, 0);
			memset(vchar, 0, 20);
			sprintf(vchar, "%02d", checkbuffer[j].buffer[3]+1);
			ShowGB2312(x+SizeConfig.w-32, y+j*30+3, vchar, 255, 255, 255);
			vItemSEL7=j;
			onceflag78=1;
			ClearKBuffer();

⌨️ 快捷键说明

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