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 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 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 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);
|
||||
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_HEAT));
|
||||
|
||||
/*
|
||||
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
||||
if (AnycubicTouchscreen.ai3m_pause_state < 3) {
|
||||
AnycubicTouchscreen.ai3m_pause_state += 2;
|
||||
AnycubicTouchscreen.ai3m_pause_state += 3;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
*/
|
||||
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)));
|
||||
@@ -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);
|
||||
|
||||
nozzle_timed_out = false;
|
||||
|
||||
/*
|
||||
#ifdef ANYCUBIC_TOUCHSCREEN
|
||||
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
||||
AnycubicTouchscreen.ai3m_pause_state -= 2;
|
||||
AnycubicTouchscreen.ai3m_pause_state -= 3;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
*/
|
||||
first_impatient_beep(max_beep_count);
|
||||
}
|
||||
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
|
||||
bool nozzle_timed_out = false;
|
||||
/*
|
||||
#ifdef ANYCUBIC_TOUCHSCREEN // KNUTWURST
|
||||
if (AnycubicTouchscreen.ai3m_pause_state > 3) {
|
||||
AnycubicTouchscreen.ai3m_pause_state -= 2;
|
||||
AnycubicTouchscreen.ai3m_pause_state -= 3;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPGM(" DEBUG: NTO - AI3M Pause State set to: ", AnycubicTouchscreen.ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
HOTEND_LOOP() {
|
||||
nozzle_timed_out |= thermalManager.heater_idle[e].timed_out;
|
||||
thermalManager.reset_hotend_idle_timer(e);
|
||||
|
@@ -212,6 +212,8 @@ void AnycubicTouchscreenClass::Setup() {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J12"); // J12 Ready
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
|
||||
TFTstate = ANYCUBIC_TFT_STATE_IDLE;
|
||||
|
||||
currentTouchscreenSelection[0] = 0;
|
||||
currentFileOrDirectory[0] = '\0';
|
||||
SpecialMenu = false;
|
||||
@@ -403,6 +405,20 @@ void AnycubicTouchscreenClass::StartPrint(){
|
||||
#endif
|
||||
break;
|
||||
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
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -416,7 +432,7 @@ void AnycubicTouchscreenClass::StartPrint(){
|
||||
SERIAL_ECHOLNPGM("DEBUG: Nozzle timeout flag cleared");
|
||||
#endif
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
// nozzle was timed out before (runout), do not enter printing state yet
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -451,9 +467,9 @@ void AnycubicTouchscreenClass::PausePrint() {
|
||||
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
||||
#endif
|
||||
// filament runout, retract and beep
|
||||
queue.inject_P(PSTR("G91")); // relative mode
|
||||
queue.inject_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
||||
queue.inject_P(PSTR("G90")); // absolute mode
|
||||
//queue.inject_P(PSTR("G91")); // relative mode
|
||||
//queue.inject_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
||||
//queue.inject_P(PSTR("G90")); // absolute mode
|
||||
buzzer.tone(200, 1567);
|
||||
buzzer.tone(200, 1174);
|
||||
buzzer.tone(200, 1567);
|
||||
@@ -469,7 +485,7 @@ void AnycubicTouchscreenClass::PausePrint() {
|
||||
SERIAL_ECHOPGM("DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
#endif
|
||||
IsParked = true;
|
||||
//IsParked = true;
|
||||
// show filament runout prompt on screen
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J23");
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
@@ -552,6 +568,7 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
||||
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
||||
#endif
|
||||
|
||||
// M108
|
||||
wait_for_heatup = false;
|
||||
wait_for_user = false;
|
||||
|
||||
@@ -565,13 +582,15 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: Clear flags");
|
||||
#endif
|
||||
|
||||
if (ai3m_pause_state > 3) {
|
||||
ai3m_pause_state -= 2;
|
||||
ai3m_pause_state -= 3;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPGM("DEBUG: NTO done, AI3M Pause State: ", ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
#endif
|
||||
}
|
||||
|
||||
// set pause state to show CONTINUE button again
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||
}
|
||||
@@ -1620,8 +1639,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
|
||||
#ifdef SDSUPPORT
|
||||
if (card.isPrinting()) {
|
||||
PausePrint();
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J05");//j05 pausing
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
}
|
||||
else {
|
||||
ai3m_pause_state = 0;
|
||||
@@ -1643,7 +1660,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
|
||||
StartPrint();
|
||||
}
|
||||
if (ai3m_pause_state > 3) {
|
||||
ReheatNozzle();
|
||||
ReheatNozzle(); // obsolete!
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
@@ -267,8 +267,9 @@ class AnycubicTouchscreenClass {
|
||||
* 1 - regular pause
|
||||
* 2 - M600 pause
|
||||
* 3 - filament runout pause
|
||||
* 4 - nozzle timeout on M600
|
||||
* 5 - nozzle timeout on filament runout
|
||||
* 4 - nozzle timeout on regular pause // OBSOLETE
|
||||
* 5 - nozzle timeout on M600 // OBSOLETE
|
||||
* 6 - nozzle timeout on filament runout // OBSOLETE
|
||||
*/
|
||||
uint8_t ai3m_pause_state = 0;
|
||||
|
||||
|
Reference in New Issue
Block a user