Add CNC-like G-code options
This commit is contained in:
committed by
Scott Lahteine
parent
33056046a3
commit
e09c144674
@ -283,6 +283,9 @@ static int read_serial(const int index) {
|
||||
inline void get_serial_commands() {
|
||||
static char serial_line_buffer[NUM_SERIAL][MAX_CMD_SIZE];
|
||||
static bool serial_comment_mode[NUM_SERIAL] = { false };
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
static bool serial_comment_paranthese_mode[NUM_SERIAL] = { false };
|
||||
#endif
|
||||
|
||||
// If the command buffer is empty for too long,
|
||||
// send "wait" to indicate Marlin is still waiting.
|
||||
@ -311,6 +314,9 @@ inline void get_serial_commands() {
|
||||
if (serial_char == '\n' || serial_char == '\r') {
|
||||
|
||||
serial_comment_mode[i] = false; // end of line == end of comment
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
serial_comment_paranthese_mode[i] = false; // end of line == end of comment
|
||||
#endif
|
||||
|
||||
// Skip empty lines and comments
|
||||
if (!serial_count[i]) { thermalManager.manage_heater(); continue; }
|
||||
@ -404,12 +410,24 @@ inline void get_serial_commands() {
|
||||
}
|
||||
else if (serial_char == '\\') { // Handle escapes
|
||||
// if we have one more character, copy it over
|
||||
if ((c = read_serial(i)) >= 0 && !serial_comment_mode[i])
|
||||
if ((c = read_serial(i)) >= 0 && !serial_comment_mode[i]
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
&& ! serial_comment_paranthese_mode[i]
|
||||
#endif
|
||||
)
|
||||
serial_line_buffer[i][serial_count[i]++] = (char)c;
|
||||
}
|
||||
else { // it's not a newline, carriage return or escape char
|
||||
if (serial_char == ';') serial_comment_mode[i] = true;
|
||||
if (!serial_comment_mode[i]) serial_line_buffer[i][serial_count[i]++] = serial_char;
|
||||
if (serial_char == ';') serial_comment_mode[i] = true;
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
else if (serial_char == '(') serial_comment_paranthese_mode[i] = true;
|
||||
else if (serial_char == ')') serial_comment_paranthese_mode[i] = false;
|
||||
#endif
|
||||
else if (!serial_comment_mode[i]
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
&& ! serial_comment_paranthese_mode[i]
|
||||
#endif
|
||||
) serial_line_buffer[i][serial_count[i]++] = serial_char;
|
||||
}
|
||||
} // for NUM_SERIAL
|
||||
} // queue has space, serial has data
|
||||
@ -426,6 +444,9 @@ inline void get_serial_commands() {
|
||||
static bool stop_buffering = false,
|
||||
sd_comment_mode = false;
|
||||
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
static bool sd_comment_parenthese_mode = false;
|
||||
#endif
|
||||
if (!IS_SD_PRINTING) return;
|
||||
|
||||
/**
|
||||
@ -445,7 +466,11 @@ inline void get_serial_commands() {
|
||||
card_eof = card.eof();
|
||||
if (card_eof || n == -1
|
||||
|| sd_char == '\n' || sd_char == '\r'
|
||||
|| ((sd_char == '#' || sd_char == ':') && !sd_comment_mode)
|
||||
|| ((sd_char == '#' || sd_char == ':') && !sd_comment_mode
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
&& ! sd_comment_parenthese_mode
|
||||
#endif
|
||||
)
|
||||
) {
|
||||
if (card_eof) {
|
||||
|
||||
@ -481,6 +506,9 @@ inline void get_serial_commands() {
|
||||
if (sd_char == '#') stop_buffering = true;
|
||||
|
||||
sd_comment_mode = false; // for new command
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
sd_comment_parenthese_mode = false;
|
||||
#endif
|
||||
|
||||
// Skip empty lines and comments
|
||||
if (!sd_count) { thermalManager.manage_heater(); continue; }
|
||||
@ -497,8 +525,17 @@ inline void get_serial_commands() {
|
||||
*/
|
||||
}
|
||||
else {
|
||||
if (sd_char == ';') sd_comment_mode = true;
|
||||
if (!sd_comment_mode) command_queue[cmd_queue_index_w][sd_count++] = sd_char;
|
||||
if (sd_char == ';') sd_comment_mode = true;
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
else if (sd_char == '(') sd_comment_parenthese_mode = true;
|
||||
else if (sd_char == ')') sd_comment_parenthese_mode = false;
|
||||
#endif
|
||||
else if (!sd_comment_mode
|
||||
#if ENABLED(PARENTHESE_COMMENTS)
|
||||
&& ! sd_comment_parenthese_mode
|
||||
#endif
|
||||
)
|
||||
command_queue[cmd_queue_index_w][sd_count++] = sd_char;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user