📄 processg71.c
字号:
return 2;//注释超长大于255个字符
break;
case 0x0d:
G71.CurrentNum++;
break;
case 0x0a:
*First=s;
G71.CurrentNum++;
if(G71.CurrentNum>=g_DataBuf.DataLength)
{
buf[0]=0x0;
*End=FALSE;
return 255;
}
return 0;//一行代码结束
break;
case 'A':case 'B':case 'C':case 'D':case 'E':
case 'F':case 'G':case 'H':case 'I':case 'J':
case 'K':case 'L':case 'M':case 'N':case 'O':
case 'P':case 'Q':case 'R':case 'S':case 'T':
case 'U':case 'V':case 'W':case 'X':case 'Y':case 'Z':
*First=s;
i=0;
while(i<=255)//一行代码不得大于255个字符
{
G71.CurrentNum++;
if(G71.CurrentNum>=g_DataBuf.DataLength)//是否超出
{
buf[0]=0x0;
*End=TRUE;
return 255;
}
s=g_DataBuf.DataBuf[G71.CurrentNum];
if((s>='0' && s<='9') || s=='.' || s=='-' || s=='+')
{
buf[i]=s; //
i++;
}
else if(s==0x0a) //回车符
{
buf[i]=0x00;
*End=FALSE;
G71.CurrentNum++;
if(G71.CurrentNum>=g_DataBuf.DataLength)
return 255;
return 0;//一行代码结束
}
else if(s!=0x0d) //非换行符
{
buf[i]=0x00;
*End=FALSE;
return 5;//字代码结束
}
}
return 2; //数据超长
break;
default:
*First=s;
buf[0]=0x00;
*End=TRUE;
return 3;//其它的字
}
}
}
INT8U G71ProcessAllCode(INT32U EndHang)
{
INT8U Error;
INT8U End;
INT8U num,len;
INT8U First,buf[255];
INT8U j,k;
INT32U Hang;
while(1){
Error=G71GetNextSeg(&First,buf,&End);
if(Error != 0 && Error !=5)break;
if(End)break;
switch(First)
{
case '%':
case '/':
case '(':
case 0x0d:
case 0x0a:
break;
case 'N':
if(strlen((char *)buf)==0){Error=71;break;}//buf中字符个数为零中返回
if(bN_Code==1) {Error=71;break;}
k=0;Hang=0;j=strlen((char *)buf);
while(j)
{
Hang=(buf[k]-'0')+Hang*10;
k++;
j--;
}
if(EndHang==Hang)//起始行与结束行相同
{
G71_bEnd=1;
G71ResetPara();
}
bN_Code=TRUE;
break;
case 'G':
len=strlen((char *)buf);
if(len !=1 && len !=2 ){Error=71;break;}
if(len==1) num=buf[0]-'0';
else num=(buf[0]-'0')*10+buf[1]-'0';
switch(num){
case 0:
case 1:
case 2:
case 3:
case 4:
bG_Code=1;
break;
default:
Error=71;
break;
}
iG_Code=num;
break;
case 'M':
len=strlen((char *)buf);
if(len !=1 && len !=2 ){Error=71;break;}
if(len==1) num=buf[0]-'0';
else num=(buf[0]-'0')*10+buf[1]-'0';
switch(num)
{
case 3:
case 4:
case 5:
case 8:
case 9:
case 10:
case 11:
case 32:
case 33:
iM_Code=num;
bM_Code=1;
break;
case 0:
g_IsRun=2;
break;
default:
Error=71;
break;
}
break;
case 'X':
if(strlen((char *)buf)==0){Error=71;break;}
if(bU_Code||bX_Code){Error=71;break;}
G71_Pos_X=BfFromStr(buf);
if(g_Sysparam.DiaOrRadius)G71_Pos_X=G71_Pos_X/2;
bX_Code=TRUE;
break;
case 'Z':
if(strlen((char *)buf)==0){Error=71;break;}
if(bW_Code||bZ_Code){Error=71;break;}
G71_Pos_Z=BfFromStr(buf);
bZ_Code=TRUE;
break;
case 'U':
if(strlen((char *)buf)==0){Error=71;break;}
if(bX_Code||bU_Code){Error=71;break;}
G71_Pos_U=BfFromStr(buf);
if(g_Sysparam.DiaOrRadius)G71_Pos_U=G71_Pos_U/2;
bU_Code =TRUE;
break;
case 'W':
if(strlen((char *)buf)==0){Error=71;break;}
if(bZ_Code||bW_Code){Error=71;break;}
G71_Pos_W=BfFromStr(buf);
bW_Code = 1;
break;
case 'I':
if(strlen((char *)buf)==0){Error=71;break;}
if(bI_Code){Error=71;break;}
G71_Pos_I=BfFromStr(buf);
bI_Code = TRUE;
break;
case 'K':
if(strlen((char *)buf)==0){Error=71;break;}
if(bK_Code){Error=71;break;}
G71_Pos_K=BfFromStr(buf);
bK_Code = TRUE;
break;
case 'R':
if(strlen((char *)buf)==0){Error=71;break;}
if(bR_Code){Error=71;break;}
G71_Pos_R=BfFromStr(buf);
bR_Code = TRUE;
break;
default:
break;
}
if (Error==0)
{
if(G71ProcessHangCode()==FALSE)Error=7;
if(G71_bEnd){Error=6;}
G71ResetPara();
}
if (Error==6)break;
if (Error==7)break;
if (Error==71)break;
}
return Error;
}
BOOLEAN G71ProcessHangCode(void)
{
INT8U i;
if(iM_Code!=100 && iM_Code!=98 && iM_Code!=99)
{
switch(iM_Code) //73-G7X循环中不支持辅助功能"
{
case 3:case 4:case 5:case 8:case 9:case 10:case 11:
case 12:case 13:case 32:case 33:case 41:case 42:case 43:case 44:
DispErrCode(73);
return FALSE;
}
g_DelayTime=g_Sysparam.M_DelayTime/5; //延时任务时间
if(WaitDelayEnd())return TRUE; //等待延时结束
}
if(iM_Code==99 || iM_Code==98 || (iM_Code>=50 && iM_Code<=59))//循环中不支持子程序调用
{
DispErrCode(23);
return FALSE;
}
if(bX_Code || bZ_Code || bU_Code || bW_Code)
{
switch(iG_Code)
{
case 0:
LineShapNum++;
AllNum++;
if (AllNum!=1){ //外形描述非第一段
for (i=1;i<MAXNUMBER;i++){ //查找上一段外形的终点并赋给下一段外形的起点
if (CircleValue[i].Pos==(AllNum-1)){
LineValue[LineShapNum].StartX=CircleValue[i].EndX;
LineValue[LineShapNum].StartZ=CircleValue[i].EndZ;
break;
}
if (LineValue[i].Pos==(AllNum-1)){
LineValue[LineShapNum].StartX=LineValue[i].EndX;
LineValue[LineShapNum].StartZ=LineValue[i].EndZ;
break;
}
}
}
else{ //外形描述第一段
if(bX_Code) G71_Abs_PosX=G71_Pos_X;
else if(bU_Code) G71_Abs_PosX=G71_Pos_U+Get_AbsPos(1);
else G71_Abs_PosX=Get_AbsPos(1);
if(bZ_Code) G71_Abs_PosZ=G71_Pos_Z;
else if(bW_Code) G71_Abs_PosZ=G71_Pos_W+Get_AbsPos(3);
else G71_Abs_PosZ=Get_AbsPos(3);
LineValue[LineShapNum].StartX=G71_Abs_PosX;
LineValue[LineShapNum].StartZ=G71_Abs_PosZ;
LineValue[LineShapNum].EndX=G71_Abs_PosX;
LineValue[LineShapNum].EndZ=G71_Abs_PosZ;
LineValue[LineShapNum].Pos=AllNum;
break;
}
if(bX_Code) G71_Abs_PosX=G71_Pos_X;
else if(bU_Code) G71_Abs_PosX=G71_Pos_U+LineValue[LineShapNum].StartX;
else G71_Abs_PosX=LineValue[LineShapNum].StartX;
if(bZ_Code) G71_Abs_PosZ=G71_Pos_Z;
else if(bW_Code) G71_Abs_PosZ=G71_Pos_W+LineValue[LineShapNum].StartZ;
else G71_Abs_PosZ=LineValue[LineShapNum].StartZ;
LineValue[LineShapNum].EndX=G71_Abs_PosX;
LineValue[LineShapNum].EndZ=G71_Abs_PosZ;
LineValue[LineShapNum].Pos=AllNum;
if (LineValue[LineShapNum].EndX!=LineValue[LineShapNum].StartX)
LineValue[LineShapNum].K=(LineValue[LineShapNum].EndZ-LineValue[LineShapNum].StartZ)/(LineValue[LineShapNum].EndX-LineValue[LineShapNum].StartX);
if (LineValue[LineShapNum].EndZ>LineValue[LineShapNum].StartZ)Zinc=1;
else if(LineValue[LineShapNum].EndZ<LineValue[LineShapNum].StartZ)Zdec=1;
if (Zdec==1 && Zinc==1)return FALSE;
if (LineValue[LineShapNum].EndX>LineValue[LineShapNum].StartX)Xinc=1;
else if(LineValue[LineShapNum].EndX<LineValue[LineShapNum].StartX)Xdec=1;
if (Xdec==1 && Xinc==1)return FALSE;
break;
case 1:
LineShapNum++;
AllNum++;
if (AllNum!=1){
for (i=1;i<MAXNUMBER;i++){
if (CircleValue[i].Pos==(AllNum-1)){
LineValue[LineShapNum].StartX=CircleValue[i].EndX;
LineValue[LineShapNum].StartZ=CircleValue[i].EndZ;
break;
}
if (LineValue[i].Pos==(AllNum-1)){
LineValue[LineShapNum].StartX=LineValue[i].EndX;
LineValue[LineShapNum].StartZ=LineValue[i].EndZ;
break;
}
}
}
else{
if(bX_Code) G71_Abs_PosX=G71_Pos_X;
else if(bU_Code) G71_Abs_PosX=G71_Pos_U+Get_AbsPos(1);
else G71_Abs_PosX=Get_AbsPos(1);
if(bZ_Code) G71_Abs_PosZ=G71_Pos_Z;
else if(bW_Code) G71_Abs_PosZ=G71_Pos_W+Get_AbsPos(3);
else G71_Abs_PosZ=Get_AbsPos(3);
LineValue[LineShapNum].StartX=G71_Abs_PosX;
LineValue[LineShapNum].StartZ=G71_Abs_PosZ;
LineValue[LineShapNum].EndX=G71_Abs_PosX;
LineValue[LineShapNum].EndZ=G71_Abs_PosZ;
LineValue[LineShapNum].Pos=AllNum;
break;
}
if(bX_Code) G71_Abs_PosX=G71_Pos_X;
else if(bU_Code) G71_Abs_PosX=G71_Pos_U+LineValue[LineShapNum].StartX;
else G71_Abs_PosX=LineValue[LineShapNum].StartX;
if(bZ_Code) G71_Abs_PosZ=G71_Pos_Z;
else if(bW_Code) G71_Abs_PosZ=G71_Pos_W+LineValue[LineShapNum].StartZ;
else G71_Abs_PosZ=LineValue[LineShapNum].StartZ;
LineValue[LineShapNum].EndX=G71_Abs_PosX;
LineValue[LineShapNum].EndZ=G71_Abs_PosZ;
LineValue[LineShapNum].Pos=AllNum;
if (LineValue[LineShapNum].EndX!=LineValue[LineShapNum].StartX)
LineValue[LineShapNum].K=(LineValue[LineShapNum].EndZ-LineValue[LineShapNum].StartZ)/(LineValue[LineShapNum].EndX-LineValue[LineShapNum].StartX);
if (LineValue[LineShapNum].EndZ>LineValue[LineShapNum].StartZ)Zinc=1;
else if (LineValue[LineShapNum].EndZ<LineValue[LineShapNum].StartZ)Zdec=1;
if (Zdec==1&&Zinc==1){DispErrCode(24);return FALSE;}
if (LineValue[LineShapNum].EndX>LineValue[LineShapNum].StartX)Xinc=1;
else if (LineValue[LineShapNum].EndX<LineValue[LineShapNum].StartX)Xdec=1;
if (Xdec==1&&Xinc==1){DispErrCode(24);return FALSE;}
break;
case 2:
case 3:
CircleShapNum++;
AllNum++;
if (AllNum!=1){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -