📄 gcode.c
字号:
}
}
if(ch=='G')
switch((int)num)
{case 0: ENT_TYPE=LINE_G0_ENT; break;
case 1: ENT_TYPE=LINE_ENT; break;
case 2: ENT_TYPE=arc; rot=CW; break;
case 3: ENT_TYPE=arc; rot=CCW; break;
case 4: dwell=ON; break;
case 17:
case 18:
case 19: if(arc==XY_ARC_ENT) {I=I-(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==YZ_ARC_ENT) {I=I-(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==ZX_ARC_ENT) {I=I-(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty;}
if(num==17) {arc=XY_ARC_ENT; I=I+(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;}
if(num==18) {arc=ZX_ARC_ENT; I=I+(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty;}
if(num==19) {arc=YZ_ARC_ENT; I=I+(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty;}
break;
case 74:
case 20: if((*software).units==IN) break;
ch='S'; num=140;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 75:
case 21: if((*software).units==MM) break;
ch='S'; num=141;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 43: new_tool=ON; break;
case 49: (*world).z_pos=(*world).z_pos+(*gcode).tool_len[(*gcode).tnum];
(*gcode).tnum=0; GMTtext(software, ctrl, gcode);
break;
case 50: factor=1; break;
case 51: new_scale=ON; break;
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
case 59: X=X+(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; Y=Y+(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;
Z=Z+(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; A=A+(*gcode).a_coord[(*ctrl).cs]*(*ctrl).pty;
if(arc==XY_ARC_ENT) {I=I+(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==YZ_ARC_ENT) {I=I+(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==ZX_ARC_ENT) {I=I+(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; J=J+(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty;}
(*ctrl).cs=num-53;
X=X-(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; Y=Y-(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;
Z=Z-(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; A=A-(*gcode).a_coord[(*ctrl).cs]*(*ctrl).pty;
if(arc==XY_ARC_ENT) {I=I-(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==YZ_ARC_ENT) {I=I-(*gcode).y_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty;}
if(arc==ZX_ARC_ENT) {I=I-(*gcode).z_coord[(*ctrl).cs]*(*ctrl).pty; J=J-(*gcode).x_coord[(*ctrl).cs]*(*ctrl).pty;}
GMTtext(software, ctrl, gcode); break;
case 60: if(version==LITE) break;
if((*ctrl).cvv==OFF) break;
(*ctrl).cvv=OFF; GMTtext(software, ctrl, gcode);
if(dcycle81==ON || dcycle83==ON || line_by_line==ON) break;
x=x_now; y=y_now; z=z_now; a=a_now; angle=angle_now; ent_type=ent_type_now; *world=world_now;
x_now=y_now=z_now=a_now=angle_now=0;
ent_type_now=LINE_ENT; fd_ch=TRUE;
ch='*'; goto START_MOVE;
case 64: if(version==LITE) break;
if((*ctrl).cvv==ON) break;
(*ctrl).cvv=ON; GMTtext(software, ctrl, gcode);
break;
case 70: if((*software).a_follow==INDEPENDANT) break;
ch='S'; num=130;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 71: if((*software).a_follow==FOLLOW_X) break;
ch='S'; num=131;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 72: if((*software).a_follow==FOLLOW_Y) break;
ch='S'; num=132;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 73: if((*software).a_follow==FOLLOW_Z) break;
ch='S'; num=133;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 80: if(version==LITE) break;
if(dcycle81==OFF && dcycle83==OFF) break;
dcycle81=dcycle83=OFF;
break;
case 81: if(version==LITE) break;
if(dcycle81==ON) break;
if(dcycle83==ON) dcycle83=OFF;
ch='S'; num=150;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 83: if(version==LITE) break;
if(dcycle83==ON) break;
if(dcycle81==ON) dcycle81=OFF;
ch='S'; num=155;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 90: (*ctrl).pty=ABS;
X=(*world).x_pos-(*gcode).x_coord[(*ctrl).cs];
Y=(*world).y_pos-(*gcode).y_coord[(*ctrl).cs];
Z=(*world).z_pos-(*gcode).z_coord[(*ctrl).cs];
A=(*world).a_pos-(*gcode).a_coord[(*ctrl).cs];
if(arc==XY_ARC_ENT) {I=(*world).x_pos-(*gcode).x_coord[(*ctrl).cs]; J=(*world).y_pos-(*gcode).y_coord[(*ctrl).cs];}
if(arc==YZ_ARC_ENT) {I=(*world).y_pos-(*gcode).y_coord[(*ctrl).cs]; J=(*world).z_pos-(*gcode).z_coord[(*ctrl).cs];}
if(arc==ZX_ARC_ENT) {I=(*world).z_pos-(*gcode).z_coord[(*ctrl).cs]; J=(*world).x_pos-(*gcode).x_coord[(*ctrl).cs];}
GMTtext(software, ctrl, gcode); break;
case 91: (*ctrl).pty=REL; X=Y=Z=A=I=J=0; GMTtext(software, ctrl, gcode); break;
case 92: if((*ctrl).cs==0) {par=TRUE; set_coord=ON;} break;
default: msg=INVALID_CODE; break;
}
if(ch=='M')
switch((int)num)
{case 3: if((*ctrl).M03==ON) break;
ch='S'; num=120;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 5: if((*ctrl).M03==OFF) break;
ch='S'; num=121;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 7: if((*ctrl).M07==ON) break;
ch='S'; num=122;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 8: if((*ctrl).M08==ON) break;
ch='S'; num=124;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 9: if((*ctrl).M08==OFF && (*ctrl).M07==OFF) break;
ch='S'; num=125;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 10: if((*ctrl).M10==ON) break;
ch='S'; num=126;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 11: if((*ctrl).M10==OFF) break;
ch='S'; num=127;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 6: z=(*gcode).tool_ch_z-(*world).z_pos-(*gcode).tool_len[(*gcode).tnum]; a=(*gcode).tool_ch_a-(*world).a_pos;
x=y=0; angle=NULL; ent_type=LINE_G0_ENT;
ch='S'; num=110; goto START_MOVE;
case 0:
case 30:
case 99: ch='S'; if(num==0) num=100; else if(num==30) num=101; else num=102;
if((*ctrl).cvv==ON && line_by_line==OFF && dcycle81==OFF && dcycle83==OFF) {x=y=z=a=0; angle=NULL; ent_type=LINE_ENT; goto START_MOVE;}
break;
case 100: //rotate +90 about x axis
rotate_x(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 101: //rotate -90 about x axis
rotate_x(software, hardware, world); rotate_x(software, hardware, world); rotate_x(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 102: //rotate +90 about y axis
rotate_y(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 103: //rotate -90 about y axis
rotate_y(software, hardware, world); rotate_y(software, hardware, world); rotate_y(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 104: //rotate +90 about z axis
rotate_z(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 105: //rotate -90 about z axis
rotate_z(software, hardware, world); rotate_z(software, hardware, world); rotate_z(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
case 106: //switch z and a
switch_z_a(software, hardware, world);
update_display(software, (*world).x_pos*(*ctrl).pty, (*world).y_pos*(*ctrl).pty,
(*world).z_pos*(*ctrl).pty, (*world).a_pos*(*ctrl).pty, 0, 0, (*ctrl).frate, ALL);
break;
default: msg=INVALID_CODE; break;
}
if(ch=='S')
switch((int)num)
{case 100: init_M00=ON; msg=M0; break;
case 101: init_M30=ON; msg=M30; break;
case 102: init_M30=ON; msg=M99; break;
case 110: x=(*gcode).tool_ch_x-(*world).x_pos; y=(*gcode).tool_ch_y-(*world).y_pos;
a=z=0; angle=NULL; ent_type=LINE_G0_ENT;
ch='M'; num=0; goto START_MOVE;
case 120: if((*hardware).io1_on==HIGH) set_io_bit(hardware, (*hardware).io1_bit);
else clear_io_bit(hardware, (*hardware).io1_bit);
(*ctrl).M03=ON; GMTtext(software, ctrl, gcode); break;
case 121: if((*hardware).io1_on==HIGH) clear_io_bit(hardware, (*hardware).io1_bit);
else set_io_bit(hardware, (*hardware).io1_bit);
(*ctrl).M03=OFF; GMTtext(software, ctrl, gcode); break;
case 122: if((*hardware).io2_on==HIGH) set_io_bit(hardware, (*hardware).io2_bit);
else clear_io_bit(hardware, (*hardware).io2_bit);
(*ctrl).M07=ON; GMTtext(software, ctrl, gcode); break;
case 124: if((*hardware).io3_on==HIGH) set_io_bit(hardware, (*hardware).io3_bit);
else clear_io_bit(hardware, (*hardware).io3_bit);
(*ctrl).M08=ON; GMTtext(software, ctrl, gcode); break;
case 125: if((*hardware).io2_on==HIGH) clear_io_bit(hardware, (*hardware).io2_bit);
else set_io_bit(hardware, (*hardware).io2_bit);
if((*hardware).io3_on==HIGH) clear_io_bit(hardware, (*hardware).io3_bit);
else set_io_bit(hardware, (*hardware).io3_bit);
(*ctrl).M07=(*ctrl).M08=OFF; GMTtext(software, ctrl, gcode); break;
case 126: if((*hardware).io4_on==HIGH) set_io_bit(hardware, (*hardware).io4_bit);
else clear_io_bit(hardware, (*hardware).io4_bit);
(*ctrl).M10=ON; GMTtext(software, ctrl, gcode); break;
case 127: if((*hardware).io4_on==HIGH) clear_io_bit(hardware, (*hardware).io4_bit);
else set_io_bit(hardware, (*hardware).io4_bit);
(*ctrl).M10=OFF; GMTtext(software, ctrl, gcode); break;
case 130: (*software).a_follow=INDEPENDANT; break;
case 131: (*software).a_follow=FOLLOW_X; break;
case 132: (*software).a_follow=FOLLOW_Y; break;
case 133: (*software).a_follow=FOLLOW_Z; break;
case 140: X=X/25.4; Y=Y/25.4; Z=Z/25.4; A=change_aux_unit(software, A, IN); I=I/25.4; J=J/25.4;
cur_sp=cur_sp/25.4; (*ctrl).frate=(*ctrl).frate/25.4;
change_pt_units(software, world, IN, IN);
change_gcode_units(software, gcode, IN, IN);
change_units(hardware, software, IN, IN);
GMTtext(software, ctrl, gcode); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -