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

📄 setup.c

📁 This is a CNCPro source file. It is include the G-Code interpreter source.
💻 C
📖 第 1 页 / 共 5 页
字号:
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include <conio.h>
#include <math.h>
#include <dir.h>
#include "definitions.h"
#include "kernel.h"
#include "utilities.h"
#include "setup.h"
#include "help.h"

void setup(struct hard_setup *hard_config, struct soft_setup *soft_config)
{
   int ch, curnt=0, i, change=FALSE;
   char temp1[20]={1}, temp2[20]={2};
   static char item[10][35]={"Port Settings","Bit Settings","Unit, Label, Jog, and F/R Settings",
                             "Calibration Settings","Home and Limit Switch Settings","Change Password",
                             "Load Default Settings","Save As","Save", "Exit Without Saving"};
   static BYTE screen[2000], buffer[1000];
   static struct hard_setup hardware;
   static struct soft_setup software;
   struct find_t ffblk;

   hardware=*hard_config; software=*soft_config;
   load_setup(&hardware, &software, software.file);
   gettext(21,1,60,25,screen);
   textcolor(BLUE);
   if(strcmp(software.password,"none")!=0)
     {box(28,8,53,16, RED,BLACK,WHITE,WHITE);
      gotoxy(4,4); cprintf("Cfg: %s",software.file);
      gotoxy(4,6); cprintf("Password:");
      window(40,13,48,13);
      textbackground(BLACK);
      clrscr();  gotoxy(1,1);
      _setcursortype(_NORMALCURSOR);
     if(NULL==(i=get_string(software.password, PASSWORD)) ||
         i==ESC || strcmp(software.password,(*soft_config).password)!=0)
        {_setcursortype(_NOCURSOR);
         if(i==ESC) {window(1,1,80,25); puttext(21,1,60,25,screen); return;}
         puttext(21,1,60,25,screen);
         box(28,9,52,15, RED,BLACK,WHITE,WHITE);
         gotoxy(5,4); cprintf("Invalid Password");
         sleep(2);
         puttext(21,1,60,25,screen);
         return;
        }
     }
   _setcursortype(_NOCURSOR);
   while(1)
     {window(21,1,60,25);
      textbackground(LIGHTGRAY);
      clrscr();
      box(21,3,60,16, LIGHTGRAY,BLACK,WHITE,BLUE);
      window(21,1,60,25);
      gotoxy(15,1); cprintf("<Esc> To Exit");
      gotoxy(4,3); cprintf("Cfg: %s",software.file);
      for(i=0;i<10;i++) {gotoxy(4,i+5); cprintf("%s",item[i]);}
      while (1)
        {gotoxy(4,curnt+5); textbackground(BROWN);
         cprintf("%s",item[curnt]); ch=getch();
         gotoxy(4,curnt+5); textbackground(LIGHTGRAY);
         cprintf("%s",item[curnt]);
         if (ch == 13 || ch == 32) {if(strcmp(software.file,"<DEFAULT>")==0 && curnt==8) curnt=7; break;}
         if (ch == 27) {curnt=9; break;}
         if (ch > 0) continue;
         ch = getch();
         switch (ch)
           {case 72 : --curnt; break;  //up arrow
            case 80 : ++curnt; break;  //down arrow
            case 59 : help(curnt+2); break;  //f1
           }
         if (curnt < 0) curnt=9;
         if (curnt > 9) curnt=0;
        }

      START:
      switch(curnt)
        {case 0:
            if(pins(&hardware)) change=TRUE;
            break;
         case 1:
            if(bits(&hardware, &software)) change=TRUE;
            break;
         case 2:
            if(label(&hardware, &software)) change=TRUE;
            break;
         case 3:
            if(calibration(&hardware, &software)) change=TRUE;
            break;
         case 4:
            if(home(&hardware, &software)) change=TRUE;
            break;
         case 5:
            box(25,16,55,24, RED,BLACK,WHITE,WHITE);
            gotoxy(4,4); cprintf("New Password:");
            gotoxy(4,6); cprintf("Confirm:");
            _setcursortype(_NORMALCURSOR);
            while(strcmp(temp1, temp2)!=0)
              {window(43,21,51,21);
               textbackground(BLACK);
               clrscr();
               window(43,19,51,19);
               textbackground(BLACK);
               clrscr();
               gotoxy(1,1);
               while(NULL==(i=get_string(temp1, PASSWORD)));
               if(i==ESC) break;
               window(43,21,51,21);
               gotoxy(1,1);
               while(NULL==(i=get_string(temp2, PASSWORD)));
               if(i==ESC) break;
              }
            _setcursortype(_NOCURSOR);
            if(i==ESC) break;
            sprintf(software.password,"%s",temp1);
            change=TRUE;
            break;
         case 6:
            box(22,19,59,24, RED,BLACK,WHITE,WHITE);
            gotoxy(4,3); cprintf("     Load Default Settings");
            gotoxy(4,4); cprintf("<Enter> To Accept  <Esc> To Abort");
            while(1)
              {ch=getch();
               if(ch==27 || ch==13 || ch==32) break;
              }
            if(ch==27) break;
            sprintf(temp1,"%s",software.password);
            sprintf(temp2,"%s",software.file);
            load_setup(&hardware, &software, "<DEFAULT>");
            sprintf(software.password,"%s",temp1);
            sprintf(software.file,"%s",temp2);
            change=TRUE;
            break;
         case 7:
            box(27,18,52,24, RED,BLACK,WHITE,WHITE);
            gotoxy(4,4); cprintf("Save As:");
            window(39,21,47,21);
            textbackground(BLACK);
            clrscr();
            gotoxy(1,1);
            _setcursortype(_NORMALCURSOR);
            while(NULL==(i=get_string(temp1, NULL)));
            _setcursortype(_NOCURSOR);
            if(i==ESC) break;
            i=0;
            sprintf(temp2,"%s.CFG",temp1);
            if(chdir("CONFIG")!=0) {mkdir("CONFIG"); chdir("CONFIG");}
            if(_dos_findfirst(temp2,_A_NORMAL,&ffblk)==NULL)
              {gettext(22,19,59,24,buffer);
               box(22,19,59,24, RED,BLACK,WHITE,WHITE);
               gotoxy(4,3); cprintf("   Replace File: %s?", temp2);
               gotoxy(4,4); cprintf("<Enter> To Accept  <Esc> To Abort");
               while(1) {i=getch(); if(i==27 || i==13 || i==32) break;}
               puttext(22,19,59,24,buffer);
              }
            chdir("..");
            if(i==27) break;
            _setcursortype(_NOCURSOR);
            sprintf(software.file,"%s",temp2);
         case 8:
            if(curnt==8)
              {box(22,19,59,24, RED,BLACK,WHITE,WHITE);
               gotoxy(4,3); cprintf("   Save File To: %s",software.file);
               gotoxy(4,4); cprintf("<Enter> To Accept  <Esc> To Abort");
               while(1)
                 {ch=getch();
                  if(ch==27 || ch==13 || ch==32) break;}
               if(ch==27) break;
              }
            *hard_config=hardware;
            *soft_config=software;
            save_setup(hard_config, soft_config, (*soft_config).file);
            change=FALSE;
            break;
         case 9:
            if(change==TRUE)
              {box(22,19,59,24, RED,BLACK,WHITE,WHITE);
               gotoxy(4,3); cprintf("  Save Changes To: %s",software.file);
               gotoxy(4,4); cprintf("<Enter> To Accept  <Esc> To Abort");
               while(1)
                 {ch=getch();
                  if(ch==27 || ch==13 || ch==32) break;}
               if(ch==13 || ch==32)
                 {if(strcmp(software.file,"<DEFAULT>")==0) curnt=7;
                  else curnt=8;
                  goto START;}
              }
            puttext(21,1,60,25,screen);
            return;
        }
     }
}

int pins(struct hard_setup *hardware)
{
   int ch, i, curnt=0, curnt2, tab=0, temp, val, change=FALSE;
   int x[4][8]={{4},{4,4,4,4,4,4,4,4},{24,24,24,24,24},{24,24,24,24}};
   int y[4][8]={{12},{16,17,18,19,20,21,22,23},{12,13,14,15,16},{20,21,22,23}};
   static char item[4][8][30];
   static char item2[4][8][15];
   static struct hard_setup temp_config;
   window(21,1,60,25);
   textbackground(LIGHTGRAY);
   clrscr();
   for(i=0;i<8;i++) sprintf(item2[1][i],"Pin        %2d",i+2);
   sprintf(item2[0][0],"Port     0x378");
   sprintf(item2[0][1],"Port     0x278");
   sprintf(item2[0][2],"Port     0x3BC");
   sprintf(item2[3][0],"Pin          1");
   sprintf(item2[3][1],"Pin         14");
   sprintf(item2[3][2],"Pin         16");
   sprintf(item2[3][3],"Pin         17");
   for(i=0;i<4;i++) sprintf(item2[2][i],"Pin         %2d",i+10);
   sprintf(item2[2][4],"Pin         15");

   box(21,2,60,9, LIGHTGRAY,BLACK,WHITE,BLUE);
   gotoxy(4,3); cprintf(" 13-----------------------------1");
   gotoxy(4,4); cprintf("   \\                           /");
   gotoxy(4,5); cprintf("    \\                         /");
   gotoxy(4,6); cprintf("   25-------------------------14");
   textcolor(YELLOW);
   gotoxy(9,4); cprintf("o o o o o o o o o o o o o");
   textcolor(BLACK);
   gotoxy(10,5); cprintf("o o o o o o o o");
   textcolor(YELLOW);
   cprintf(" o o o o");
   textcolor(BLUE);
   gotoxy(3,8); cprintf("Looking at Port on Back of Computer");
   window(21,1,60,25);
   gotoxy(1,1); cprintf(" <Tab> To Change group    <Esc> To Exit");

   while (1)
     {sprintf(item[1][0],"<X> Step Pin %d",data_pin((*hardware).x_sbit));
      sprintf(item[1][1],"<X> Dir Pin  %d",data_pin((*hardware).x_dbit));
      sprintf(item[1][2],"<Y> Step Pin %d",data_pin((*hardware).y_sbit));
      sprintf(item[1][3],"<Y> Dir Pin  %d",data_pin((*hardware).y_dbit));
      sprintf(item[1][4],"<Z> Step Pin %d",data_pin((*hardware).z_sbit));
      sprintf(item[1][5],"<Z> Dir Pin  %d",data_pin((*hardware).z_dbit));
      sprintf(item[1][6],"<Aux>St. Pin %d",data_pin((*hardware).a_sbit));
      sprintf(item[1][7],"<Aux>Dir Pin %d",data_pin((*hardware).a_dbit));
      if((*hardware).port==0x378) sprintf(item[0][0],"Port     0X378");
      if((*hardware).port==0x278) sprintf(item[0][0],"Port     0X278");
      if((*hardware).port==0x3bc) sprintf(item[0][0],"Port     0X3BC");
      sprintf(item[3][0],"<1st IO>Pin %2d",control_pin((*hardware).io1_bit));
      sprintf(item[3][1],"<2nd IO>Pin %2d",control_pin((*hardware).io2_bit));
      sprintf(item[3][2],"<3rd IO>Pin %2d",control_pin((*hardware).io3_bit));
      sprintf(item[3][3],"<4th IO>Pin %2d",control_pin((*hardware).io4_bit));
      sprintf(item[2][0],"<X>Lim Pin  %2d",status_pin((*hardware).x_lbit));
      sprintf(item[2][1],"<Y>Lim Pin  %2d",status_pin((*hardware).y_lbit));
      sprintf(item[2][2],"<Z>Lim Pin  %2d",status_pin((*hardware).z_lbit));
      sprintf(item[2][3],"<Aux>LimPin %2d",status_pin((*hardware).a_lbit));
      sprintf(item[2][4],"<ES/Hld>Pin %2d",status_pin((*hardware).e_bit));

⌨️ 快捷键说明

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