Fix lcd_print_stop function
This commit is contained in:
parent
df0d781c20
commit
f8a0d5d773
|
|
@ -4692,13 +4692,13 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
||||||
// We don't know where we are! HOME!
|
// We don't know where we are! HOME!
|
||||||
// Push the commands to the front of the message queue in the reverse order!
|
// Push the commands to the front of the message queue in the reverse order!
|
||||||
// There shall be always enough space reserved for these commands.
|
// There shall be always enough space reserved for these commands.
|
||||||
if (lcd_commands_type != LcdCommands::StopPrint) {
|
// if (lcd_commands_type != LcdCommands::StopPrint) {
|
||||||
repeatcommand_front(); // repeat G80 with all its parameters
|
repeatcommand_front(); // repeat G80 with all its parameters
|
||||||
enquecommand_front_P((PSTR("G28 W0")));
|
enquecommand_front_P((PSTR("G28 W0")));
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
mesh_bed_leveling_flag = false;
|
// mesh_bed_leveling_flag = false;
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4728,23 +4728,23 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
||||||
#ifndef PINDA_THERMISTOR
|
#ifndef PINDA_THERMISTOR
|
||||||
if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50)
|
if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50)
|
||||||
{
|
{
|
||||||
if (lcd_commands_type != LcdCommands::StopPrint) {
|
// if (lcd_commands_type != LcdCommands::StopPrint) {
|
||||||
temp_compensation_start();
|
temp_compensation_start();
|
||||||
run = true;
|
run = true;
|
||||||
repeatcommand_front(); // repeat G80 with all its parameters
|
repeatcommand_front(); // repeat G80 with all its parameters
|
||||||
enquecommand_front_P((PSTR("G28 W0")));
|
enquecommand_front_P((PSTR("G28 W0")));
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
mesh_bed_leveling_flag = false;
|
// mesh_bed_leveling_flag = false;
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
run = false;
|
run = false;
|
||||||
#endif //PINDA_THERMISTOR
|
#endif //PINDA_THERMISTOR
|
||||||
if (lcd_commands_type == LcdCommands::StopPrint) {
|
// if (lcd_commands_type == LcdCommands::StopPrint) {
|
||||||
mesh_bed_leveling_flag = false;
|
// mesh_bed_leveling_flag = false;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
// Save custom message state, set a new custom message state to display: Calibrating point 9.
|
// Save custom message state, set a new custom message state to display: Calibrating point 9.
|
||||||
CustomMsg custom_message_type_old = custom_message_type;
|
CustomMsg custom_message_type_old = custom_message_type;
|
||||||
unsigned int custom_message_state_old = custom_message_state;
|
unsigned int custom_message_state_old = custom_message_state;
|
||||||
|
|
@ -8948,6 +8948,7 @@ static void wait_for_heater(long codenum, uint8_t extruder) {
|
||||||
residencyStart = -1;
|
residencyStart = -1;
|
||||||
/* continue to loop until we have reached the target temp
|
/* continue to loop until we have reached the target temp
|
||||||
_and_ until TEMP_RESIDENCY_TIME hasn't passed since we reached it */
|
_and_ until TEMP_RESIDENCY_TIME hasn't passed since we reached it */
|
||||||
|
cancel_heatup = false;
|
||||||
while ((!cancel_heatup) && ((residencyStart == -1) ||
|
while ((!cancel_heatup) && ((residencyStart == -1) ||
|
||||||
(residencyStart >= 0 && (((unsigned int)(_millis() - residencyStart)) < (TEMP_RESIDENCY_TIME * 1000UL))))) {
|
(residencyStart >= 0 && (((unsigned int)(_millis() - residencyStart)) < (TEMP_RESIDENCY_TIME * 1000UL))))) {
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,9 @@ static void fil_unload_menu();
|
||||||
static void lcd_disable_farm_mode();
|
static void lcd_disable_farm_mode();
|
||||||
static void lcd_set_fan_check();
|
static void lcd_set_fan_check();
|
||||||
static void lcd_cutter_enabled();
|
static void lcd_cutter_enabled();
|
||||||
|
#ifdef SNMM
|
||||||
static char snmm_stop_print_menu();
|
static char snmm_stop_print_menu();
|
||||||
|
#endif //SNMM
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
static void lcd_sort_type_set();
|
static void lcd_sort_type_set();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1056,7 +1058,7 @@ static void lcd_status_screen()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_click
|
if (current_click
|
||||||
&& (lcd_commands_type != LcdCommands::StopPrint) //click is aborted unless stop print finishes
|
// && (lcd_commands_type != LcdCommands::StopPrint) //click is aborted unless stop print finishes
|
||||||
&& ( menu_block_entering_on_serious_errors == SERIOUS_ERR_NONE ) // or a serious error blocks entering the menu
|
&& ( menu_block_entering_on_serious_errors == SERIOUS_ERR_NONE ) // or a serious error blocks entering the menu
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
@ -1466,7 +1468,7 @@ void lcd_commands()
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // not SNMM
|
#endif // not SNMM
|
||||||
|
/*
|
||||||
if (lcd_commands_type == LcdCommands::StopPrint) /// stop print
|
if (lcd_commands_type == LcdCommands::StopPrint) /// stop print
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -1558,6 +1560,7 @@ void lcd_commands()
|
||||||
lcd_commands_step = 7;
|
lcd_commands_step = 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (lcd_commands_type == LcdCommands::FarmModeConfirm) /// farm mode confirm
|
if (lcd_commands_type == LcdCommands::FarmModeConfirm) /// farm mode confirm
|
||||||
{
|
{
|
||||||
|
|
@ -6051,7 +6054,7 @@ void bowden_menu() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//#ifdef SNMM
|
#ifdef SNMM
|
||||||
|
|
||||||
static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
|
static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
|
|
@ -6102,6 +6105,8 @@ static char snmm_stop_print_menu() { //menu for choosing which filaments will be
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif //SNMM
|
||||||
|
|
||||||
//! @brief Select one of numbered items
|
//! @brief Select one of numbered items
|
||||||
//!
|
//!
|
||||||
//! Create list of items with header. Header can not be selected.
|
//! Create list of items with header. Header can not be selected.
|
||||||
|
|
@ -7320,7 +7325,6 @@ void lcd_print_stop()
|
||||||
|
|
||||||
// Clear any saved printing state
|
// Clear any saved printing state
|
||||||
cancel_saved_printing();
|
cancel_saved_printing();
|
||||||
cancel_heatup = true;
|
|
||||||
|
|
||||||
// Abort the planner/queue/sd
|
// Abort the planner/queue/sd
|
||||||
planner_abort_hard();
|
planner_abort_hard();
|
||||||
|
|
@ -7331,19 +7335,41 @@ void lcd_print_stop()
|
||||||
|
|
||||||
CRITICAL_SECTION_END;
|
CRITICAL_SECTION_END;
|
||||||
|
|
||||||
|
#ifdef MESH_BED_LEVELING
|
||||||
|
mbl.active = false; //also prevents undoing the mbl compensation a second time in the second planner_abort_hard()
|
||||||
|
#endif
|
||||||
|
|
||||||
lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
|
lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
|
||||||
stoptime = _millis();
|
stoptime = _millis();
|
||||||
unsigned long t = (stoptime - starttime - pause_time) / 1000; //time in s
|
unsigned long t = (stoptime - starttime - pause_time) / 1000; //time in s
|
||||||
pause_time = 0;
|
pause_time = 0;
|
||||||
save_statistics(total_filament_used, t);
|
save_statistics(total_filament_used, t);
|
||||||
lcd_return_to_status();
|
|
||||||
lcd_ignore_click(true);
|
lcd_commands_step = 0;
|
||||||
lcd_commands_step = 0;
|
lcd_commands_type = LcdCommands::Idle;
|
||||||
lcd_commands_type = LcdCommands::StopPrint;
|
|
||||||
// Turn off the print fan
|
lcd_cooldown(); //turns off heaters and fan; goes to status screen.
|
||||||
SET_OUTPUT(FAN_PIN);
|
cancel_heatup = true; //unroll temperature wait loop stack.
|
||||||
WRITE(FAN_PIN, 0);
|
|
||||||
fanSpeed = 0;
|
current_position[Z_AXIS] += 10; //lift Z.
|
||||||
|
plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60, active_extruder);
|
||||||
|
|
||||||
|
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) //if axis are homed, move to parked position.
|
||||||
|
{
|
||||||
|
current_position[X_AXIS] = X_CANCEL_POS;
|
||||||
|
current_position[Y_AXIS] = Y_CANCEL_POS;
|
||||||
|
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
|
||||||
|
}
|
||||||
|
st_synchronize();
|
||||||
|
|
||||||
|
if (mmu_enabled) extr_unload(); //M702 C
|
||||||
|
|
||||||
|
finishAndDisableSteppers(); //M84
|
||||||
|
|
||||||
|
lcd_setstatuspgm(_T(WELCOME_MSG));
|
||||||
|
custom_message_type = CustomMsg::Status;
|
||||||
|
|
||||||
|
planner_abort_hard(); //needs to be done since plan_buffer_line resets waiting_inside_plan_buffer_line_print_aborted to false. Also copies current to destination.
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_sdcard_stop()
|
void lcd_sdcard_stop()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue