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

📄 operator.bak

📁 This is a CNCPro source file. It is include the G-Code interpreter source.
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "definitions.h"
#include "utilities.h"
#include "setup.h"
#include "help.h"
#include "operator.h"

void operator_setup(struct hard_setup *hardware, struct soft_setup *software, struct gcode_setup *gcode)
{
   float value;
   int ch, curnt=0, i;
   static char item[9][35], screen[2000];

   gettext(21,1,60,25,screen);
   while(1)
     {window(21,1,60,25);
      textbackground(LIGHTGRAY);
      clrscr();
      box(21,1,60,13, LIGHTGRAY,BLACK,WHITE,BLUE);
      window(21,1,60,25);
      gotoxy(15,1); cprintf("<Esc> To Exit");
      sprintf(item[0],"Coordinate Offsets");
      sprintf(item[1],"Tool Table                        ");
      if((*software).units==IN)
        {sprintf(item[2],"<X> Tool Change Pos. (IN) %s",prn_val_all((*gcode).tool_ch_x));
         sprintf(item[3],"<Y> Tool Change Pos. (IN) %s",prn_val_all((*gcode).tool_ch_y));
         sprintf(item[4],"<Z> Tool Change Pos. (IN) %s",prn_val_all((*gcode).tool_ch_z));
         sprintf(item[8],"Units                           IN");
        }
      else
        {sprintf(item[2],"<X> Tool Change Pos. (MM) %s",prn_val_all((*gcode).tool_ch_x));
         sprintf(item[3],"<Y> Tool Change Pos. (MM) %s",prn_val_all((*gcode).tool_ch_y));
         sprintf(item[4],"<Z> Tool Change Pos. (MM) %s",prn_val_all((*gcode).tool_ch_z));
         sprintf(item[8],"Units                           MM");
        }
      if((*software).a_units==IN) sprintf(item[5],"<Aux> Tool Ch. Pos. (IN)  %s",prn_val_all((*gcode).tool_ch_a));
      if((*software).a_units==MM) sprintf(item[5],"<Aux> Tool Ch. Pos. (MM)  %s",prn_val_all((*gcode).tool_ch_a));
      if((*software).a_units==DEG) sprintf(item[5],"<Aux> Tool Ch. Pos. (DEG) %s",prn_val_all((*gcode).tool_ch_a));
      if((*software).a_units==RAD) sprintf(item[5],"<Aux> Tool Ch. Pos. (RAD) %s",prn_val_all((*gcode).tool_ch_a));

      if((*gcode).safer==ON)  sprintf(item[6],"G0 Movement         LINEAR (SAFER)");
      else sprintf(item[6],"G0 Movement    NON-LINEAR (FASTER)");
      if((*gcode).relarc==ON) sprintf(item[7],"I And J Always Relative         ON");
      else sprintf(item[7],"I And J Always Relative        OFF");
      for(i=0;i<9;i++) {gotoxy(4,i+3); cprintf("%s",item[i]);}
      while (1)
        {gotoxy(4,curnt+3); textbackground(BROWN);
         cprintf("%s",item[curnt]); ch=getch();
         gotoxy(4,curnt+3); textbackground(LIGHTGRAY);
         cprintf("%s",item[curnt]);
         if (ch == 13 || ch == 32)
           {gotoxy(4,curnt+3); textbackground(GREEN);
            cprintf("%s",item[curnt]); textbackground(LIGHTGRAY);
            break;
           }
         if (ch == 27) {puttext(21,1,60,25,screen); return;}
         if (ch > 0) continue;
         ch = getch();
         switch (ch)
           {case 72 : --curnt; break;  //up arrow
            case 80 : ++curnt; break;  //down arrow
            case 59 :  //f1
              switch(curnt)
                {case 0: help(43); break;
                 case 1: help(44); break;
                 case 2: case 3: case 4: case 5: help(45); break;
                 case 6: help(46); break;
                 case 7: help(48); break;
                 case 8: help(47); break;
                }
              break;
           }
         if (curnt < 0) curnt=8;
         if (curnt > 8) curnt=0;
        }

      switch(curnt)
        {case 0: offsets(gcode); break;
         case 1: tools(gcode); break;
         case 2:
         case 3:
         case 4:
         case 5:
            double_box(30,15,50,20, RED,WHITE,BLUE);
            gotoxy(4,3); cprintf("Enter New Value");
            _setcursortype(_NORMALCURSOR);
            gotoxy(8,4);
            if((i=get_value_all(&value))==ESC || i==NULL)
              {_setcursortype(_NOCURSOR);
               clrscr();
               window(21,1,60,25);
               break;
              }
            _setcursortype(_NOCURSOR);
            clrscr();
            window(21,1,60,25);
            if(curnt==2) (*gcode).tool_ch_x=value;
            if(curnt==3) (*gcode).tool_ch_y=value;
            if(curnt==4) (*gcode).tool_ch_z=value;
            if(curnt==5) (*gcode).tool_ch_a=value;
            break;
         case 6:
            if((*gcode).safer==ON) (*gcode).safer=OFF;
            else (*gcode).safer=ON;
            break;
         case 7:
            if((*gcode).relarc==ON) (*gcode).relarc=OFF;
            else (*gcode).relarc=ON;
            break;
         case 8:
            if((*software).units==MM)
              {change_gcode_units(software, gcode, IN, IN);
               change_units(hardware, software, IN, IN);
              }
            else
              {change_gcode_units(software, gcode, MM, MM);
               change_units(hardware, software, MM, MM);
              }
            break;
        }
     }
}

void tools(struct gcode_setup *gcode)
{
   int curnt=1, page=0, i;
   float temp_dia, temp_len;
   char temp_dis[10], ch, temp_val[10];

   window(21,1,60,25); textbackground(LIGHTGRAY); clrscr();
   gotoxy(4,1); textcolor(BLUE); cprintf("<Enter> To Edit Or <Esc> To Exit");
   box(21,3,60,25, LIGHTGRAY,BLACK,WHITE,BLUE);
   while (1)
     {box(21,3,60,25, LIGHTGRAY,BLACK,WHITE,LIGHTGRAY); textbackground(BLUE);
      gotoxy(3,3); cprintf("Tool#   Disc.   Diameter     Length ");
      textcolor(BLUE); textbackground(LIGHTGRAY);
      gotoxy(4,1); cprintf("Current Tool: %2d",(*gcode).tnum);
      if(curnt==17) {page++; curnt=0;}
      else if(curnt==0 && page>0) {page--; curnt=17;}
      if(page==0)
        {for(i=0;i<17;i++)
           {gotoxy(4,i+4);
            sprintf(temp_val,"%s",prn_val((*gcode).tool_len[i]));
            cprintf("%2d  %8s    %s    %s",i,(*gcode).tool_dis[i],
                    prn_val((*gcode).tool_dia[i]),temp_val);
           }
         if(100>(page+1)*16+1) {gotoxy(4,i+4); cprintf("More Tools...");}
        }
      else
        {gotoxy(4,4); cprintf("Previous Tools...");
         for(i=0;i<min(99-page*16,16);i++)
           {gotoxy(4,i+5);
            sprintf(temp_val,"%s",prn_val((*gcode).tool_len[page*16+1+i]));
            cprintf("%2d  %8s    %s    %s",page*16+1+i,(*gcode).tool_dis[page*16+1+i],
                    prn_val((*gcode).tool_dia[page*16+1+i]),temp_val);

           }
         if(100>(page+1)*16+1) {gotoxy(4,i+5); cprintf("More Tools...");}
        }
      while (1)
        {gotoxy(4,curnt+4); textbackground(BROWN);
         if(curnt==17) cprintf("More Tools...");
         else if(curnt==0 && page!=0) cprintf("Previous Tools...");
         else
           {sprintf(temp_val,"%s",prn_val((*gcode).tool_len[page*16+curnt]));
            cprintf("%2d  %8s    %s    %s",page*16+curnt,(*gcode).tool_dis[page*16+curnt],
                    prn_val((*gcode).tool_dia[page*16+curnt]),temp_val);
           }
         ch=getch();
         gotoxy(4,curnt+4); textbackground(LIGHTGRAY);
         if(curnt==17) cprintf("More Tools...");
         else if(curnt==0 && page!=0) cprintf("Previous Tools...");
         else
           {sprintf(temp_val,"%s",prn_val((*gcode).tool_len[page*16+curnt]));
                    cprintf("%2d  %8s    %s    %s",page*16+curnt,(*gcode).tool_dis[page*16+curnt],
                    prn_val((*gcode).tool_dia[page*16+curnt]),temp_val);}
         if ((ch==13 || ch==32) && curnt!=0 && curnt!=17)
           {if(page*17+curnt==(*gcode).tnum)
              {box(22,19,59,24, RED,BLACK,WHITE,WHITE);
               gotoxy(4,3); cprintf("    Can't Edit Current Tool");
               gotoxy(4,4); cprintf("           <Any Key>");
               getch();
               break;
              }
            gotoxy(4,curnt+4); textbackground(GREEN);
            sprintf(temp_val,"%s",prn_val((*gcode).tool_len[page*16+curnt]));
            cprintf("%2d  %8s    %s    %s",page*16+curnt,(*gcode).tool_dis[page*16+curnt],
            prn_val((*gcode).tool_dia[page*16+curnt]),temp_val);
            box(22,19,59,24, RED,BLACK,WHITE,WHITE);
            gotoxy(2,1); cprintf("           <Esc> To Abort");
            gotoxy(4,3); cprintf("Tool#: %2d  Discription:",page*16+curnt);
            gotoxy(4,4); cprintf("Dia.:");
            gotoxy(20,4); cprintf("Length:");
            _setcursortype(_NORMALCURSOR); temp_dia=temp_len=0; sprintf(temp_dis,"NONE");
            gotoxy(28,3); if(ESC==get_string_all(temp_dis)) {_setcursortype(_NOCURSOR); break;}
            gotoxy(10,4); if(ESC==get_value(&temp_dia)) {_setcursortype(_NOCURSOR); break;}
            gotoxy(28,4); if(ESC==get_value(&temp_len)) {_setcursortype(_NOCURSOR); break;}
            _setcursortype(_NOCURSOR);
            sprintf((*gcode).tool_dis[page*16+curnt],"%s",temp_dis);
            (*gcode).tool_dia[page*16+curnt]=temp_dia;
            (*gcode).tool_len[page*16+curnt]=temp_len;
            (*gcode).tnum_max=(*gcode).tnum_max+1;
            break;
           }
         if (ch==27 || ch==13 || ch==32) break;
         if (ch > 0) continue;
         ch = getch();
         switch (ch)
           {case 72 : --curnt; break;  //up arrow
            case 80 : ++curnt; break;  //down arrow
            case 59 : help(53); break;
           }
         if (ch==27) {ch=0; break;}
         if (curnt < 0 || (page==0 && curnt<1)) curnt=min(99-(16*page),17);

⌨️ 快捷键说明

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