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

rs274ngc.hh File Reference

#include "canon.hh"

Include dependency graph for 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 INTERP_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 MAX_GEES   4
#define MAX_EMS   4
#define MAX_ACTIVES   100
#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 RS274NGC_OK   0
#define RS274NGC_ERROR   -1
#define RS274NGC_EXIT   1
#define RS274NGC_ENDFILE   2
#define RS274NGC_EXECUTE_FINISH   3
#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_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_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_2   922
#define G_93   930
#define G_94   940
#define G_98   980
#define G_99   990
#define ERROR_MACRO(text, function_name, message)
#define ERR_MACRO(text, function_name, message)
#define ERROR_MACRO_PASS(function_name)   return RS274NGC_ERROR
#define ERR_MACRO_PASS(function_name)
#define BUG_MACRO(function_name, message)
#define RS274NGC_MAX_PARAMETERS   5400
#define RS274NGC_COMMENT_LEN   256
#define DEFAULT_RS274NGC_PARAMETER_FILE   "rs274ngc.var"
 name of parameter file for saving/restoring interpreter variables. More...

#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX   ".bak"
#define RS274NGC_ACTIVE_G_CODES   12
 copy active G codes into array [0]..[11]. More...

#define RS274NGC_ACTIVE_M_CODES   7
 copy active M codes into array [0]..[6]. More...

#define RS274NGC_ACTIVE_SETTINGS   3
 copy active F, S settings into array [0]..[2]. More...


Typedefs

typedef int ON_OFF
typedef setup_struct setup
typedef setupsetup_pointer
 global in rs274ngc.cc for all settings. More...

typedef block_struct block
typedef blockblock_pointer

Enumerations

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

Functions

int rs274ngc_init ()
int rs274ngc_open (const char *filename)
int rs274ngc_close ()
int rs274ngc_read ()
int rs274ngc_execute (const char *mdi=0)
int rs274ngc_reset ()
int rs274ngc_synch ()
int rs274ngc_exit ()
const char * rs274ngc_file ()
int rs274ngc_line ()
const char * rs274ngc_command ()
int rs274ngc_load_tool_table ()
int rs274ngc_restore_parameters (const char *filename, double parameters[])
 restore interpreter variables from file. More...

int rs274ngc_save_parameters (const char *filename, const double parameters[])
 save interpreter variables to file. More...

int rs274ngc_ini_load (const char *filename)
 load settings from INI file. More...

int rs274ngc_active_g_codes (int *codes)
int rs274ngc_active_m_codes (int *codes)
int rs274ngc_active_settings (double *settings)

Variables

setup _interpreter_settings
char RS274NGC_PARAMETER_FILE [INTERP_TEXT_SIZE]


Define Documentation

#define ABS   1
 

These are not enums because the "&" operator is used in reading the operation names and is illegal with an enum

Definition at line 103 of file rs274ngc.hh.

#define ACOS   2
 

Definition at line 104 of file rs274ngc.hh.

#define AND   &&
 

COMPILER MACROS

Definition at line 33 of file rs274ngc.hh.

Referenced by adjust_error_handling(), check_other_codes(), close_and_down(), close_and_downcase(), convert_arc_comp1(), convert_arc_comp2(), convert_straight_comp2(), execute_binary1(), interpret_from_file(), interpret_from_keyboard(), print_nc_line_number(), read_text(), and rs274ngc_read().

#define AND2   5
 

Definition at line 124 of file rs274ngc.hh.

#define ASIN   3
 

Definition at line 105 of file rs274ngc.hh.

#define ATAN   4
 

Definition at line 106 of file rs274ngc.hh.

#define BUG_MACRO function_name,
message   
 

Value:

if (1) \
{ \
  CANON_ERROR("%s: bug %d: %s", \
              function_name, \
              utility_error_number(message, interp_errors, 200), \
              message); \
  return RS274NGC_ERROR; \
} else

Definition at line 272 of file rs274ngc.hh.

Referenced by convert_coordinate_system(), execute_binary1(), execute_binary2(), and execute_unary().

#define COS   5
 

Definition at line 107 of file rs274ngc.hh.

#define DEFAULT_RS274NGC_PARAMETER_FILE   "rs274ngc.var"
 

name of parameter file for saving/restoring interpreter variables.

Definition at line 415 of file rs274ngc.hh.

#define DIVIDED_BY   1
 

Definition at line 120 of file rs274ngc.hh.

#define ERROR_MACRO text,
function_name,
message   
 

Value:

if (1) {     \
  CANON_ERROR("%s\n%s: error %d: %s",                      \
              text,                                            \
              function_name,                                   \
              utility_error_number(message, interp_errors, 0), \
              message);                                        \
  return RS274NGC_ERROR;                                       \
} else
To be sure errors are handled consistently and to shorten the source code, macros are used for dealing with errors. The error macros print the name of the function returning the error and a message about the error (if one is needed) with a newline. Then ERROR is returned. The weird if-else syntax is used so that is appropriate to use a semicolon at the end of the line of source code on which the error macro is used.

If error handling is changed somewhat, only the macros will need changing.

There are two types of error handling macro, one for handling errors in the input code (named ERROR_MACRO) and one (named BUG_MACRO) for handling situations that should never occur regardless of the input code, and will only occur if there is a bug in the program.

Definition at line 213 of file rs274ngc.hh.

Referenced by check_other_codes(), close_and_downcase(), convert_cycle(), execute_binary1(), execute_unary(), and read_one_item().

#define ERROR_MACRO_PASS function_name       return RS274NGC_ERROR
 

Definition at line 252 of file rs274ngc.hh.

Referenced by convert_cutter_compensation(), convert_g(), convert_modal_0(), convert_motion(), and execute_block().

#define ERR_MACRO text,
function_name,
message   
 

Value:

if (1) {       \
  if (_interpreter_fp ISNT NULL)                               \
    {fclose(_interpreter_fp); _interpreter_fp SET_TO NULL;}    \
  CANON_ERROR("%s\n%s: error %d: %s",                      \
              text,                                            \
              function_name,                                   \
              utility_error_number(message, interp_errors, 0), \
              message);                                        \
  return RS274NGC_ERROR;                                       \
} else

Definition at line 239 of file rs274ngc.hh.

Referenced by rs274ngc_execute(), rs274ngc_read(), rs274ngc_restore_parameters(), and rs274ngc_save_parameters().

#define ERR_MACRO_PASS function_name   
 

Value:

if (1) {               \
  if (_interpreter_fp ISNT NULL)                             \
    {fclose(_interpreter_fp); _interpreter_fp SET_TO NULL;}  \
  return RS274NGC_ERROR;                                     \
} else

Definition at line 254 of file rs274ngc.hh.

Referenced by rs274ngc_read().

#define EXCLUSIVE_OR   6
 

Definition at line 125 of file rs274ngc.hh.

#define EXP   6
 

Definition at line 108 of file rs274ngc.hh.

#define FALSE   0
 

Definition at line 46 of file rs274ngc.hh.

#define FIX   7
 

Definition at line 109 of file rs274ngc.hh.

#define FUP   8
 

Definition at line 110 of file rs274ngc.hh.

#define G_0   0
 

G Codes are symbolic to be dialect-independent in source code

Definition at line 132 of file rs274ngc.hh.

#define G_1   10
 

Definition at line 133 of file rs274ngc.hh.

#define G_10   100
 

Definition at line 137 of file rs274ngc.hh.

#define G_17   170
 

Definition at line 138 of file rs274ngc.hh.

#define G_18   180
 

Definition at line 139 of file rs274ngc.hh.

#define G_19   190
 

Definition at line 140 of file rs274ngc.hh.

#define G_2   20
 

Definition at line 134 of file rs274ngc.hh.

#define G_20   200
 

Definition at line 141 of file rs274ngc.hh.

#define G_21   210
 

Definition at line 142 of file rs274ngc.hh.

#define G_3   30
 

Definition at line 135 of file rs274ngc.hh.

#define G_38_2   382
 

Definition at line 143 of file rs274ngc.hh.

#define G_4   40
 

Definition at line 136 of file rs274ngc.hh.

#define G_40   400
 

Definition at line 144 of file rs274ngc.hh.

#define G_41   410
 

Definition at line 145 of file rs274ngc.hh.

#define G_42   420
 

Definition at line 146 of file rs274ngc.hh.

#define G_43   430
 

Definition at line 147 of file rs274ngc.hh.

#define G_49   490
 

Definition at line 148 of file rs274ngc.hh.

#define G_53   530
 

Definition at line 149 of file rs274ngc.hh.

#define G_54   540
 

Definition at line 150 of file rs274ngc.hh.

#define G_55   550
 

Definition at line 151 of file rs274ngc.hh.

#define G_56   560
 

Definition at line 152 of file rs274ngc.hh.

#define G_57   570
 

Definition at line 153 of file rs274ngc.hh.

#define G_58   580
 

Definition at line 154 of file rs274ngc.hh.

#define G_59   590
 

Definition at line 155 of file rs274ngc.hh.

#define G_59_1   591
 

Definition at line 156 of file rs274ngc.hh.

#define G_59_2   592
 

Definition at line 157 of file rs274ngc.hh.

#define G_59_3   593
 

Definition at line 158 of file rs274ngc.hh.

#define G_61   610
 

Definition at line 159 of file rs274ngc.hh.

#define G_64   640
 

Definition at line 160 of file rs274ngc.hh.

#define G_80   800
 

Definition at line 161 of file rs274ngc.hh.

#define G_81   810
 

Definition at line 162 of file rs274ngc.hh.

#define G_82   820
 

Definition at line 163 of file rs274ngc.hh.

#define G_83   830
 

Definition at line 164 of file rs274ngc.hh.

#define G_84   840
 

Definition at line 165 of file rs274ngc.hh.

#define G_85   850
 

Definition at line 166 of file rs274ngc.hh.

#define G_86   860
 

Definition at line 167 of file rs274ngc.hh.

#define G_87   870
 

Definition at line 168 of file rs274ngc.hh.

#define G_88   880
 

Definition at line 169 of file rs274ngc.hh.

#define G_89   890
 

Definition at line 170 of file rs274ngc.hh.

#define G_90   900
 

Definition at line 171 of file rs274ngc.hh.

#define G_91   910
 

Definition at line 172 of file rs274ngc.hh.

#define G_92   920
 

Definition at line 173 of file rs274ngc.hh.

#define G_92_2   922
 

Definition at line 174 of file rs274ngc.hh.

#define G_93   930
 

Definition at line 175 of file rs274ngc.hh.

#define G_94   940
 

Definition at line 176 of file rs274ngc.hh.

#define G_98   980
 

Definition at line 177 of file rs274ngc.hh.

#define G_99   990
 

Definition at line 178 of file rs274ngc.hh.

#define INCH_PER_MM   0.039370078740157477
 

Definition at line 74 of file rs274ngc.hh.

#define INTERP_TEXT_SIZE   256
 

Definition at line 49 of file rs274ngc.hh.

#define INVERSE_TIME   1
 

Definition at line 82 of file rs274ngc.hh.

#define IS   ==
 

Definition at line 34 of file rs274ngc.hh.

#define ISNT   !=
 

Definition at line 35 of file rs274ngc.hh.

#define LN   9
 

Definition at line 111 of file rs274ngc.hh.

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

Definition at line 36 of file rs274ngc.hh.

#define MAX_ACTIVES   100
 

Definition at line 70 of file rs274ngc.hh.

#define MAX_EMS   4
 

Definition at line 69 of file rs274ngc.hh.

#define MAX_GEES   4
 

Definition at line 68 of file rs274ngc.hh.

#define MINUS   7
 

Definition at line 126 of file rs274ngc.hh.

#define MM_PER_INCH   25.4
 

English - Metric conversion (long number keeps error buildup down)

Definition at line 73 of file rs274ngc.hh.

#define MODULO   2
 

Definition at line 121 of file rs274ngc.hh.

#define NON_EXCLUSIVE_OR   8
 

Definition at line 127 of file rs274ngc.hh.

#define NOT   !
 

Definition at line 37 of file rs274ngc.hh.

#define NO_OPERATION   0
 

binary operations

Definition at line 119 of file rs274ngc.hh.

#define OFF   0
 

on-off switch settings

Definition at line 77 of file rs274ngc.hh.

#define ON   1
 

Definition at line 78 of file rs274ngc.hh.

#define OR   ||
 

Definition at line 38 of file rs274ngc.hh.

Referenced by close_and_down(), close_and_downcase(), execute_unary(), find_straight_length(), main(), and print_nc_line_number().

#define PI   3.1415926535897932
 

Definition at line 61 of file rs274ngc.hh.

#define PI2   1.5707963267948966
 

Definition at line 65 of file rs274ngc.hh.

#define PLUS   9
 

Definition at line 128 of file rs274ngc.hh.

#define POWER   3
 

Definition at line 122 of file rs274ngc.hh.

#define RIGHT_BRACKET   10
 

Definition at line 129 of file rs274ngc.hh.

#define ROUND   10
 

Definition at line 112 of file rs274ngc.hh.

#define RS274NGC_ACTIVE_G_CODES   12
 

copy active G codes into array [0]..[11].

Definition at line 429 of file rs274ngc.hh.

#define RS274NGC_ACTIVE_M_CODES   7
 

copy active M codes into array [0]..[6].

Definition at line 433 of file rs274ngc.hh.

#define RS274NGC_ACTIVE_SETTINGS   3
 

copy active F, S settings into array [0]..[2].

Definition at line 437 of file rs274ngc.hh.

#define RS274NGC_COMMENT_LEN   256
 

Definition at line 362 of file rs274ngc.hh.

#define RS274NGC_ENDFILE   2
 

Definition at line 89 of file rs274ngc.hh.

#define RS274NGC_ERROR   -1
 

Definition at line 87 of file rs274ngc.hh.

#define RS274NGC_EXECUTE_FINISH   3
 

Definition at line 90 of file rs274ngc.hh.

#define RS274NGC_EXIT   1
 

Definition at line 88 of file rs274ngc.hh.

#define RS274NGC_MAX_PARAMETERS   5400
 

Definition at line 307 of file rs274ngc.hh.

#define RS274NGC_OK   0
 

error and exit status

Definition at line 86 of file rs274ngc.hh.

#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX   ".bak"
 

Definition at line 417 of file rs274ngc.hh.

int _interpreter_length SET_TO   =
 

Definition at line 39 of file rs274ngc.hh.

Referenced by START_SPINDLE_CLOCKWISE(), START_SPINDLE_COUNTERCLOCKWISE(), STRAIGHT_PROBE(), USE_LENGTH_UNITS(), adjust_error_handling(), close_and_down(), close_and_downcase(), convert_arc_comp1(), convert_arc_comp2(), convert_straight_comp1(), convert_straight_comp2(), convert_tool_length_offset(), execute_binary1(), execute_binary2(), execute_unary(), find_ends(), main(), read_real_number(), read_text(), and rs274ngc_synch().

#define SIN   11
 

Definition at line 113 of file rs274ngc.hh.

#define SQRT   12
 

Definition at line 114 of file rs274ngc.hh.

#define TAN   13
 

Definition at line 115 of file rs274ngc.hh.

#define TIMES   4
 

Definition at line 123 of file rs274ngc.hh.

#define TINY   1e-12
 

Definition at line 56 of file rs274ngc.hh.

#define TOLERANCE_CONCAVE_CORNER   0.01
 

Definition at line 54 of file rs274ngc.hh.

#define TOLERANCE_INCH   0.0002
 

numerical constants

Definition at line 52 of file rs274ngc.hh.

#define TOLERANCE_MM   0.002
 

Definition at line 53 of file rs274ngc.hh.

#define TRUE   1
 

Definition at line 42 of file rs274ngc.hh.

#define TWO_PI   6.2831853071795864
 

Definition at line 58 of file rs274ngc.hh.

#define UNITS_PER_MINUTE   0
 

feed_mode

Definition at line 81 of file rs274ngc.hh.

#define UNKNOWN   1e-20
 

Definition at line 57 of file rs274ngc.hh.


Typedef Documentation

typedef int ON_OFF
 

The current_x, current_y, and current_z are the location of the tool in the current coordinate system. current_x and current_y differ from program_x and program_y when cutter radius compensation is on. current_z is the position of the tool tip in program coordinates when tool length compensation is on; it is the position of the spindle when tool length compensation is off.

Definition at line 305 of file rs274ngc.hh.

typedef struct block_struct block
 

typedef block* block_pointer
 

Definition at line 395 of file rs274ngc.hh.

typedef struct setup_struct setup
 

typedef setup* setup_pointer
 

global in rs274ngc.cc for all settings.

Definition at line 360 of file rs274ngc.hh.


Enumeration Type Documentation

enum DISTANCE_MODE
 

distance_mode

Enumeration values:
MODE_ABSOLUTE 
MODE_INCREMENTAL 

Definition at line 289 of file rs274ngc.hh.

00289 {MODE_ABSOLUTE, MODE_INCREMENTAL} DISTANCE_MODE;

enum RETRACT_MODE
 

retract_mode for cycles

Enumeration values:
R_PLANE 
OLD_Z 

Definition at line 292 of file rs274ngc.hh.

00292 {R_PLANE, OLD_Z} RETRACT_MODE;


Function Documentation

int 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 }

int 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 }

int 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  
 

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

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

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  
 

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

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

int rs274ngc_ini_load const char *    filename
 

load settings from INI file.

int rs274ngc_init  
 

calling interface

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  
 

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

00436 {return rs274ngc_sequence_number();}

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  
 

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,
double    parameters[]
 

restore interpreter variables from file.

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

save interpreter variables to file.

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_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 }


Variable Documentation

char RS274NGC_PARAMETER_FILE[INTERP_TEXT_SIZE]
 

Definition at line 416 of file rs274ngc.hh.

setup _interpreter_settings
 

Definition at line 358 of file rs274ngc.hh.


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