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

📄 maindlg1011.cpp

📁 激光加工控制系统 可以读入plt文件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
*/

load_mac_para(FILE *fpe)
{
  int ret,order,value,i;
  int step,len;

  ret = 0;
  step = 0;
  while (ret == 0){
    ret = get_a_line(fpe);
    if ((buf[0] == 'I')&&(step == 0)){
      get_a_line(fpe);
      board_no = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'P')&&(step == 1)){
//      test_dog();
      get_a_line(fpe);
      pulse_rate = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'U')&&(step == 2)){
      get_a_line(fpe);
      interval = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'X')&&(buf[1] == 'S')&&(step == 3)){
      get_a_line(fpe);
      xsteps = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Y')&&(buf[1] == 'S')&&(step == 4)){
      get_a_line(fpe);
      ysteps = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(buf[1] == 'S')&&(step == 5)){
      get_a_line(fpe);
      zsteps = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'm')||(buf[0] == 's')&&(step == 6)){
      if (buf[0] == 'm')
	danwei = MINUTES;
      else
	danwei = SECONDS;
      step ++;
    }
    else if ((buf[0] == 'X')&&(buf[1] == 'M')&&(step == 7)){
      get_a_line(fpe);
      xmaxv2 = xmaxv = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Y')&&(buf[1] == 'M')&&(step == 8)){
      get_a_line(fpe);
      ymaxv2 = ymaxv = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(buf[1] == 'M')&&(step == 9)){
      get_a_line(fpe);
      zmaxv2 = zmaxv = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'X')&&(buf[1] == 'M')&&(step == 10)){
      get_a_line(fpe);
      xmaxa2 = xmaxa = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Y')&&(buf[1] == 'M')&&(step == 11)){
      get_a_line(fpe);
      ymaxa2 = ymaxa = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(buf[1] == 'M')&&(step == 12)){
      get_a_line(fpe);
      zmaxa2 = zmaxa = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'X')&&(step == 13)){
      get_a_line(fpe);
      xydspeed = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(step == 14)){
      get_a_line(fpe);
      zdspeed = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'M')&&(step == 15)){
      get_a_line(fpe);
      max_accu_arc = atof(&(buf[0]));
    }
    else if ((buf[0] == 'W')&&(step == 15)){
      get_a_line(fpe);
      order = atol(&(buf[0]));
      get_a_line(fpe);
      for (i=0;i<strlen(buf);i++)
	if (buf[i] == 'X')
	  buf[i] = '0';
      for (i=0;i<strlen(buf);i++)
	buf[i] -= '0';
      value = buf[0] * 32 + buf[1] * 16 + buf[2] * 8 + buf[3] * 4 +
	      buf[4] * 2 + buf[5];
      wait[end_wait].order = order;
      wait[end_wait++].value = value;
    }
    else if ((buf[0] == 'S')&&(step == 15)){
      get_a_line(fpe);
      order = atol(&(buf[0]));
      get_a_line(fpe);
      for (i=0;i<strlen(buf);i++)
	if (buf[i] == 'X')
	  buf[i] = '0';
      len = strlen(buf);
      for (i=0;i<len;i++)
	buf[i] -= '0';
      value = buf[0] * 32 + buf[1] * 16 + buf[2] * 8 + buf[3] * 4 +
	      buf[4] * 2 + buf[5];
      output[end_output].order = order;
      output[end_output++].value = value;
    }
    else if ((buf[0] == 'X')&&(buf[1] == 'H')&&(step == 15)){
      get_a_line(fpe);
      xhl = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'X')&&(buf[1] == 'L')&&(step == 16)){
      get_a_line(fpe);
      xll = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Y')&&(buf[1] == 'H')&&(step == 17)){
      get_a_line(fpe);
      yhl = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Y')&&(buf[1] == 'L')&&(step == 18)){
      get_a_line(fpe);
      yll = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(buf[1] == 'H')&&(step == 19)){
      get_a_line(fpe);
      zhl = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'Z')&&(buf[1] == 'L')&&(step == 20)){
      get_a_line(fpe);
      zll = atol(&(buf[0]));
      step ++;
    }
    else if ((buf[0] == 'G')&&(buf[1] == 'o')&&(step == 21)){
      get_a_line(fpe);
      strcpy(go_home_str,buf);
      step ++;
      strcpy(command_str,"");
    }
    else if ((buf[0] == 'I')&&(buf[1] == 'n')&&(step == 22)){
      get_a_line(fpe);
      strcat(command_str," ");
      strcat(command_str,buf);
    }
  }
}

trans_g_to_23()
{
  FILE *fr_file;

  strcpy(filename,"c:\\jgs\\test.g");
  if (filename[strlen(filename)-2] != '.')
    strcat(filename,".G");

  fr_file = fopen(filename,"rb");
  if (fr_file == NULL){
    return -1;
  }
  filename[strlen(filename)-2] = 0;
//  strcat(filename,".23");
//  to_file = fopen(filename,"w");
  to_file = fopen("c:\\jgs\\test.23","w");
  if (to_file == NULL){
    fclose(fr_file);
    return -1;
  }

  put_a_line(to_file,"V1");
  put_a_line(to_file,"I768");
  put_a_line(to_file,"U20");
  put_a_line(to_file,"N2");
  strcpy(buf,"=");
  strcat(buf,command_str);
  put_a_line(to_file,buf);

  trans_file(fr_file,to_file);

  fclose(fr_file);
  fclose(to_file);
  return 1;
}

trans_gfile_to_23()
{
  FILE *fr_file,*to_file;
  FILE *wfpe;
  int ch,oc;

  if (filename[strlen(filename)-2] != '.')
    strcat(filename,".G");
  fr_file = fopen(filename,"rb");
  if (fr_file == NULL){
    return -1;
  }
  wfpe = fopen("c:\\jgs\\t.tmp","wb");
  ch = fgetc(fr_file);
  oc = ch;
  while (ch != EOF){
    if (ch == 'N'){
		if ((oc != 10)&&(oc != 13)){
          fputc(13,wfpe);
          fputc(10,wfpe);
        }
    }
    fputc(ch,wfpe);
	oc = ch;
    ch = fgetc(fr_file);
  }
  fclose(fr_file);
  fclose(wfpe);

  fr_file = fopen(filename,"wb");
  wfpe = fopen("c:\\jgs\\t.tmp","rb");
  ch = fgetc(wfpe);
  while (ch != EOF){
    fputc(ch,fr_file);
    ch = fgetc(wfpe);
  }
  fclose(fr_file);
  fclose(wfpe);

  fr_file = fopen(filename,"rb");
  if (fr_file == NULL){
    return -1;
  }
  filename[strlen(filename)-2] = 0;
  strcat(filename,".23");
//  to_file = fopen(filename,"w");
  to_file = fopen("c:\\jgs\\test.23","w");
  if (to_file == NULL){
    fclose(fr_file);
    return -1;
  }

  put_a_line(to_file,"V1");
  put_a_line(to_file,"I768");
  put_a_line(to_file,"U20");
  put_a_line(to_file,"N2");
  strcpy(buf,"=");
  strcat(buf,command_str);
  put_a_line(to_file,buf);

  trans_file(fr_file,to_file);

  fclose(fr_file);
  fclose(to_file);
  return 1;
}

float count_angle(float x0, float y0, float x1, float y1)
{
  float a;

  if ((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) < 1e-8)
    return 0;
  a = acos((x1-x0)/sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)));
  if (y1 < y0)
    a = 2*PI - a;
  return a;
}

recover_data()
{
  int i;

  xmaxv = xmaxv3;
  ymaxv = ymaxv3;
//  test_dog();
  zmaxv = zmaxv3;
  xmaxa = xmaxa3;
  ymaxa = ymaxa3;
  zmaxa = zmaxa3;
  xmaxv1 = xmaxv;               // Max Speed units(G CODE) per danwei
  ymaxv1 = ymaxv;
  x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
  y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
  if (danwei == MINUTES){
    x_once_max_v_pulses /= 60.0;
    y_once_max_v_pulses /= 60.0;
  }
  x_times = x_once_max_v_pulses/x_once_max_a_pulses;
  if (x_times > 1)
    x_once_max_v_pulses = x_once_max_a_pulses*x_times;
  x_len_to_acc = 0;
  for (i=0;i<x_times;i++){
    x_len_to_acc += (i+1)*x_once_max_a_pulses;
  }
  y_times = y_once_max_v_pulses/y_once_max_a_pulses;
  if (y_times > 1)
    y_once_max_v_pulses = y_once_max_a_pulses*y_times;
  y_len_to_acc = 0;
  for (i=0;i<y_times;i++){
    y_len_to_acc += (i+1)*y_once_max_a_pulses;
  }
}

set_data()
{
  int i;

  xmaxv3 = xmaxv;
  ymaxv3 = ymaxv;
  zmaxv3 = zmaxv;
  xmaxa3 = xmaxa;
  ymaxa3 = ymaxa;
  zmaxa3 = zmaxa;
  xmaxv = xmaxv2;
  ymaxv = ymaxv2;
  zmaxv = zmaxv2;
  xmaxa = xmaxa2;
  ymaxa = ymaxa2;
  zmaxa = zmaxa2;
  xmaxv1 = xmaxv;               // Max Speed units(G CODE) per danwei
  ymaxv1 = ymaxv;
  x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
  y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
  if (danwei == MINUTES){
    x_once_max_v_pulses /= 60.0;
    y_once_max_v_pulses /= 60.0;
  }
  x_times = x_once_max_v_pulses/x_once_max_a_pulses;
  if (x_times > 1)
    x_once_max_v_pulses = x_once_max_a_pulses*x_times;
  x_len_to_acc = 0;
  for (i=0;i<x_times;i++){
    x_len_to_acc += (i+1)*x_once_max_a_pulses;
  }
  y_times = y_once_max_v_pulses/y_once_max_a_pulses;
  if (y_times > 1)
    y_once_max_v_pulses = y_once_max_a_pulses*y_times;
  y_len_to_acc = 0;
  for (i=0;i<y_times;i++){
    y_len_to_acc += (i+1)*y_once_max_a_pulses;
  }
}

void maindlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
//	flag = 0;
}

get_a_line(FILE *fpe)
{
  int i,ch,j;
  long l;

  ch = fgetc(fpe);
  if (ch == EOF)
    return -1;
  i = 0;
  while ((ch == 13)||(ch == 10))
    ch = fgetc(fpe);
  while ((ch != 13)&&(ch != 10)&&(ch != EOF)){
    buf[i++] = ch;
    ch = fgetc(fpe);
  }
  buf[i] = 0;
  if (ch == EOF)
    return -1;
  ch = fgetc(fpe);
  if (ch == EOF)
    return -1;
  strcpy(nbuf,"");
  if ((ch == 13)||(ch == 10)){
      ch = fgetc(fpe);
      if (ch == EOF){
        return 0;
	  }
  }  
  j = 1;
  i = 0;
  while ((ch != 13)&&(ch != 10)&&(ch != EOF)){
    nbuf[i++] = ch;
    ch = fgetc(fpe);
    j ++;
  }
  nbuf[i] = 0;
  if (ch == EOF){
    strcpy(nbuf,"");
	j --;
  }
  l = -j;
  fseek(fpe,l,SEEK_CUR);

  return 0;
}

put_a_line(FILE *fpe,char *buf)
{
  int i,xx,yy;

  for (i=0;i<strlen(buf);i++)
    fputc(buf[i],fpe);
  if (buf[0] == 'P'){
    xx = atoi(&(buf[1]));
    i = 0;
    while (buf[i] != ' ')
      i ++;
    yy = atoi(&(buf[i]));
    x_count1 += xx;
    y_count1 += yy;
  }
  if (fabs(yy) > 100)
    i = 0;
  fputc('\n',fpe);
}

put_a_line_to_tar_fpe(char *buf)
{
  int i,xx,yy;

  for (i=0;i<strlen(buf);i++)
    fputc(buf[i],tar_fpe);
  if (buf[0] == 'P'){
    xx = atoi(&(buf[1]));
    i = 0;
    while (buf[i] != ' ')
      i ++;
    yy = atoi(&(buf[i]));
    x_count1 += xx;
    y_count1 += yy;
  }
  if (fabs(yy) > 100)
    i = 0;
  fputc('\n',tar_fpe);
}

trans_file(FILE *fr_file,FILE *to_file)
{
  int ret,b_pos,b_p,i,flag,order,order1;
  char buf1[100],buf2[20],bufl[100];
  float ff;
  FILE *t_fpe;
  int b_flagl,flagl,rr;
  long ll;
  float bx,by,mx,my,ex,ey,a1,a2;
  long countl;

  b_flagl = 0;
  countl = 0;
  sub_flag = add_flag = 1;
  t_fpe = fopen("c:\\jgs\\temp.g","w");
  ret = 0;
  first_flag = 1;
  while (ret == 0){
    ret = get_a_line(fr_file);
    if (ret == -1)
      break;
    b_pos = 0;
    if (buf[0] == 'N'){
      i = 1;
      while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
	i ++;
      b_pos = i;
    }
    if ((buf[b_pos] == 'G')&&(buf[b_pos+1] == '9')&&(buf[b_pos+2] == '2')){
      b_p = b_pos;
      while ((buf[b_p] != 'X')&&(buf[b_p] != 'x'))
	b_p ++;
      o_x = atof(&(buf[b_p+1]));
      while ((buf[b_p] != 'Y')&&(buf[b_p] != 'y'))
	b_p ++;
      o_y = atof(&(buf[b_p+1]));
      fprintf(t_fpe,"%s\n",buf);
    }
    else if (buf[b_pos] == 'G'){
      i = b_pos + 1;
      while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
	i ++;
      b_p = i;
      flag = atoi(&(buf[b_pos+1]));
	  line_flag = flag;
      switch (flag){
	case 0:
	  trans_line(b_p,t_fpe);
	  break;
	case 1:
	  trans_line(b_p,t_fpe);
	  break;
	case 2:
	  trans_circ(b_p,t_fpe,2);
	  break;
	case 3:
	  trans_circ(b_p,t_fpe,3);
	  break;
      }
    }
    else if ((buf[b_pos] == 'X')||(buf[b_pos] == 'Y')){
      b_p = b_pos;
      switch (flag){
	case 0:
	  trans_line(b_p,t_fpe);
	  break;
	case 1:
	  trans_line(b_p,t_fpe);
	  break;
	case 2:
	  trans_circ(b_p,t_fpe,2);
	  break;
	case 3:
	  trans_circ(b_p,t_fpe,3);
	  break;
      }
    }
    else
      fprintf(t_fpe,"%s\n",buf);
  }

  fclose(t_fpe);
  fclose(fr_file);

  tar_fpe = to_file;

  fr_file = fopen("c:\\jgs\\temp.g","rb");
  ret = 0;
  begin_flag = 1;
  cur_speed = xydspeed;
  order1 = 1;
  while (ret == 0){
    order1 ++;
    ret = get_a_line(fr_file);
    if (fabs(x_count1-e_x*100) > 2)
      ret = ret;
    if (ret == -1)
      strcpy(buf,"");
    b_pos = 0;
    if (buf[0] == 'N'){
      i = 1;
      while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
	i ++;
      b_pos = i;
    }
    if (buf[b_pos] == 'F'){
      cur_speed = atof(&(buf[b_pos+1]));
      cur_speed /= 60;
      if (cur_speed < xmaxv1){
	xmaxv = cur_speed*60;
	ymaxv = cur_speed*60;
  x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
  y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
  x_once_max_v_pulses /= 60;
  y_once_max_v_pulses /= 60;

  x_times = x_once_max_v_pulses/x_once_max_a_pulses;
  if (x_times > 0)
    x_once_max_v_pulses = x_once_max_a_pulses*x_times;
  x_len_to_acc = 0;
  for (i=0;i<x_times;i++){
    x_len_to_acc += (i+1)*x_once_max_a_pulses;
  }
  y_times = y_once_max_v_pulses/y_once_max_a_pulses;
  if (y_times > 0)
    y_once_max_v_pulses = y_once_max_a_pulses*y_times;
  y_len_to_acc = 0;
  for (i=0;i<y_times;i++){
    y_len_to_acc += (i+1)*y_once_max_a_pulses;
  }
      }
    }
    else if (buf[b_pos] == 'M'){
      order = atoi(&(buf[b_pos+1]));
    for (i=0;i<end_output;i++)
	if (order == output[i].order){
	  if (mode == 1){
//	    put_a_line(to_file,"P0 0");
	    put_a_line(to_file,"A2");
	    put_a_line(to_file,"=2Q0 1Q0");
	  }
	  strcpy(buf1,"O ");
	  itoa(output[i].value,buf2,10);
	  strcat(buf1,buf2);
	  itoa(63,buf2,10);
	  strcat(buf1," ");
	  strcat(buf1,buf2);
	  put_a_line(to_file,buf1);
	  begin_flag = 1;
	}
//      if (order == 2){
//	put_a_line(to_file,"A2");
//	put_a_line(to_file,"S2");
//	put_a_line(to_file,"E");
//      }
    }
    else if ((buf[b_pos] == 'G')&&(buf[b_pos+1] == '9')&&(buf[b_pos+2] == '2')){
      b_p = b_pos;
      while ((buf[b_p] != 'X')&&(buf[b_p] != 'x'))
	b_p ++;
      o_x = atof(&(buf[b_p+1]));
      while ((buf[b_p] != 'Y')&&(buf[b_p] != 'y'))
	b_p ++;
      o_y = atof(&(buf[b_p+1]));
    }
    else if (buf[b_pos] == 'G'){
      i = b_pos + 1;
      while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
	i ++;
      b_p = i;
      flag = atoi(&(buf[b_pos+1]));
      if ((flag >= 0)&&(flag <= 3)){
	if (begin_flag == 1){
	  strcpy(buf1,"=1Q2 2Q2 1TD");
	  itoa(interval,buf2,10);
	  strcat(buf1,buf2);
	  strcat(buf1," 2TD");
	  strcat(buf1,buf2);
	  strcat(buf1," MSL11X MSS");
	  put_a_line(to_file,buf1);
	  begin_flag = 0;
	  mode = 1;
	}
      }
      switch (flag){
	  break;
	case 0:
	case 1:
	  if ((flag == 0)&&(!dk_flag))
	    set_data();
      ll = ftell(fr_file);
	  if (b_flagl == 1){
	    flagl = 0;
	    strcpy(bufl,buf);
	    while (flagl == 0){
          rr = get_a_line(fr_file);
		  if (rr == -1)
			break ;
		  i = 0;
		  while ((i < strlen(buf))&&(buf[i] != 'G'))
			i ++;
		  if (buf[i] == 'G'){
			if ((buf[i+1] == '1')||((buf[i+1] == '0')&&(buf[i+2] == '1'))){
			  flagl = 1;
			}
			if (((buf[i+1] == '0')&&((buf[i+2] < '0')||(buf[i+2] > '9')))||((buf[i+1] == '0')&&(buf[i+2] == '0'))){
			  flagl = 1;
			}
		  }
		}
	    if (flagl == 1){
		  bx = x_ps/xsteps;
		  by = y_ps/ysteps;
		  i = 0;
		  while (bufl[i] != 'X')
			i ++;
		  mx = atof(&(bufl[i+1]));
		  i = 0;
		  while (bufl[i] != 'Y')
			i ++;
		  my = atof(&(bufl[i+1]));
		  i = 0;
		  while (buf[i] != 'X')
			i ++;
		  ex = atof(&(buf[i+1]));
		  i = 0;
		  while (buf[i] != 'Y')
			i ++;
		  ey = atof(&(buf[i+1]));
          a1 = asin((my-by)/sqrt((mx-bx)*(mx-bx)+(my-by)*(my-by)))*180/3.14159;
          a2 = asin((ey-my)/sqrt((ex-mx)*(ex-mx)+(ey-my)*(ey-my)))*180/3.14159;
		  if (sub_flag == 1)
			  add_flag = 1;
		  else
			  add_flag = 0;
		  if (fabs(a1-a2) > 2){
			  countl ++;
			  sub_flag = 1;
		  }
		  else{
			  sub_flag = 0;
		  }
		}
	    strcpy(buf,bufl);
	  }

	  proc_line(b_p,to_file);
	  b_flagl = 1;
	  fseek(fr_file,ll,SEEK_SET);

⌨️ 快捷键说明

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