Pause/Reheat/Resume now works as expected.
This commit is contained in:
@@ -2484,7 +2484,7 @@
|
|||||||
#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
|
||||||
|
@@ -534,16 +534,17 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
|
|||||||
ui.pause_show_message(PAUSE_MESSAGE_HEAT);
|
ui.pause_show_message(PAUSE_MESSAGE_HEAT);
|
||||||
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_HEAT));
|
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_HEAT));
|
||||||
|
|
||||||
|
/*
|
||||||
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
||||||
if (AnycubicTouchscreen.ai3m_pause_state < 3) {
|
if (AnycubicTouchscreen.ai3m_pause_state < 3) {
|
||||||
AnycubicTouchscreen.ai3m_pause_state += 2;
|
AnycubicTouchscreen.ai3m_pause_state += 3;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT(MSG_HEATER_TIMEOUT), GET_TEXT(MSG_REHEAT)));
|
TERN_(HOST_PROMPT_SUPPORT, host_prompt_do(PROMPT_USER_CONTINUE, GET_TEXT(MSG_HEATER_TIMEOUT), GET_TEXT(MSG_REHEAT)));
|
||||||
|
|
||||||
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_HEATER_TIMEOUT)));
|
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired_P(GET_TEXT(MSG_HEATER_TIMEOUT)));
|
||||||
@@ -577,17 +578,17 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
|
|||||||
IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true);
|
IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true);
|
||||||
|
|
||||||
nozzle_timed_out = false;
|
nozzle_timed_out = false;
|
||||||
|
/*
|
||||||
#ifdef ANYCUBIC_TOUCHSCREEN
|
#ifdef ANYCUBIC_TOUCHSCREEN
|
||||||
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
||||||
AnycubicTouchscreen.ai3m_pause_state -= 2;
|
AnycubicTouchscreen.ai3m_pause_state -= 3;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
first_impatient_beep(max_beep_count);
|
first_impatient_beep(max_beep_count);
|
||||||
}
|
}
|
||||||
idle_no_sleep();
|
idle_no_sleep();
|
||||||
@@ -634,15 +635,17 @@ void resume_print(const_float_t slow_load_length/*=0*/, const_float_t fast_load_
|
|||||||
|
|
||||||
// Re-enable the heaters if they timed out
|
// Re-enable the heaters if they timed out
|
||||||
bool nozzle_timed_out = false;
|
bool nozzle_timed_out = false;
|
||||||
|
/*
|
||||||
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
||||||
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
||||||
AnycubicTouchscreen.ai3m_pause_state -= 2;
|
AnycubicTouchscreen.ai3m_pause_state -= 3;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
HOTEND_LOOP() {
|
HOTEND_LOOP() {
|
||||||
nozzle_timed_out |= thermalManager.heater_idle[e].timed_out;
|
nozzle_timed_out |= thermalManager.heater_idle[e].timed_out;
|
||||||
thermalManager.reset_hotend_idle_timer(e);
|
thermalManager.reset_hotend_idle_timer(e);
|
||||||
|
@@ -212,6 +212,8 @@ void AnycubicTouchscreenClass::Setup() {
|
|||||||
HARDWARE_SERIAL_PROTOCOLPGM("J12"); // J12 Ready
|
HARDWARE_SERIAL_PROTOCOLPGM("J12"); // J12 Ready
|
||||||
HARDWARE_SERIAL_ENTER();
|
HARDWARE_SERIAL_ENTER();
|
||||||
|
|
||||||
|
TFTstate = ANYCUBIC_TFT_STATE_IDLE;
|
||||||
|
|
||||||
currentTouchscreenSelection[0] = 0;
|
currentTouchscreenSelection[0] = 0;
|
||||||
currentFileOrDirectory[0] = '\0';
|
currentFileOrDirectory[0] = '\0';
|
||||||
SpecialMenu = false;
|
SpecialMenu = false;
|
||||||
@@ -403,6 +405,20 @@ void AnycubicTouchscreenClass::StartPrint(){
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
// nozzle was timed out before, do not enter printing state yet
|
||||||
|
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("DEBUG: Set Pause again because of timeout");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// clear the timeout flag to ensure the print continues on the
|
||||||
|
// next push of CONTINUE
|
||||||
|
ai3m_pause_state = 1;
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("DEBUG: Nozzle timeout flag cleared");
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
// nozzle was timed out before (M600), do not enter printing state yet
|
// nozzle was timed out before (M600), do not enter printing state yet
|
||||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
@@ -416,7 +432,7 @@ void AnycubicTouchscreenClass::StartPrint(){
|
|||||||
SERIAL_ECHOLNPGM("DEBUG: Nozzle timeout flag cleared");
|
SERIAL_ECHOLNPGM("DEBUG: Nozzle timeout flag cleared");
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 6:
|
||||||
// nozzle was timed out before (runout), do not enter printing state yet
|
// nozzle was timed out before (runout), do not enter printing state yet
|
||||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
@@ -451,9 +467,9 @@ void AnycubicTouchscreenClass::PausePrint() {
|
|||||||
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
||||||
#endif
|
#endif
|
||||||
// filament runout, retract and beep
|
// filament runout, retract and beep
|
||||||
queue.inject_P(PSTR("G91")); // relative mode
|
//queue.inject_P(PSTR("G91")); // relative mode
|
||||||
queue.inject_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
//queue.inject_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
||||||
queue.inject_P(PSTR("G90")); // absolute mode
|
//queue.inject_P(PSTR("G90")); // absolute mode
|
||||||
buzzer.tone(200, 1567);
|
buzzer.tone(200, 1567);
|
||||||
buzzer.tone(200, 1174);
|
buzzer.tone(200, 1174);
|
||||||
buzzer.tone(200, 1567);
|
buzzer.tone(200, 1567);
|
||||||
@@ -469,7 +485,7 @@ void AnycubicTouchscreenClass::PausePrint() {
|
|||||||
SERIAL_ECHOPGM("DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
SERIAL_ECHOPGM("DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
IsParked = true;
|
//IsParked = true;
|
||||||
// show filament runout prompt on screen
|
// show filament runout prompt on screen
|
||||||
HARDWARE_SERIAL_PROTOCOLPGM("J23");
|
HARDWARE_SERIAL_PROTOCOLPGM("J23");
|
||||||
HARDWARE_SERIAL_ENTER();
|
HARDWARE_SERIAL_ENTER();
|
||||||
@@ -552,6 +568,7 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
|||||||
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// M108
|
||||||
wait_for_heatup = false;
|
wait_for_heatup = false;
|
||||||
wait_for_user = false;
|
wait_for_user = false;
|
||||||
|
|
||||||
@@ -565,13 +582,15 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
|||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Clear flags");
|
SERIAL_ECHOLNPGM("DEBUG: Clear flags");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ai3m_pause_state > 3) {
|
if (ai3m_pause_state > 3) {
|
||||||
ai3m_pause_state -= 2;
|
ai3m_pause_state -= 3;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOPGM("DEBUG: NTO done, AI3M Pause State: ", ai3m_pause_state);
|
SERIAL_ECHOPGM("DEBUG: NTO done, AI3M Pause State: ", ai3m_pause_state);
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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;
|
||||||
}
|
}
|
||||||
@@ -1620,8 +1639,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
|
|||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
if (card.isPrinting()) {
|
if (card.isPrinting()) {
|
||||||
PausePrint();
|
PausePrint();
|
||||||
HARDWARE_SERIAL_PROTOCOLPGM("J05");//j05 pausing
|
|
||||||
HARDWARE_SERIAL_ENTER();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ai3m_pause_state = 0;
|
ai3m_pause_state = 0;
|
||||||
@@ -1643,7 +1660,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
|
|||||||
StartPrint();
|
StartPrint();
|
||||||
}
|
}
|
||||||
if (ai3m_pause_state > 3) {
|
if (ai3m_pause_state > 3) {
|
||||||
ReheatNozzle();
|
ReheatNozzle(); // obsolete!
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
@@ -267,8 +267,9 @@ class AnycubicTouchscreenClass {
|
|||||||
* 1 - regular pause
|
* 1 - regular pause
|
||||||
* 2 - M600 pause
|
* 2 - M600 pause
|
||||||
* 3 - filament runout pause
|
* 3 - filament runout pause
|
||||||
* 4 - nozzle timeout on M600
|
* 4 - nozzle timeout on regular pause // OBSOLETE
|
||||||
* 5 - nozzle timeout on filament runout
|
* 5 - nozzle timeout on M600 // OBSOLETE
|
||||||
|
* 6 - nozzle timeout on filament runout // OBSOLETE
|
||||||
*/
|
*/
|
||||||
uint8_t ai3m_pause_state = 0;
|
uint8_t ai3m_pause_state = 0;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user