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

📄 cncparse.c

📁 根据数控编程需要
💻 C
📖 第 1 页 / 共 5 页
字号:
         				}
         			else {
         				data->Gcode[4]=MacroBuf[Gcode-200];
         				}
          			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
         			if (flag==1) {
         				data->Gcode[5]=-MacroBuf[Gcode-200];
         				}
         			else {
         				data->Gcode[5]=MacroBuf[Gcode-200];
         				}
          			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
  		}
	else if ((Gcode>=500)&&(Gcode<=515)){
  		switch ((int)(MacroBuf[Gcode-468])) {
  			case  4:                 //00:G04 G10 G28 G39 G50 G65 G70 G71 G72 G73 G74 G75 G7
  			case  10:
  			case  28:
  			case  39:
  			case  50:
  			case  65:
  			case  70:
  		       case  71:
          		case  72:
          		case  73:
         		case  74:
       		case  75:
        		case  76:
         			if (flag==1) {
         				data->Gcode[0]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[0]=MacroBuf[Gcode-468];
         				}
          			break;

       		case  0:                  //01: G00 G01 G02 G03 G32 G33 G90 G92 G94 
         	    	case  1:
       		case  2:       	
       		case  3:       	
       		case  32:       	
         		case  33:       	
       		case  90:       	
        		case  92:       	
        		case  94:       	
         			if (flag==1) {
         				data->Gcode[1]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[1]=MacroBuf[Gcode-468];
         				}
          			break;

        		case  96:               //02: G96 G97
       		case  97:
         			if (flag==1) {
         				data->Gcode[2]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[2]=MacroBuf[Gcode-468];
         				}
          			break;

        		case  98:             //03: G98 G99
        		case  99:
         			if (flag==1) {
         				data->Gcode[3]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[3]=MacroBuf[Gcode-468];
         				}
          			break;
 
        		case  20:           //06: G20 G21
       		case  21:
         			if (flag==1) {
         				data->Gcode[4]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[4]=MacroBuf[Gcode-468];
         				}
          			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
         			if (flag==1) {
         				data->Gcode[5]=-MacroBuf[Gcode-468];
         				}
         			else {
         				data->Gcode[5]=MacroBuf[Gcode-468];
         				}
          			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
  		}
  	else if ((Gcode>=9200)&&(Gcode<=9231)){
  		Gcode=Gcode-(int)(Gcode/1000.0)*1000;
		if ((MacroBuf[(int)(Gcode-200)]<200)||((MacroBuf[(int)(Gcode-200)]>231)&&(MacroBuf[(int)(Gcode-200)]<500))||(MacroBuf[(int)(Gcode-200)]>515)) {
			VarOverLimitError();
			}
		if((MacroBuf[(int)(Gcode-200)]>=200)&&(MacroBuf[(int)(Gcode-200)]<=231)){
  		switch ((int)(MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)])) {
  			case  4:                 //00:G04 G10 G28 G39 G50 G65 G70 G71 G72 G73 G74 G75 G7
  			case  10:
  			case  28:
  			case  39:
  			case  50:
  			case  65:
  			case  70:
  		       case  71:
          		case  72:
          		case  73:
         		case  74:
       		case  75:
        		case  76:
        			if (flag==1) {
        				data->Gcode[0]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[0]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
          			break;

       		case  0:                  //01: G00 G01 G02 G03 G32 G33 G90 G92 G94 
         	    	case  1:
       		case  2:       	
       		case  3:       	
       		case  32:       	
         		case  33:       	
       		case  90:       	
        		case  92:       	
        		case  94:       	
        			if (flag==1) {
        				data->Gcode[1]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[1]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			break;

        		case  96:               //02: G96 G97
       		case  97:
        			if (flag==1) {
        				data->Gcode[2]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[2]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
          			break;

        		case  98:             //03: G98 G99
        		case  99:
        			if (flag==1) {
        				data->Gcode[3]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[3]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			break;
 
        		case  20:           //06: G20 G21
       		case  21:
        			if (flag==1) {
        				data->Gcode[4]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[4]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
         			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
        			if (flag==1) {
        				data->Gcode[5]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
        			else {
        				data->Gcode[5]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-200)];
        				}
       			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
  		}
		else{
			switch ((int)(MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)])) {
  			case  4:                 //00:G04 G10 G28 G39 G50 G65 G70 G71 G72 G73 G74 G75 G7
  			case  10:
  			case  28:
  			case  39:
  			case  50:
  			case  65:
  			case  70:
  		       case  71:
          		case  72:
          		case  73:
         		case  74:
       		case  75:
        		case  76:
        			if (flag==1) {
        				data->Gcode[0]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[0]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
          			break;

       		case  0:                  //01: G00 G01 G02 G03 G32 G33 G90 G92 G94 
         	    	case  1:
       		case  2:       	
       		case  3:       	
       		case  32:       	
         		case  33:       	
       		case  90:       	
        		case  92:       	
        		case  94:       	
        			if (flag==1) {
        				data->Gcode[1]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[1]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			break;

        		case  96:               //02: G96 G97
       		case  97:
        			if (flag==1) {
        				data->Gcode[2]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[2]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
          			break;

        		case  98:             //03: G98 G99
        		case  99:
        			if (flag==1) {
        				data->Gcode[3]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[3]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			break;
 
        		case  20:           //06: G20 G21
       		case  21:
        			if (flag==1) {
        				data->Gcode[4]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[4]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
         			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
        			if (flag==1) {
        				data->Gcode[5]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
        			else {
        				data->Gcode[5]=MacroBuf[(int)(MacroBuf[(int)(Gcode-200)]-468)];
        				}
       			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
			}
  		}
	  	else if ((Gcode>=9500)&&(Gcode<=9515)){
  		Gcode=Gcode-(int)(Gcode/1000.0)*1000;
		if ((MacroBuf[(int)(Gcode-468)]<200)||((MacroBuf[(int)(Gcode-468)]>231)&&(MacroBuf[(int)(Gcode-468)]<500))||(MacroBuf[(int)(Gcode-468)]>515)) {
			VarOverLimitError();
			}
		if((MacroBuf[(int)(Gcode-468)]>=200)&&(MacroBuf[(int)(Gcode-468)]<=231)){
  		switch ((int)(MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)])) {
  			case  4:                 //00:G04 G10 G28 G39 G50 G65 G70 G71 G72 G73 G74 G75 G7
  			case  10:
  			case  28:
  			case  39:
  			case  50:
  			case  65:
  			case  70:
  		       case  71:
          		case  72:
          		case  73:
         		case  74:
       		case  75:
        		case  76:
        			if (flag==1) {
        				data->Gcode[0]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[0]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
          			break;

       		case  0:                  //01: G00 G01 G02 G03 G32 G33 G90 G92 G94 
         	    	case  1:
       		case  2:       	
       		case  3:       	
       		case  32:       	
         		case  33:       	
       		case  90:       	
        		case  92:       	
        		case  94:       	
        			if (flag==1) {
        				data->Gcode[1]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[1]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			break;

        		case  96:               //02: G96 G97
       		case  97:
        			if (flag==1) {
        				data->Gcode[2]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[2]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
          			break;

        		case  98:             //03: G98 G99
        		case  99:
        			if (flag==1) {
        				data->Gcode[3]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[3]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			break;
 
        		case  20:           //06: G20 G21
       		case  21:
        			if (flag==1) {
        				data->Gcode[4]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[4]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
         			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
        			if (flag==1) {
        				data->Gcode[5]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
        			else {
        				data->Gcode[5]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-200)];
        				}
       			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
	  		}
		else{
  		switch ((int)(MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)])) {
  			case  4:                 //00:G04 G10 G28 G39 G50 G65 G70 G71 G72 G73 G74 G75 G7
  			case  10:
  			case  28:
  			case  39:
  			case  50:
  			case  65:
  			case  70:
  		       case  71:
          		case  72:
          		case  73:
         		case  74:
       		case  75:
        		case  76:
        			if (flag==1) {
        				data->Gcode[0]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[0]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
          			break;

       		case  0:                  //01: G00 G01 G02 G03 G32 G33 G90 G92 G94 
         	    	case  1:
       		case  2:       	
       		case  3:       	
       		case  32:       	
         		case  33:       	
       		case  90:       	
        		case  92:       	
        		case  94:       	
        			if (flag==1) {
        				data->Gcode[1]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[1]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			break;

        		case  96:               //02: G96 G97
       		case  97:
        			if (flag==1) {
        				data->Gcode[2]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[2]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
          			break;

        		case  98:             //03: G98 G99
        		case  99:
        			if (flag==1) {
        				data->Gcode[3]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[3]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			break;
 
        		case  20:           //06: G20 G21
       		case  21:
        			if (flag==1) {
        				data->Gcode[4]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[4]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
         			break;

         		case  40:           //07: G40 G41 G42
       		case  41:
        		case  42:	
        			if (flag==1) {
        				data->Gcode[5]=-MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
        			else {
        				data->Gcode[5]=MacroBuf[(int)(MacroBuf[(int)(Gcode-468)]-468)];
        				}
       			break;

         		default:
        			GHasInvalidCode = TRUE;    //has invalide code
        			break;
  			}
	  		}
  		}


  	}

    return GHasInvalidCode;
}

int M_stmt(dataInterp *data,int Mcode) {
  int flag=0;  //用于标记-#和#,0:# 1:-#
  int i;
  int bOffLimits =FALSE;
  data->Mflag=1;
  if (G65Flag==0) {
  	for (i=0;i<19;i++) {	
  		if (Mcode==McodeType[i]) {
			MSTIllegal=0;
  			data->MST[0]=Mcode;
  			bOffLimits=FALSE;
  			return bOffLimits;
  			}
  		}
	if (ParaBuf[IsOutMSTWarn]==0) {
//		Uart_Printf("chaos1\n");
		CNC_ERR=181;
		CNC_IsErr=1;
		bOffLimits=FALSE;
		return bOffLimits;
		}
	else {
		MSTIllegal=1;
		if (MDI_Flag==1) {
			CNC_ERR=130;
			CNC_IsErr=1;
			//return;
			}
		MSTFlag=0;
		data->MST[0]=Mcode;
		bOffLimits=FALSE;
		return bOffLimits;
		}
  	}
  else if (G65Flag==1) {
  	G65Flag=0;
  	if (Mcode<0) {
  		flag=1;
  		Mcode=-Mcode;
  		}
       if ((Mcode<200)||((Mcode>231)&&(Mcode<500))||((Mcode>515)&&(Mcode<9200))||((Mcode>9231)&&(Mcode<9500))||(Mcode>9515)) {
  		VarOverLimitError();
  		}

⌨️ 快捷键说明

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