TFT Pause/Resume works again, but Filament runout does not park the nozzle.
This commit is contained in:
@@ -2471,7 +2471,7 @@
|
|||||||
// Set to 0 for manual extrusion.
|
// Set to 0 for manual extrusion.
|
||||||
// Filament can be extruded repeatedly from the Filament Change menu
|
// Filament can be extruded repeatedly from the Filament Change menu
|
||||||
// until extrusion is consistent, and to purge old filament.
|
// until extrusion is consistent, and to purge old filament.
|
||||||
#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
|
//#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
|
||||||
//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
|
//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
|
||||||
|
|
||||||
// Filament Unload does a Retract, Delay, and Purge first:
|
// Filament Unload does a Retract, Delay, and Purge first:
|
||||||
@@ -2480,13 +2480,13 @@
|
|||||||
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
|
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
|
||||||
#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
|
#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
|
||||||
|
|
||||||
#define PAUSE_PARK_NOZZLE_TIMEOUT 600 // (seconds) Time limit before the nozzle is turned off for safety.
|
#define PAUSE_PARK_NOZZLE_TIMEOUT 30 // (seconds) Time limit before the nozzle is turned off for safety.
|
||||||
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
|
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
|
||||||
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
|
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
|
||||||
//#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
|
//#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
|
||||||
//#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
|
//#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
|
||||||
|
|
||||||
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
|
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
|
||||||
//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
|
//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
|
||||||
|
|
||||||
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
|
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
|
||||||
@@ -3900,7 +3900,7 @@
|
|||||||
*/
|
*/
|
||||||
#define HOST_ACTION_COMMANDS
|
#define HOST_ACTION_COMMANDS
|
||||||
#if ENABLED(HOST_ACTION_COMMANDS)
|
#if ENABLED(HOST_ACTION_COMMANDS)
|
||||||
//#define HOST_PAUSE_M76
|
#define HOST_PAUSE_M76
|
||||||
#define HOST_PROMPT_SUPPORT
|
#define HOST_PROMPT_SUPPORT
|
||||||
//#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start
|
//#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start
|
||||||
#endif
|
#endif
|
||||||
|
@@ -286,7 +286,8 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
|
|||||||
#if EITHER(HAS_LCD_MENU, DWIN_CREALITY_LCD_ENHANCED)
|
#if EITHER(HAS_LCD_MENU, DWIN_CREALITY_LCD_ENHANCED)
|
||||||
ui.pause_show_message(PAUSE_MESSAGE_OPTION); // Also sets PAUSE_RESPONSE_WAIT_FOR
|
ui.pause_show_message(PAUSE_MESSAGE_OPTION); // Also sets PAUSE_RESPONSE_WAIT_FOR
|
||||||
#else
|
#else
|
||||||
pause_menu_response = PAUSE_RESPONSE_WAIT_FOR;
|
//pause_menu_response = PAUSE_RESPONSE_WAIT_FOR;
|
||||||
|
pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; // KNUTWURST
|
||||||
#endif
|
#endif
|
||||||
while (pause_menu_response == PAUSE_RESPONSE_WAIT_FOR) idle_no_sleep();
|
while (pause_menu_response == PAUSE_RESPONSE_WAIT_FOR) idle_no_sleep();
|
||||||
}
|
}
|
||||||
|
@@ -353,17 +353,19 @@ void AnycubicTouchscreenClass::StartPrint(){
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
// regular sd pause
|
// regular sd pause
|
||||||
queue.inject_P(PSTR("M108")); // unpark nozzle
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOPGM("DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
SERIAL_ECHOPGM("DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
SERIAL_ECHOLNPGM("DEBUG: M108 Resume from regular pause");
|
SERIAL_ECHOLNPGM("DEBUG: M108/M24 Resume from regular pause");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
IsParked = false; // remove parked flag
|
IsParked = false; // remove parked flag
|
||||||
wait_for_heatup = false;
|
|
||||||
wait_for_user = false;
|
|
||||||
starttime = millis();
|
starttime = millis();
|
||||||
card.startOrResumeFilePrinting(); // resume regularly
|
card.startOrResumeFilePrinting(); // resume regularly
|
||||||
|
|
||||||
|
wait_for_heatup = false;
|
||||||
|
wait_for_user = false;
|
||||||
|
|
||||||
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
||||||
ai3m_pause_state = 0;
|
ai3m_pause_state = 0;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
@@ -386,12 +388,16 @@ void AnycubicTouchscreenClass::StartPrint(){
|
|||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// paused by filament runout
|
// paused by filament runout
|
||||||
queue.inject_P(PSTR("M24")); // unpark nozzle and resume
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: M24 Resume from Filament Runout");
|
SERIAL_ECHOLNPGM("DEBUG: M108/M24 Resume from Filament Runout");
|
||||||
#endif
|
#endif
|
||||||
IsParked = false; // clear flags
|
IsParked = false; // remove parked flag
|
||||||
|
card.startOrResumeFilePrinting(); // resume regularly
|
||||||
|
|
||||||
|
wait_for_heatup = false;
|
||||||
wait_for_user = false;
|
wait_for_user = false;
|
||||||
|
|
||||||
|
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
||||||
ai3m_pause_state = 0;
|
ai3m_pause_state = 0;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Filament Pause Flag cleared");
|
SERIAL_ECHOLNPGM("DEBUG: Filament Pause Flag cleared");
|
||||||
@@ -439,8 +445,7 @@ void AnycubicTouchscreenClass::PausePrint() {
|
|||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Regular Pause");
|
SERIAL_ECHOLNPGM("DEBUG: Regular Pause");
|
||||||
#endif
|
#endif
|
||||||
}
|
} else { // pause caused by filament runout
|
||||||
else { // pause caused by filament runout
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
||||||
#endif
|
#endif
|
||||||
@@ -478,16 +483,18 @@ void AnycubicTouchscreenClass::PausePrint() {
|
|||||||
inline void AnycubicTouchscreenClass::StopPrint()
|
inline void AnycubicTouchscreenClass::StopPrint()
|
||||||
{
|
{
|
||||||
// stop print, disable heaters
|
// stop print, disable heaters
|
||||||
wait_for_user = false;
|
|
||||||
wait_for_heatup = false;
|
|
||||||
IsParked = false;
|
|
||||||
if (card.isFileOpen) {
|
if (card.isFileOpen) {
|
||||||
card.endFilePrintNow();
|
card.endFilePrintNow();
|
||||||
card.closefile();
|
card.closefile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
queue.clear();
|
||||||
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Stopped and cleared");
|
SERIAL_ECHOLNPGM("DEBUG: Stopped and cleared");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
print_job_timer.stop();
|
print_job_timer.stop();
|
||||||
thermalManager.disable_all_heaters();
|
thermalManager.disable_all_heaters();
|
||||||
ai3m_pause_state = 0;
|
ai3m_pause_state = 0;
|
||||||
@@ -502,17 +509,21 @@ inline void AnycubicTouchscreenClass::StopPrint()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AnycubicTouchscreenClass::FilamentChangeResume() {
|
void AnycubicTouchscreenClass::FilamentChangeResume() {
|
||||||
wait_for_user = false; //must be done twice, since we have a bug in marlin
|
|
||||||
wait_for_heatup = false;
|
|
||||||
// call M108 to break out of M600 pause
|
|
||||||
queue.inject_P(PSTR("M108"));
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: M108 Resume called");
|
SERIAL_ECHOLNPGM("DEBUG: M108 Resume called");
|
||||||
#endif
|
#endif
|
||||||
wait_for_user = false;
|
|
||||||
|
IsParked = false; // remove parked flag
|
||||||
|
starttime = millis();
|
||||||
|
card.startOrResumeFilePrinting(); // resume regularly
|
||||||
|
|
||||||
wait_for_heatup = false;
|
wait_for_heatup = false;
|
||||||
// resume with proper progress state
|
wait_for_user = false;
|
||||||
card.startOrResumeFilePrinting();
|
|
||||||
|
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
|
||||||
|
ai3m_pause_state = 0;
|
||||||
|
|
||||||
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: M108 Resume done");
|
SERIAL_ECHOLNPGM("DEBUG: M108 Resume done");
|
||||||
#endif
|
#endif
|
||||||
@@ -539,7 +550,10 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
|||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
||||||
#endif
|
#endif
|
||||||
queue.inject_P(PSTR("M108"));
|
|
||||||
|
wait_for_heatup = false;
|
||||||
|
wait_for_user = false;
|
||||||
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Resume heating");
|
SERIAL_ECHOLNPGM("DEBUG: Resume heating");
|
||||||
#endif
|
#endif
|
||||||
@@ -557,10 +571,6 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
|||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_for_user = false;
|
|
||||||
wait_for_heatup = false;
|
|
||||||
|
|
||||||
// set pause state to show CONTINUE button again
|
// set pause state to show CONTINUE button again
|
||||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user