diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b439d7b58..ceaafbac5 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -2938,20 +2938,33 @@ void process_commands() // We don't know where we are! HOME! // Push the commands to the front of the message queue in the reverse order! // There shall be always enough space reserved for these commands. - repeatcommand_front(); // repeat G80 with all its parameters - enquecommand_front_P((PSTR("G28 W0"))); + if (lcd_commands_type != LCD_COMMAND_STOP_PRINT) { + repeatcommand_front(); // repeat G80 with all its parameters + enquecommand_front_P((PSTR("G28 W0"))); + } + else { + mesh_bed_leveling_flag = false; + } break; } if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) { - temp_compensation_start(); - run = true; - repeatcommand_front(); // repeat G80 with all its parameters - enquecommand_front_P((PSTR("G28 W0"))); + if (lcd_commands_type != LCD_COMMAND_STOP_PRINT) { + temp_compensation_start(); + run = true; + repeatcommand_front(); // repeat G80 with all its parameters + enquecommand_front_P((PSTR("G28 W0"))); + } + else { + mesh_bed_leveling_flag = false; + } break; } run = false; - + if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) { + mesh_bed_leveling_flag = false; + break; + } // Save custom message state, set a new custom message state to display: Calibrating point 9. bool custom_message_old = custom_message; unsigned int custom_message_type_old = custom_message_type; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b28ef83b1..4a82e2e62 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -661,7 +661,7 @@ void lcd_commands() cancel_heatup = true; setTargetBed(0); #ifndef SNMM - setTargetHotend(0, 0); //to heating when changing filament for multicolor + setTargetHotend(0, 0); //heating when changing filament for multicolor setTargetHotend(0, 1); setTargetHotend(0, 2); #endif @@ -3743,18 +3743,21 @@ void lcd_sdcard_stop() } if ((int32_t)encoderPosition == 2) { - cancel_heatup = true; + cancel_heatup = true; #ifdef MESH_BED_LEVELING mbl.active = false; #endif // Stop the stoppers, update the position from the stoppers. - planner_abort_hard(); - // Because the planner_abort_hard() initialized current_position[Z] from the stepper, - // Z baystep is no more applied. Reset it. - babystep_reset(); + if (mesh_bed_leveling_flag == false && homing_flag == false) { + planner_abort_hard(); + // Because the planner_abort_hard() initialized current_position[Z] from the stepper, + // Z baystep is no more applied. Reset it. + babystep_reset(); + } // Clean the input command queue. cmdqueue_reset(); lcd_setstatuspgm(MSG_PRINT_ABORTED); + lcd_update(2); card.sdprinting = false; card.closefile();