initial version of M110 fix (port from MK2)
This commit is contained in:
parent
bf6fbdd44d
commit
e8477b525c
2 changed files with 58 additions and 54 deletions
|
@ -4700,6 +4700,10 @@ Sigma_Exit:
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 110: // M110 - reset line pos
|
||||
if (code_seen('N'))
|
||||
gcode_LastN = code_value_long();
|
||||
break;
|
||||
#ifdef HOST_KEEPALIVE_FEATURE
|
||||
case 113: // M113 - Get or set Host Keepalive interval
|
||||
if (code_seen('S')) {
|
||||
|
|
|
@ -391,7 +391,6 @@ void get_command()
|
|||
continue;
|
||||
if(serial_char == '\n' ||
|
||||
serial_char == '\r' ||
|
||||
(serial_char == ':' && comment_mode == false) ||
|
||||
serial_count >= (MAX_CMD_SIZE - 1) )
|
||||
{
|
||||
if(!serial_count) { //if empty line
|
||||
|
@ -400,13 +399,14 @@ void get_command()
|
|||
}
|
||||
cmdbuffer[bufindw+serial_count+CMDHDRSIZE] = 0; //terminate string
|
||||
if(!comment_mode){
|
||||
comment_mode = false; //for new command
|
||||
if ((strchr_pointer = strstr(cmdbuffer+bufindw+CMDHDRSIZE, "PRUSA")) == NULL && (strchr_pointer = strchr(cmdbuffer+bufindw+CMDHDRSIZE, 'N')) != NULL) {
|
||||
if ((strchr_pointer = strchr(cmdbuffer+bufindw+CMDHDRSIZE, 'N')) != NULL)
|
||||
{
|
||||
// Line numbers must be first in buffer
|
||||
|
||||
if ((strstr(cmdbuffer+bufindw+CMDHDRSIZE, "PRUSA") == NULL) &&
|
||||
(cmdbuffer[bufindw+CMDHDRSIZE] == 'N')) {
|
||||
|
||||
// Line number met. When sending a G-code over a serial line, each line may be stamped with its index,
|
||||
// and Marlin tests, whether the successive lines are stamped with an increasing line number ID.
|
||||
gcode_N = (strtol(strchr_pointer+1, NULL, 10));
|
||||
// and Marlin tests, whether the successive lines are stamped with an increasing line number ID
|
||||
gcode_N = (strtol(cmdbuffer+bufindw+CMDHDRSIZE+1, NULL, 10));
|
||||
if(gcode_N != gcode_LastN+1 && (strstr_P(cmdbuffer+bufindw+CMDHDRSIZE, PSTR("M110")) == NULL) ) {
|
||||
// M110 - set current line number.
|
||||
// Line numbers not sent in succession.
|
||||
|
@ -446,21 +446,21 @@ void get_command()
|
|||
return;
|
||||
}
|
||||
|
||||
gcode_LastN = gcode_N;
|
||||
// Don't parse N again with code_seen('N')
|
||||
cmdbuffer[bufindw + CMDHDRSIZE] = '$';
|
||||
//if no errors, continue parsing
|
||||
} // end of 'N' command
|
||||
gcode_LastN = gcode_N;
|
||||
}
|
||||
else // if we don't receive 'N' but still see '*'
|
||||
{
|
||||
if((strchr(cmdbuffer+bufindw+CMDHDRSIZE, '*') != NULL))
|
||||
// if we don't receive 'N' but still see '*'
|
||||
if ((cmdbuffer[bufindw + CMDHDRSIZE] != 'N') && (cmdbuffer[bufindw + CMDHDRSIZE] != '$') && (strchr(cmdbuffer+bufindw+CMDHDRSIZE, '*') != NULL))
|
||||
{
|
||||
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORRPGM(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM);
|
||||
SERIAL_ERRORLN(gcode_LastN);
|
||||
serial_count = 0;
|
||||
return;
|
||||
}
|
||||
} // end of '*' command
|
||||
if ((strchr_pointer = strchr(cmdbuffer+bufindw+CMDHDRSIZE, 'G')) != NULL) {
|
||||
if (! IS_SD_PRINTING) {
|
||||
usb_printing_counter = 10;
|
||||
|
|
Loading…
Reference in a new issue