📄 g_translation.c
字号:
int x=0,y=0,Ii=0,Kk=0;
#if 0
void DelayXS(unsigned char x) /*延时x秒*/
{
unsigned char TempCycA =(unsigned char)x*12;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--) x=x;
}
}
#endif
void Get_xyf(void)
{
unsigned i=0;
if(!(*s==X1||*s==I||*s==K1||*s==Y1||*s==SPEED)) s++;
if(*s==X1)
{
if(*(++s)==FuHao) /*有负号 //取X值*/
{ i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ x+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
x=0-x;
}
else
{ s--;
i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ x+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
}
}
if(*s==Y1) /*取Y值*/
{
if(*(++s)==FuHao)
{
i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ y+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
y=0-y;
}
else
{ s--;
i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ y+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
}
}
if(*s==I)
{
if(*(++s)==FuHao) /*有负号 //取X值*/
{ i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ Ii+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
Ii=0-Ii;
}
else
{ s--;
i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ Ii+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
}
}
if(*s==K)
{
if(*(++s)==FuHao) /*有负号 //取X值*/
{ i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ Kk+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
Kk=0-Kk;
}
else
{ s--;
i=0;
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
while((*(--s)>=0x00)&&((*s)<=0x09))
{ Kk+=pow(10,i)*(*s);i++;}
while((*(++s)>=0x00)&&((*s)<=0x09)) ;
}
}
if(*s==SPEED) //取F值
{ F=*(++s);s++;}
}
void G_translation(void)
{
WriteCommandLCM(0x0C,1);
Lcd_print("G_operation") ;
Lcd_print1(1,0,"sure operation?");
#if 0
NR=0;
circle_interpolation(-30,0,0,30);
while(1);
#endif
while(1)
{
if(ir_data[2]==EXIT) goto b;
if(ir_data[2]==ENTER) { Lcd_print("operating"); displayXY();Opreation();ir_data[2]=0;}
}
b: ir_flag=0;
SaveXYToNVRAM();
}
void Opreation(void)
{
unsigned char time=0,fouction=0,jx_flag=0;
int x0=0,y0=0;
TAI_BI=1;
s=&buf;
ir_flag=0;
TR2=1;
//circle_interpolation(-30,0,0,30);
while(1)
{
b: x=0;
y=0;
switch(*s)
{
case G91: jx_flag=0; /*相对编程*/
s++;
break;
case G90: jx_flag=1 ; /*绝对编程*/
s++;
break;
case G00:
s++;
Get_xyf(); /*直线插补*/
F=3;
if(jx_flag)
{x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);}
z_chabu(x0,y0,x,y); /*取速度值存在*/
F=1;
fouction=G00;
break;
case G01:
s++;
Get_xyf(); /*直线插补*/
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
}
z_chabu(x0,y0,x,y); //取速度值存在
fouction=G01;
break;
case M47:
TAI_BI=1; /*提笔*/
s++;
break;
case M46:
TAI_BI=0; /*下笔*/
s++;
break;
case G02:
s++;
NR=0;
get_xyf();
#if 0
x=-30;y=30;Ii=-36;Kk=1;
SBUF=x;
while(!TI){;}
TI=0;
SBUF=y;
while(!TI){;}
TI=0;
SBUF=Ii;
while(!TI){;}
TI=0;
SBUF=Kk;
while(!TI){;}
TI=0;
SBUF=F;
while(!TI){;}
TI=0;
#endif
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
Ii-=(int)(Pref_x/100);
Kk-=(int)(Pref_y/100);
}
// circle_interpolation(-30,0,0,30);
circle_interpolation(-Ii,-Kk,x-Ii,y-Kk);
Ii=0;Kk=0;
fouction=G02;
break; /*顺圆*/
case G03: /*逆圆*/
s++;
Get_xyf();
NR=1;
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
Ii-=(int)(Pref_x/100);
Kk-=(int)(Pref_y/100);
}
circle_interpolation(-Ii,-Kk,x-Ii,y-Kk);
Ii=0;Kk=0;
fouction=G03;
break;
case G04:
time=*(++s);
DelayXS(time);
s++;
break; /*暂停time秒*/
case M02:
P1=0;
TAI_BI=1;
goto a;
break;
case ENTER:
if(*(++s)==X1||*(s)==Y1) goto t;
break;
default :
s++;
break;
}
goto b;
t:
Get_xyf();
switch(fouction)
{
case G00:
/*直线插补*/
F=3;
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
}
z_chabu(x0,y0,x,y); //直线插补
F=1;
break;
case G01:
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
}
z_chabu(x0,y0,x,y);
break;
case G02:
NR=0;
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
Ii-=(int)(Pref_x/100);
Kk-=(int)(Pref_y/100);
}
circle_interpolation(-Ii,-Kk,x-Ii,y-Kk);
Ii=0;Kk=0;
break;
case G03:
NR=1;
if(jx_flag)
{
x-=(int)(Pref_x/100);
y-=(int)(Pref_y/100);
Ii-=(int)(Pref_x/100);
Kk-=(int)(Pref_y/100);
}
circle_interpolation(-Ii,-Kk,x-Ii,y-Kk);
Ii=0;Kk=0;
break;
}
}
a: Lcd_print("G_operation") ;
Lcd_print1(1,0," End") ;
displayXY();
DelayXS(1);
TR2=0;
SaveXYToNVRAM();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -