Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rs274ngc.hh File Reference

#include <stdio.h>
#include "canon.hh"

Include dependency graph for new/rs274ngc.hh:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  block_struct
struct  setup_struct

Defines

#define AND   &&
#define IS   ==
#define ISNT   !=
#define MAX(x, y)   ((x) > (y) ? (x) : (y))
#define NOT   !
#define OR   ||
#define SET_TO   =
#define TRUE   1
#define FALSE   0
#define RS274NGC_TEXT_SIZE   256
#define TOLERANCE_INCH   0.0002
#define TOLERANCE_MM   0.002
#define TOLERANCE_CONCAVE_CORNER   0.01
#define TINY   1e-12
#define UNKNOWN   1e-20
#define TWO_PI   6.2831853071795864
#define PI   3.1415926535897932
#define PI2   1.5707963267948966
#define RS274NGC_ACTIVE_G_CODES   12
#define RS274NGC_ACTIVE_M_CODES   7
#define RS274NGC_ACTIVE_SETTINGS   3
#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT   "rs274ngc.var"
#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX   ".bak"
#define MAX_EMS   4
#define MM_PER_INCH   25.4
#define INCH_PER_MM   0.039370078740157477
#define OFF   0
#define ON   1
#define UNITS_PER_MINUTE   0
#define INVERSE_TIME   1
#define RIGHT   1
#define LEFT   2
#define RS274NGC_MAX_PARAMETERS   5400
#define ABS   1
#define ACOS   2
#define ASIN   3
#define ATAN   4
#define COS   5
#define EXP   6
#define FIX   7
#define FUP   8
#define LN   9
#define ROUND   10
#define SIN   11
#define SQRT   12
#define TAN   13
#define NO_OPERATION   0
#define DIVIDED_BY   1
#define MODULO   2
#define POWER   3
#define TIMES   4
#define AND2   5
#define EXCLUSIVE_OR   6
#define MINUS   7
#define NON_EXCLUSIVE_OR   8
#define PLUS   9
#define RIGHT_BRACKET   10
#define G_0   0
#define G_1   10
#define G_2   20
#define G_3   30
#define G_4   40
#define G_10   100
#define G_17   170
#define G_18   180
#define G_19   190
#define G_20   200
#define G_21   210
#define G_28   280
#define G_30   300
#define G_38_2   382
#define G_40   400
#define G_41   410
#define G_42   420
#define G_43   430
#define G_49   490
#define G_53   530
#define G_54   540
#define G_55   550
#define G_56   560
#define G_57   570
#define G_58   580
#define G_59   590
#define G_59_1   591
#define G_59_2   592
#define G_59_3   593
#define G_61   610
#define G_61_1   611
#define G_64   640
#define G_80   800
#define G_81   810
#define G_82   820
#define G_83   830
#define G_84   840
#define G_85   850
#define G_86   860
#define G_87   870
#define G_88   880
#define G_89   890
#define G_90   900
#define G_91   910
#define G_92   920
#define G_92_1   921
#define G_92_2   922
#define G_92_3   923
#define G_93   930
#define G_94   940
#define G_98   980
#define G_99   990

Typedefs

typedef int ON_OFF
typedef block_struct block
typedef blockblock_pointer
typedef setup_struct setup
typedef setupsetup_pointer
typedef int(* read_function_pointer )(char *, int *, block_pointer, double *)

Enumerations

enum  DISTANCE_MODE { MODE_ABSOLUTE, MODE_INCREMENTAL }
enum  RETRACT_MODE { R_PLANE, OLD_Z }

Functions

int rs274ngc_close ()
int rs274ngc_execute (const char *command=0)
int rs274ngc_exit ()
int rs274ngc_init ()
int rs274ngc_load_tool_table ()
int rs274ngc_open (const char *filename)
int rs274ngc_read (const char *mdi=0)
int rs274ngc_reset ()
int rs274ngc_restore_parameters (const char *filename)
int rs274ngc_save_parameters (const char *filename, const double parameters[])
int rs274ngc_synch ()
void rs274ngc_active_g_codes (int *codes)
void rs274ngc_active_m_codes (int *codes)
void rs274ngc_active_settings (double *settings)
void rs274ngc_error_text (int error_code, char *error_text, int max_size)
void rs274ngc_file_name (char *file_name, int max_size)
int rs274ngc_line_length ()
void rs274ngc_line_text (char *line_text, int max_size)
int rs274ngc_sequence_number ()
void rs274ngc_stack_name (int stack_index, char *function_name, int max_size)
int rs274ngc_ini_load (const char *filename)
 load settings from INI file. More...

int rs274ngc_line ()
const char * rs274ngc_command ()
const char * rs274ngc_file ()


Define Documentation

#define ABS   1
 

Definition at line 93 of file new/rs274ngc.hh.

#define ACOS   2
 

Definition at line 94 of file new/rs274ngc.hh.

#define AND   &&
 

Definition at line 22 of file new/rs274ngc.hh.

#define AND2   5
 

Definition at line 114 of file new/rs274ngc.hh.

#define ASIN   3
 

Definition at line 95 of file new/rs274ngc.hh.

#define ATAN   4
 

Definition at line 96 of file new/rs274ngc.hh.

#define COS   5
 

Definition at line 97 of file new/rs274ngc.hh.

#define DIVIDED_BY   1
 

Definition at line 110 of file new/rs274ngc.hh.

#define EXCLUSIVE_OR   6
 

Definition at line 115 of file new/rs274ngc.hh.

#define EXP   6
 

Definition at line 98 of file new/rs274ngc.hh.

#define FALSE   0
 

Definition at line 35 of file new/rs274ngc.hh.

#define FIX   7
 

Definition at line 99 of file new/rs274ngc.hh.

#define FUP   8
 

Definition at line 100 of file new/rs274ngc.hh.

#define G_0   0
 

Definition at line 122 of file new/rs274ngc.hh.

#define G_1   10
 

Definition at line 123 of file new/rs274ngc.hh.

#define G_10   100
 

Definition at line 127 of file new/rs274ngc.hh.

#define G_17   170
 

Definition at line 128 of file new/rs274ngc.hh.

#define G_18   180
 

Definition at line 129 of file new/rs274ngc.hh.

#define G_19   190
 

Definition at line 130 of file new/rs274ngc.hh.

#define G_2   20
 

Definition at line 124 of file new/rs274ngc.hh.

#define G_20   200
 

Definition at line 131 of file new/rs274ngc.hh.

#define G_21   210
 

Definition at line 132 of file new/rs274ngc.hh.

#define G_28   280
 

Definition at line 133 of file new/rs274ngc.hh.

#define G_3   30
 

Definition at line 125 of file new/rs274ngc.hh.

#define G_30   300
 

Definition at line 134 of file new/rs274ngc.hh.

#define G_38_2   382
 

Definition at line 135 of file new/rs274ngc.hh.

#define G_4   40
 

Definition at line 126 of file new/rs274ngc.hh.

#define G_40   400
 

Definition at line 136 of file new/rs274ngc.hh.

#define G_41   410
 

Definition at line 137 of file new/rs274ngc.hh.

#define G_42   420
 

Definition at line 138 of file new/rs274ngc.hh.

#define G_43   430
 

Definition at line 139 of file new/rs274ngc.hh.

#define G_49   490
 

Definition at line 140 of file new/rs274ngc.hh.

#define G_53   530
 

Definition at line 141 of file new/rs274ngc.hh.

#define G_54   540
 

Definition at line 142 of file new/rs274ngc.hh.

#define G_55   550
 

Definition at line 143 of file new/rs274ngc.hh.

#define G_56   560
 

Definition at line 144 of file new/rs274ngc.hh.

#define G_57   570
 

Definition at line 145 of file new/rs274ngc.hh.

#define G_58   580
 

Definition at line 146 of file new/rs274ngc.hh.

#define G_59   590
 

Definition at line 147 of file new/rs274ngc.hh.

#define G_59_1   591
 

Definition at line 148 of file new/rs274ngc.hh.

#define G_59_2   592
 

Definition at line 149 of file new/rs274ngc.hh.

#define G_59_3   593
 

Definition at line 150 of file new/rs274ngc.hh.

#define G_61   610
 

Definition at line 151 of file new/rs274ngc.hh.

#define G_61_1   611
 

Definition at line 152 of file new/rs274ngc.hh.

#define G_64   640
 

Definition at line 153 of file new/rs274ngc.hh.

#define G_80   800
 

Definition at line 154 of file new/rs274ngc.hh.

#define G_81   810
 

Definition at line 155 of file new/rs274ngc.hh.

#define G_82   820
 

Definition at line 156 of file new/rs274ngc.hh.

#define G_83   830
 

Definition at line 157 of file new/rs274ngc.hh.

#define G_84   840
 

Definition at line 158 of file new/rs274ngc.hh.

#define G_85   850
 

Definition at line 159 of file new/rs274ngc.hh.

#define G_86   860
 

Definition at line 160 of file new/rs274ngc.hh.

#define G_87   870
 

Definition at line 161 of file new/rs274ngc.hh.

#define G_88   880
 

Definition at line 162 of file new/rs274ngc.hh.

#define G_89   890
 

Definition at line 163 of file new/rs274ngc.hh.

#define G_90   900
 

Definition at line 164 of file new/rs274ngc.hh.

#define G_91   910
 

Definition at line 165 of file new/rs274ngc.hh.

#define G_92   920
 

Definition at line 166 of file new/rs274ngc.hh.

#define G_92_1   921
 

Definition at line 167 of file new/rs274ngc.hh.

#define G_92_2   922
 

Definition at line 168 of file new/rs274ngc.hh.

#define G_92_3   923
 

Definition at line 169 of file new/rs274ngc.hh.

#define G_93   930
 

Definition at line 170 of file new/rs274ngc.hh.

#define G_94   940
 

Definition at line 171 of file new/rs274ngc.hh.

#define G_98   980
 

Definition at line 172 of file new/rs274ngc.hh.

#define G_99   990
 

Definition at line 173 of file new/rs274ngc.hh.

#define INCH_PER_MM   0.039370078740157477
 

Definition at line 71 of file new/rs274ngc.hh.

#define INVERSE_TIME   1
 

Definition at line 79 of file new/rs274ngc.hh.

#define IS   ==
 

Definition at line 23 of file new/rs274ngc.hh.

#define ISNT   !=
 

Definition at line 24 of file new/rs274ngc.hh.

#define LEFT   2
 

Definition at line 84 of file new/rs274ngc.hh.

#define LN   9
 

Definition at line 101 of file new/rs274ngc.hh.

#define MAX x,
     ((x) > (y) ? (x) : (y))
 

Definition at line 25 of file new/rs274ngc.hh.

#define MAX_EMS   4
 

Definition at line 67 of file new/rs274ngc.hh.

#define MINUS   7
 

Definition at line 116 of file new/rs274ngc.hh.

#define MM_PER_INCH   25.4
 

Definition at line 70 of file new/rs274ngc.hh.

#define MODULO   2
 

Definition at line 111 of file new/rs274ngc.hh.

#define NON_EXCLUSIVE_OR   8
 

Definition at line 117 of file new/rs274ngc.hh.

#define NOT   !
 

Definition at line 26 of file new/rs274ngc.hh.

#define NO_OPERATION   0
 

Definition at line 109 of file new/rs274ngc.hh.

#define OFF   0
 

Definition at line 74 of file new/rs274ngc.hh.

#define ON   1
 

Definition at line 75 of file new/rs274ngc.hh.

#define OR   ||
 

Definition at line 27 of file new/rs274ngc.hh.

#define PI   3.1415926535897932
 

Definition at line 50 of file new/rs274ngc.hh.

#define PI2   1.5707963267948966
 

Definition at line 54 of file new/rs274ngc.hh.

#define PLUS   9
 

Definition at line 118 of file new/rs274ngc.hh.

#define POWER   3
 

Definition at line 112 of file new/rs274ngc.hh.

#define RIGHT   1
 

Definition at line 83 of file new/rs274ngc.hh.

#define RIGHT_BRACKET   10
 

Definition at line 119 of file new/rs274ngc.hh.

#define ROUND   10
 

Definition at line 102 of file new/rs274ngc.hh.

#define RS274NGC_ACTIVE_G_CODES   12
 

Definition at line 58 of file new/rs274ngc.hh.

#define RS274NGC_ACTIVE_M_CODES   7
 

Definition at line 59 of file new/rs274ngc.hh.

#define RS274NGC_ACTIVE_SETTINGS   3
 

Definition at line 60 of file new/rs274ngc.hh.

#define RS274NGC_MAX_PARAMETERS   5400
 

Definition at line 87 of file new/rs274ngc.hh.

#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX   ".bak"
 

Definition at line 64 of file new/rs274ngc.hh.

#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT   "rs274ngc.var"
 

Definition at line 63 of file new/rs274ngc.hh.

#define RS274NGC_TEXT_SIZE   256
 

Definition at line 38 of file new/rs274ngc.hh.

#define SET_TO   =
 

Definition at line 28 of file new/rs274ngc.hh.

#define SIN   11
 

Definition at line 103 of file new/rs274ngc.hh.

#define SQRT   12
 

Definition at line 104 of file new/rs274ngc.hh.

#define TAN   13
 

Definition at line 105 of file new/rs274ngc.hh.

#define TIMES   4
 

Definition at line 113 of file new/rs274ngc.hh.

#define TINY   1e-12
 

Definition at line 45 of file new/rs274ngc.hh.

#define TOLERANCE_CONCAVE_CORNER   0.01
 

Definition at line 43 of file new/rs274ngc.hh.

#define TOLERANCE_INCH   0.0002
 

Definition at line 41 of file new/rs274ngc.hh.

#define TOLERANCE_MM   0.002
 

Definition at line 42 of file new/rs274ngc.hh.

#define TRUE   1
 

Definition at line 31 of file new/rs274ngc.hh.

#define TWO_PI   6.2831853071795864
 

Definition at line 47 of file new/rs274ngc.hh.

#define UNITS_PER_MINUTE   0
 

Definition at line 78 of file new/rs274ngc.hh.

#define UNKNOWN   1e-20
 

Definition at line 46 of file new/rs274ngc.hh.


Typedef Documentation

typedef int ON_OFF
 

Definition at line 185 of file new/rs274ngc.hh.

typedef struct block_struct block
 

typedef block* block_pointer
 

Definition at line 230 of file new/rs274ngc.hh.

typedef int(* read_function_pointer)(char *, int *, block_pointer, double *)
 

Definition at line 336 of file new/rs274ngc.hh.

typedef struct setup_struct setup
 

typedef setup* setup_pointer
 

Definition at line 333 of file new/rs274ngc.hh.


Enumeration Type Documentation

enum DISTANCE_MODE
 

Enumeration values:
MODE_ABSOLUTE 
MODE_INCREMENTAL 

Definition at line 180 of file new/rs274ngc.hh.

00180 {MODE_ABSOLUTE, MODE_INCREMENTAL} DISTANCE_MODE;

enum RETRACT_MODE
 

Enumeration values:
R_PLANE 
OLD_Z 

Definition at line 183 of file new/rs274ngc.hh.

00183 {R_PLANE, OLD_Z} RETRACT_MODE;


Function Documentation

void rs274ngc_active_g_codes int *    codes
 

Definition at line 11940 of file rs274ngc_pre.cc.

11942 {
11943   int n;
11944 
11945   for (n SET_TO 0; n < RS274NGC_ACTIVE_G_CODES; n++)
11946     {
11947       codes[n] SET_TO _setup.active_g_codes[n];
11948     }
11949 }

void rs274ngc_active_m_codes int *    codes
 

Definition at line 11965 of file rs274ngc_pre.cc.

11967 {
11968   int n;
11969 
11970   for (n SET_TO 0; n < RS274NGC_ACTIVE_M_CODES; n++)
11971     {
11972       codes[n] SET_TO _setup.active_m_codes[n];
11973     }
11974 }

void rs274ngc_active_settings double *    settings
 

Definition at line 11990 of file rs274ngc_pre.cc.

11992 {
11993   int n;
11994 
11995   for (n SET_TO 0; n < RS274NGC_ACTIVE_SETTINGS; n++)
11996     {
11997       settings[n] SET_TO _setup.active_settings[n];
11998     }
11999 }

int rs274ngc_close  
 

Definition at line 11144 of file rs274ngc_pre.cc.

11145 {
11146   if (_setup.file_pointer ISNT NULL)
11147   {
11148     fclose(_setup.file_pointer);
11149     _setup.file_pointer SET_TO NULL;
11150   }
11151   rs274ngc_reset();
11152 
11153   return RS274NGC_OK;
11154 }

const char* rs274ngc_command   [inline, static]
 

Definition at line 437 of file new/rs274ngc.hh.

00437 { static char buf[100]; rs274ngc_line_text(buf,100); return buf;}

void rs274ngc_error_text int    error_code,
char *    error_text,
int    max_size
 

Definition at line 12020 of file rs274ngc_pre.cc.

12024 {
12025   if (((error_code >= RS274NGC_MIN_ERROR) AND
12026        (error_code <= RS274NGC_MAX_ERROR)) AND
12027       (strlen(_rs274ngc_errors[error_code]) < ((size_t) max_size) ))
12028     {
12029       strcpy(error_text, _rs274ngc_errors[error_code]);
12030     }
12031   else
12032     error_text[0] SET_TO 0;
12033 }

int rs274ngc_execute const char *    command = 0
 

Definition at line 11179 of file rs274ngc_pre.cc.

11183 {
11184   static char name[] SET_TO "rs274ngc_execute";
11185   int status;
11186   int n;
11187 
11188 #ifndef NOT_OLD_EMC_INTERP_COMPATIBLE
11189   if(NULL != command)
11190     {
11191       status = rs274ngc_read(command);
11192     }
11193 #endif
11194 
11195   for (n SET_TO 0; n < _setup.parameter_occurrence; n++)
11196     { // copy parameter settings from parameter buffer into parameter table
11197       _setup.parameters[_setup.parameter_numbers[n]]
11198         SET_TO _setup.parameter_values[n];
11199     }
11200   if (_setup.line_length ISNT 0) /* line not blank */
11201     {
11202       status SET_TO execute_block (&(_setup.block1), &_setup);
11203       write_g_codes(&(_setup.block1), &_setup);
11204       write_m_codes(&(_setup.block1), &_setup);
11205       write_settings(&_setup);
11206       if ((status ISNT RS274NGC_OK) AND
11207           (status ISNT RS274NGC_EXECUTE_FINISH) AND
11208           (status ISNT RS274NGC_EXIT))
11209         ERP(status);
11210     }
11211   else /* blank line is OK */
11212     status SET_TO RS274NGC_OK;
11213   return status;
11214 }

int rs274ngc_exit  
 

Definition at line 11233 of file rs274ngc_pre.cc.

11234 {
11235   char file_name[RS274NGC_TEXT_SIZE];
11236 
11237   GET_EXTERNAL_PARAMETER_FILE_NAME(file_name, (RS274NGC_TEXT_SIZE - 1));
11238   rs274ngc_save_parameters
11239     (((file_name[0] IS 0) ? RS274NGC_PARAMETER_FILE_NAME_DEFAULT : file_name),
11240      _setup.parameters);
11241   rs274ngc_reset();
11242 
11243   return RS274NGC_OK;
11244 }

const char* rs274ngc_file   [inline, static]
 

Definition at line 438 of file new/rs274ngc.hh.

00438 { static char buf[100]; rs274ngc_file_name(buf,100); return buf;}

void rs274ngc_file_name char *    file_name,
int    max_size
 

Definition at line 12052 of file rs274ngc_pre.cc.

12053                                   : to copy file name into       */
12054  int max_size)           /* maximum number of characters to copy */
12055 {
12056   if (strlen(_setup.filename) < ((size_t) max_size) )
12057     strcpy(file_name, _setup.filename);
12058   else
12059     file_name[0] SET_TO 0;
12060 }

int rs274ngc_ini_load const char *    filename
 

load settings from INI file.

Definition at line 8791 of file rs274ngc.cc.

Referenced by emcTaskPlanInit(), and main().

08792 {
08793   INIFILE inifile;
08794   const char *inistring;
08795 
08796   // open it
08797   if (-1 == inifile.open(filename))
08798     {
08799       return -1;
08800     }
08801 
08802   if (NULL != (inistring = inifile.find("PARAMETER_FILE", "RS274NGC")))
08803     {
08804       // found it
08805       strcpy(RS274NGC_PARAMETER_FILE, inistring);
08806     }
08807   else
08808     {
08809       // not found, leave RS274NGC_PARAMETER_FILE alone
08810     }
08811 
08812   // close it
08813   inifile.close();
08814 
08815   return RS274NGC_OK;
08816 }

int rs274ngc_init  
 

Definition at line 11273 of file rs274ngc_pre.cc.

11274 {
11275   static char name[] SET_TO "rs274ngc_init";
11276   int k; // starting index in parameters of origin offsets
11277   int status;
11278   char filename[RS274NGC_TEXT_SIZE];
11279   double * pars; // short name for _setup.parameters
11280 
11281   INIT_CANON();
11282   _setup.length_units SET_TO GET_EXTERNAL_LENGTH_UNIT_TYPE();
11283   USE_LENGTH_UNITS(_setup.length_units);
11284   GET_EXTERNAL_PARAMETER_FILE_NAME(filename, RS274NGC_TEXT_SIZE);
11285   if (filename[0] IS 0)
11286     strcpy(filename, RS274NGC_PARAMETER_FILE_NAME_DEFAULT);
11287   CHP(rs274ngc_restore_parameters(filename));
11288   pars SET_TO _setup.parameters;
11289   _setup.origin_index SET_TO (int)(pars[5220] + 0.0001);
11290   CHK(((_setup.origin_index < 1) OR (_setup.origin_index > 9)),
11291       NCE_COORDINATE_SYSTEM_INDEX_PARAMETER_5220_OUT_OF_RANGE);
11292   k SET_TO (5200 + (_setup.origin_index * 20));
11293   SET_ORIGIN_OFFSETS((pars[k + 1] + pars[5211]),
11294                      (pars[k + 2] + pars[5212]),
11295                      (pars[k + 3] + pars[5213])
11296 #ifdef AA
11297 ,                    (pars[k + 4] + pars[5214])
11298 #else
11299 #ifdef ALL_AXES
11300 , 0
11301 #endif
11302 #endif
11303 #ifdef BB
11304 ,                    (pars[k + 5] + pars[5215])
11305 #else
11306 #ifdef ALL_AXES
11307 , 0
11308 #endif
11309 #endif
11310 #ifdef CC
11311 ,                    (pars[k + 6] + pars[5216])
11312 #else
11313 #ifdef ALL_AXES
11314 , 0
11315 #endif
11316 #endif
11317 );
11318   SET_FEED_REFERENCE(CANON_XYZ);
11319 #ifdef AA
11320   _setup.AA_axis_offset SET_TO pars[5214];                 /*AA*/
11321 #endif
11322 //_setup.Aa_current set in rs274ngc_synch
11323 #ifdef AA
11324   _setup.AA_origin_offset SET_TO pars[k + 4];              /*AA*/
11325 #endif
11326 //_setup.active_g_codes initialized below
11327 //_setup.active_m_codes initialized below
11328 //_setup.active_settings initialized below
11329   _setup.axis_offset_x SET_TO pars[5211];
11330   _setup.axis_offset_y SET_TO pars[5212];
11331   _setup.axis_offset_z SET_TO pars[5213];
11332 #ifdef BB
11333   _setup.BB_axis_offset SET_TO pars[5215];                 /*BB*/
11334 #endif
11335 //_setup.Bb_current set in rs274ngc_synch
11336 #ifdef BB
11337   _setup.BB_origin_offset SET_TO pars[k + 5];              /*BB*/
11338 #endif
11339 //_setup.block1 does not need initialization
11340   _setup.blocktext[0] SET_TO 0;
11341 #ifdef CC
11342   _setup.CC_axis_offset SET_TO pars[5216];                 /*CC*/
11343 #endif
11344 //_setup.Cc_current set in rs274ngc_synch
11345 #ifdef CC
11346   _setup.CC_origin_offset SET_TO pars[k + 6];              /*CC*/
11347 #endif
11348 //_setup.current_slot set in rs274ngc_synch
11349 //_setup.current_x set in rs274ngc_synch
11350 //_setup.current_y set in rs274ngc_synch
11351 //_setup.current_z set in rs274ngc_synch
11352   _setup.cutter_comp_side SET_TO OFF;
11353 //_setup.cycle values do not need initialization
11354   _setup.distance_mode SET_TO MODE_ABSOLUTE;
11355   _setup.feed_mode SET_TO UNITS_PER_MINUTE;
11356   _setup.feed_override SET_TO ON;
11357 //_setup.feed_rate set in rs274ngc_synch
11358   _setup.filename[0] SET_TO 0;
11359   _setup.file_pointer SET_TO NULL;
11360 //_setup.flood set in rs274ngc_synch
11361   _setup.length_offset_index SET_TO 1;
11362 //_setup.length_units set in rs274ngc_synch
11363   _setup.line_length SET_TO 0;
11364   _setup.linetext[0] SET_TO 0;
11365 //_setup.mist set in rs274ngc_synch
11366   _setup.motion_mode SET_TO G_80;
11367 //_setup.origin_index set above
11368   _setup.origin_offset_x SET_TO pars[k + 1];
11369   _setup.origin_offset_y SET_TO pars[k + 2];
11370   _setup.origin_offset_z SET_TO pars[k + 3];
11371 //_setup.parameters set above
11372 //_setup.parameter_occurrence does not need initialization
11373 //_setup.parameter_numbers does not need initialization
11374 //_setup.parameter_values does not need initialization
11375 //_setup.percent_flag does not need initialization
11376 //_setup.plane set in rs274ngc_synch
11377   _setup.probe_flag SET_TO OFF;
11378   _setup.program_x SET_TO UNKNOWN; /* for cutter comp */
11379   _setup.program_y SET_TO UNKNOWN; /* for cutter comp */
11380 //_setup.retract_mode does not need initialization
11381 //_setup.selected_tool_slot set in rs274ngc_synch
11382   _setup.sequence_number SET_TO 0; /*DOES THIS NEED TO BE AT TOP? */
11383 //_setup.speed set in rs274ngc_synch
11384   _setup.speed_feed_mode SET_TO CANON_INDEPENDENT;
11385   _setup.speed_override SET_TO ON;
11386 //_setup.spindle_turning set in rs274ngc_synch
11387 //_setup.stack does not need initialization
11388 //_setup.stack_index does not need initialization
11389   _setup.tool_length_offset SET_TO 0.0;
11390 //_setup.tool_max set in rs274ngc_synch
11391 //_setup.tool_table set in rs274ngc_synch
11392   _setup.tool_table_index SET_TO 1;
11393 //_setup.traverse_rate set in rs274ngc_synch
11394 
11395   write_g_codes((block_pointer)NULL, &_setup);
11396   write_m_codes((block_pointer)NULL, &_setup);
11397   write_settings(&_setup);
11398 
11399   // Synch rest of settings to external world
11400   rs274ngc_synch();
11401 
11402   return RS274NGC_OK;
11403 }

int rs274ngc_line   [inline, static]
 

Definition at line 436 of file new/rs274ngc.hh.

00436 {return rs274ngc_sequence_number();}

int rs274ngc_line_length  
 

Definition at line 12074 of file rs274ngc_pre.cc.

Referenced by main().

12075 {
12076   return _setup.line_length;
12077 }

void rs274ngc_line_text char *    line_text,
int    max_size
 

Definition at line 12095 of file rs274ngc_pre.cc.

12096                                   : to copy line into            */
12097  int max_size)           /* maximum number of characters to copy */
12098 {
12099   int n;
12100   char * the_text;
12101 
12102   the_text SET_TO _setup.linetext;
12103   for (n SET_TO 0; n < (max_size - 1); n++)
12104     {
12105       if (the_text[n] ISNT 0)
12106         line_text[n] SET_TO the_text[n];
12107       else
12108         break;
12109     }
12110   line_text[n] SET_TO 0;
12111 }

int rs274ngc_load_tool_table  
 

Definition at line 11429 of file rs274ngc_pre.cc.

11430 {
11431   static char name[] SET_TO "rs274ngc_load_tool_table";
11432   int n;
11433 
11434   CHK((_setup.tool_max > CANON_TOOL_MAX), NCE_TOOL_MAX_TOO_LARGE);
11435   for (n SET_TO 0; n <= _setup.tool_max; n++)
11436     {
11437       _setup.tool_table[n] SET_TO GET_EXTERNAL_TOOL_TABLE(n);
11438     }
11439   for(; n <= CANON_TOOL_MAX; n++)
11440     {
11441       _setup.tool_table[n].id SET_TO 0;
11442       _setup.tool_table[n].length SET_TO 0;
11443       _setup.tool_table[n].diameter SET_TO 0;
11444     }
11445 
11446   return RS274NGC_OK;
11447 }

int rs274ngc_open const char *    filename
 

Definition at line 11495 of file rs274ngc_pre.cc.

11496                                   : the name of the input NC-program file */
11497 {
11498   static char name[] SET_TO "rs274ngc_open";
11499   char * line;
11500   int index;
11501   int length;
11502 
11503   CHK((_setup.file_pointer ISNT NULL), NCE_A_FILE_IS_ALREADY_OPEN);
11504   CHK((strlen(filename) > (RS274NGC_TEXT_SIZE - 1)), NCE_FILE_NAME_TOO_LONG);
11505   _setup.file_pointer SET_TO fopen(filename, "r");
11506   CHK((_setup.file_pointer IS NULL), NCE_UNABLE_TO_OPEN_FILE);
11507   line SET_TO _setup.linetext;
11508   for(index SET_TO -1; index IS -1;) /* skip blank lines */
11509     {
11510       CHK((fgets(line, RS274NGC_TEXT_SIZE, _setup.file_pointer) IS NULL),
11511           NCE_FILE_ENDED_WITH_NO_PERCENT_SIGN);
11512       length SET_TO strlen(line);
11513       if (length IS (RS274NGC_TEXT_SIZE - 1))
11514         { // line is too long. need to finish reading the line to recover
11515           for(;fgetc(_setup.file_pointer) ISNT '\n';); // could look for EOF
11516           ERM(NCE_COMMAND_TOO_LONG);
11517         }
11518       for(index SET_TO (length -1); // index set on last char
11519           (index >= 0) AND (isspace(line[index]));
11520           index--);
11521     }
11522   if(line[index] IS '%')
11523     {
11524       for(index--; (index >= 0) AND (isspace(line[index])); index--);
11525       if (index IS -1)
11526         {
11527           _setup.percent_flag SET_TO ON;
11528           _setup.sequence_number=1; // We have already read the first line
11529           // and we are not going back to it.
11530         }
11531       else
11532         {
11533           fseek(_setup.file_pointer, 0, SEEK_SET);
11534           _setup.percent_flag SET_TO OFF;
11535           _setup.sequence_number=0; // Going back to line 0
11536         }
11537     }
11538   else
11539     {
11540       fseek(_setup.file_pointer, 0, SEEK_SET);
11541       _setup.percent_flag SET_TO OFF;
11542       _setup.sequence_number=0; // Going back to line 0
11543     }
11544   strcpy(_setup.filename, filename);
11545   rs274ngc_reset();
11546   return RS274NGC_OK;
11547 }

int rs274ngc_read const char *    command = 0
 

Definition at line 11580 of file rs274ngc_pre.cc.

11582 {
11583   static char name[] SET_TO "rs274ngc_read";
11584   int status;
11585   int read_status;
11586 
11587   if (_setup.probe_flag IS ON)
11588     {
11589       CHK((GET_EXTERNAL_QUEUE_EMPTY() IS 0),
11590           NCE_QUEUE_IS_NOT_EMPTY_AFTER_PROBING);
11591       set_probe_data(&_setup);
11592       _setup.probe_flag SET_TO OFF;
11593     }
11594   CHK(((command IS NULL) AND (_setup.file_pointer IS NULL)),
11595       NCE_FILE_NOT_OPEN);
11596   read_status SET_TO read_text(command, _setup.file_pointer, _setup.linetext,
11597                                _setup.blocktext, &_setup.line_length);
11598   if ((read_status IS RS274NGC_EXECUTE_FINISH) OR
11599       (read_status IS RS274NGC_OK))
11600     {
11601       if (_setup.line_length ISNT 0)
11602         {
11603           CHP(parse_line(_setup.blocktext, &(_setup.block1), &_setup));
11604         }
11605     }
11606   else if (read_status IS RS274NGC_ENDFILE);
11607   else
11608     ERP(read_status);
11609   return read_status;
11610 }

int rs274ngc_reset  
 

Definition at line 11643 of file rs274ngc_pre.cc.

11644 {
11645   _setup.linetext[0] SET_TO 0;
11646   _setup.blocktext[0] SET_TO 0;
11647   _setup.line_length SET_TO 0;
11648 
11649   return RS274NGC_OK;
11650 }

int rs274ngc_restore_parameters const char *    filename
 

Definition at line 11689 of file rs274ngc_pre.cc.

11691 {
11692   static char name[] SET_TO "rs274ngc_restore_parameters";
11693   FILE * infile;
11694   char line[256];
11695   int variable;
11696   double value;
11697   int required;    // number of next required parameter
11698   int index;       // index into _required_parameters
11699   double * pars;      // short name for _setup.parameters
11700   int k;
11701 
11702   // open original for reading
11703   infile SET_TO fopen(filename, "r");
11704   CHK((infile IS NULL), NCE_UNABLE_TO_OPEN_FILE);
11705 
11706   pars SET_TO _setup.parameters;
11707   k SET_TO 0;
11708   index SET_TO 0;
11709   required SET_TO _required_parameters[index++];
11710   while (feof(infile) IS 0)
11711     {
11712       if (fgets(line, 256, infile) IS NULL)
11713         {
11714           break;
11715         }
11716 
11717       // try for a variable-value match in the file
11718       if (sscanf(line, "%d %lf", &variable, &value) IS 2)
11719         {
11720           CHK(((variable <= 0) OR (variable >= RS274NGC_MAX_PARAMETERS)),
11721               NCE_PARAMETER_NUMBER_OUT_OF_RANGE);
11722           for (; k < RS274NGC_MAX_PARAMETERS; k++)
11723             {
11724               if (k > variable)
11725                 ERM(NCE_PARAMETER_FILE_OUT_OF_ORDER);
11726               else if (k IS variable)
11727                 {
11728                   pars[k] SET_TO value;
11729                   if (k IS required)
11730                     required SET_TO _required_parameters[index++];
11731                   k++;
11732                   break;
11733                 }
11734               else // if (k < variable)
11735                 {
11736                   if (k IS required)
11737                     ERM(NCE_REQUIRED_PARAMETER_MISSING);
11738                   else
11739                     pars[k] SET_TO 0;
11740                 }
11741             }
11742         }
11743     }
11744   fclose(infile);
11745   CHK((required ISNT RS274NGC_MAX_PARAMETERS), NCE_REQUIRED_PARAMETER_MISSING);
11746   for (; k < RS274NGC_MAX_PARAMETERS; k++)
11747     {
11748       pars[k] SET_TO 0;
11749     }
11750   return RS274NGC_OK;
11751 }

int rs274ngc_save_parameters const char *    filename,
const double    parameters[]
 

Definition at line 11787 of file rs274ngc_pre.cc.

11790 {
11791   static char name[] SET_TO "rs274ngc_save_parameters";
11792   FILE * infile;
11793   FILE * outfile;
11794   char line[256];
11795   int variable;
11796   double value;
11797   int required;    // number of next required parameter
11798   int index;       // index into _required_parameters
11799   int k;
11800 
11801   // rename as .bak
11802   strcpy(line, filename);
11803   strcat(line, RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX);
11804   CHK((rename(filename, line) ISNT 0), NCE_CANNOT_CREATE_BACKUP_FILE);
11805 
11806   // open backup for reading
11807   infile SET_TO fopen(line, "r");
11808   CHK((infile IS NULL), NCE_CANNOT_OPEN_BACKUP_FILE);
11809 
11810   // open original for writing
11811   outfile SET_TO fopen(filename, "w");
11812   CHK((outfile IS NULL), NCE_CANNOT_OPEN_VARIABLE_FILE);
11813 
11814   k SET_TO 0;
11815   index SET_TO 0;
11816   required SET_TO _required_parameters[index++];
11817   while (feof(infile) IS 0)
11818     {
11819       if (fgets(line, 256, infile) IS NULL)
11820         {
11821           break;
11822         }
11823       // try for a variable-value match
11824       if (sscanf(line, "%d %lf", &variable, &value) IS 2)
11825         {
11826           CHK(((variable <= 0) OR (variable >= RS274NGC_MAX_PARAMETERS)),
11827               NCE_PARAMETER_NUMBER_OUT_OF_RANGE);
11828           for (; k < RS274NGC_MAX_PARAMETERS; k++)
11829             {
11830               if (k > variable)
11831                 ERM(NCE_PARAMETER_FILE_OUT_OF_ORDER);
11832               else if (k IS variable)
11833                 {
11834                   sprintf(line, "%d\t%f\n", k, parameters[k]);
11835                   fputs(line, outfile);
11836                   if (k IS required)
11837                     required SET_TO _required_parameters[index++];
11838                   k++;
11839                   break;
11840                 }
11841               else if (k IS required) // know (k < variable)
11842                 {
11843                   sprintf(line, "%d\t%f\n", k, parameters[k]);
11844                   fputs(line, outfile);
11845                   required SET_TO _required_parameters[index++];
11846                 }
11847             }
11848         }
11849     }
11850   fclose(infile);
11851   for (; k < RS274NGC_MAX_PARAMETERS; k++)
11852     {
11853       if (k IS required)
11854         {
11855           sprintf(line, "%d\t%f\n", k, parameters[k]);
11856           fputs(line, outfile);
11857           required SET_TO _required_parameters[index++];
11858         }
11859     }
11860   fclose(outfile);
11861 
11862   return RS274NGC_OK;
11863 }

int rs274ngc_sequence_number  
 

Definition at line 12127 of file rs274ngc_pre.cc.

Referenced by main(), and rs274ngc_line().

12128 {
12129   return _setup.sequence_number;
12130 }

void rs274ngc_stack_name int    stack_index,
char *    function_name,
int    max_size
 

Definition at line 12156 of file rs274ngc_pre.cc.

12158                                    : to copy function name into   */
12159  int max_size)            /* maximum number of characters to copy */
12160 {
12161   int n;
12162   char * the_name;
12163 
12164   if ((stack_index > -1) AND (stack_index < 20))
12165     {
12166       the_name SET_TO _setup.stack[stack_index];
12167       for (n SET_TO 0; n < (max_size - 1); n++)
12168         {
12169           if (the_name[n] ISNT 0)
12170             function_name[n] SET_TO the_name[n];
12171           else
12172             break;
12173         }
12174       function_name[n] SET_TO 0;
12175     }
12176   else
12177     function_name[0] SET_TO 0;
12178 }

int rs274ngc_synch  
 

Definition at line 11884 of file rs274ngc_pre.cc.

11885 {
11886   _setup.control_mode SET_TO GET_EXTERNAL_MOTION_CONTROL_MODE();
11887 #ifdef AA
11888   _setup.AA_current SET_TO GET_EXTERNAL_POSITION_A(); /*AA*/
11889 #endif
11890 #ifdef BB
11891   _setup.BB_current SET_TO GET_EXTERNAL_POSITION_B(); /*BB*/
11892 #endif
11893 #ifdef CC
11894   _setup.CC_current SET_TO GET_EXTERNAL_POSITION_C(); /*CC*/
11895 #endif
11896   _setup.current_slot SET_TO GET_EXTERNAL_TOOL_SLOT();
11897   _setup.current_x SET_TO GET_EXTERNAL_POSITION_X();
11898   _setup.current_y SET_TO GET_EXTERNAL_POSITION_Y();
11899   _setup.current_z SET_TO GET_EXTERNAL_POSITION_Z();
11900   _setup.feed_rate SET_TO GET_EXTERNAL_FEED_RATE();
11901   _setup.flood SET_TO (GET_EXTERNAL_FLOOD() ISNT 0) ? ON : OFF;
11902   _setup.length_units SET_TO GET_EXTERNAL_LENGTH_UNIT_TYPE();
11903   _setup.mist SET_TO (GET_EXTERNAL_MIST() ISNT 0) ? ON : OFF;
11904   _setup.plane SET_TO GET_EXTERNAL_PLANE();
11905   _setup.selected_tool_slot SET_TO GET_EXTERNAL_TOOL_SLOT();
11906   _setup.speed SET_TO GET_EXTERNAL_SPEED();
11907   _setup.spindle_turning SET_TO GET_EXTERNAL_SPINDLE();
11908   _setup.tool_max SET_TO GET_EXTERNAL_TOOL_MAX();
11909   _setup.traverse_rate SET_TO GET_EXTERNAL_TRAVERSE_RATE();
11910 
11911   rs274ngc_load_tool_table(); /*  must set  _setup.tool_max first */
11912 
11913   return RS274NGC_OK;
11914 }


Generated on Sun Dec 2 15:28:18 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001