Tweak M600 display resume

- Add startFileprint(); call to M108 display routine to fix progress and ensure "printing done" gets shown
- Add SD printing check in marlin_main.cpp M600 routine to skip TFTstate if not necessary (e.g. USB printing)
- Move routine to the top again to ensure immediate execution
This commit is contained in:
David Ramiro 2019-02-24 15:48:03 +01:00
parent 8fc01144f1
commit 2c53c33d52
No known key found for this signature in database
GPG Key ID: 5B042737EBEEB736
3 changed files with 35 additions and 32 deletions

View File

@ -264,13 +264,14 @@ void AnycubicTFTClass::FilamentChangeResume(){
HOTEND_LOOP() thermalManager.reset_heater_idle_timer(e); // resume heating if timed out HOTEND_LOOP() thermalManager.reset_heater_idle_timer(e); // resume heating if timed out
wait_for_heatup = false; wait_for_heatup = false;
wait_for_user = false; // remove waiting flags wait_for_user = false; // remove waiting flags
// TFTstate=ANYCUBIC_TFT_STATE_SDPRINT; card.startFileprint(); // resume with proper progress state
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: M108 Resume called"); SERIAL_ECHOLNPGM("DEBUG: M108 Resume called");
#endif #endif
} }
void AnycubicTFTClass::FilamentChangePause(){ void AnycubicTFTClass::FilamentChangePause(){
PausedByFilamentChange=true;
enqueue_and_echo_commands_P(PSTR("M600")); enqueue_and_echo_commands_P(PSTR("M600"));
TFTstate=ANYCUBIC_TFT_STATE_SDPAUSE_REQ; // set TFT state to paused TFTstate=ANYCUBIC_TFT_STATE_SDPAUSE_REQ; // set TFT state to paused
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
@ -329,7 +330,6 @@ void AnycubicTFTClass::HandleSpecialMenu()
enqueue_and_echo_commands_P(PSTR("G91\nG1 Z-0.1\nG90")); enqueue_and_echo_commands_P(PSTR("G91\nG1 Z-0.1\nG90"));
} else if (strcmp(SelectedDirectory, "<filamentchange pause>")==0) { } else if (strcmp(SelectedDirectory, "<filamentchange pause>")==0) {
SERIAL_PROTOCOLLNPGM("Special Menu: FilamentChange Pause"); SERIAL_PROTOCOLLNPGM("Special Menu: FilamentChange Pause");
PausedByFilamentChange=true;
FilamentChangePause(); FilamentChangePause();
} else if (strcmp(SelectedDirectory, "<filamentchange resume>")==0) { } else if (strcmp(SelectedDirectory, "<filamentchange resume>")==0) {
SERIAL_PROTOCOLLNPGM("Special Menu: FilamentChange Resume"); SERIAL_PROTOCOLLNPGM("Special Menu: FilamentChange Resume");

View File

@ -8508,7 +8508,7 @@ inline void gcode_M109() {
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.CommandScan(); AnycubicTFT.CommandScan();
#endif #endif
#if TEMP_RESIDENCY_TIME > 0 #if TEMP_RESIDENCY_TIME > 0
const float temp_diff = ABS(target_temp - temp); const float temp_diff = ABS(target_temp - temp);
@ -8547,11 +8547,11 @@ inline void gcode_M109() {
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.HeatingDone(); AnycubicTFT.HeatingDone();
#endif #endif
#if DISABLED(BUSY_WHILE_HEATING) #if DISABLED(BUSY_WHILE_HEATING)
KEEPALIVE_STATE(IN_HANDLER); KEEPALIVE_STATE(IN_HANDLER);
#endif #endif
// flush the serial buffer after heating to prevent lockup by m105 // flush the serial buffer after heating to prevent lockup by m105
SERIAL_FLUSH(); SERIAL_FLUSH();
@ -8665,11 +8665,11 @@ inline void gcode_M109() {
} }
} }
#endif #endif
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.CommandScan(); AnycubicTFT.CommandScan();
#endif #endif
#if TEMP_BED_RESIDENCY_TIME > 0 #if TEMP_BED_RESIDENCY_TIME > 0
const float temp_diff = ABS(target_temp - temp); const float temp_diff = ABS(target_temp - temp);
@ -8697,16 +8697,16 @@ inline void gcode_M109() {
} }
} while (wait_for_heatup && TEMP_BED_CONDITIONS); } while (wait_for_heatup && TEMP_BED_CONDITIONS);
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.BedHeatingDone(); AnycubicTFT.BedHeatingDone();
#endif #endif
if (wait_for_heatup) lcd_reset_status(); if (wait_for_heatup) lcd_reset_status();
#if DISABLED(BUSY_WHILE_HEATING) #if DISABLED(BUSY_WHILE_HEATING)
KEEPALIVE_STATE(IN_HANDLER); KEEPALIVE_STATE(IN_HANDLER);
#endif #endif
// flush the serial buffer after heating to prevent lockup by m105 // flush the serial buffer after heating to prevent lockup by m105
SERIAL_FLUSH(); SERIAL_FLUSH();
} }
@ -8904,7 +8904,7 @@ inline void gcode_M111() {
#if ENABLED(ULTIPANEL) #if ENABLED(ULTIPANEL)
lcd_reset_status(); lcd_reset_status();
#endif #endif
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.CommandScan(); AnycubicTFT.CommandScan();
#endif #endif
@ -8940,7 +8940,7 @@ inline void gcode_M81() {
#if ENABLED(ULTIPANEL) #if ENABLED(ULTIPANEL)
LCD_MESSAGEPGM(MACHINE_NAME " " MSG_OFF "."); LCD_MESSAGEPGM(MACHINE_NAME " " MSG_OFF ".");
#endif #endif
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.CommandScan(); AnycubicTFT.CommandScan();
#endif #endif
@ -10992,6 +10992,23 @@ inline void gcode_M502() {
* Default values are used for omitted arguments. * Default values are used for omitted arguments.
*/ */
inline void gcode_M600() { inline void gcode_M600() {
#ifdef SDSUPPORT
if (card.sdprinting) { // are we printing from sd?
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Enter M600 TFTstate routine");
#endif
AnycubicTFT.TFTstate=ANYCUBIC_TFT_STATE_SDPAUSE_REQ; // enter correct display state to show resume button
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Set TFTstate to SDPAUSE_REQ");
#endif
AnycubicTFT.PausedByFilamentChange=true; // set flag to ensure correct resume routine gets executed
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Set filament change flag");
#endif
}
#endif
point_t park_point = NOZZLE_PARK_POINT; point_t park_point = NOZZLE_PARK_POINT;
if (get_target_extruder_from_command(600)) return; if (get_target_extruder_from_command(600)) return;
@ -11054,19 +11071,6 @@ inline void gcode_M502() {
const bool job_running = print_job_timer.isRunning(); const bool job_running = print_job_timer.isRunning();
if (pause_print(retract, park_point, unload_length, true)) { if (pause_print(retract, park_point, unload_length, true)) {
#ifdef SDSUPPORT
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Enter TFTstate routine");
#endif
AnycubicTFT.TFTstate=ANYCUBIC_TFT_STATE_SDPAUSE_REQ; // enter correct display state to show resume button
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Set TFTState to SDPAUSE_REQ");
#endif
AnycubicTFT.PausedByFilamentChange=true; // set flag to ensure correct resume routine gets executed
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Set filament change flag");
#endif
#endif
wait_for_filament_reload(beep_count); wait_for_filament_reload(beep_count);
resume_print(slow_load_length, fast_load_length, ADVANCED_PAUSE_PURGE_LENGTH, beep_count); resume_print(slow_load_length, fast_load_length, ADVANCED_PAUSE_PURGE_LENGTH, beep_count);
} }
@ -14753,7 +14757,7 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) {
#if ENABLED(FILAMENT_RUNOUT_SENSOR) #if ENABLED(FILAMENT_RUNOUT_SENSOR)
runout.run(); runout.run();
#endif #endif
#if ENABLED(ANYCUBIC_TFT_MODEL) && ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) #if ENABLED(ANYCUBIC_TFT_MODEL) && ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
AnycubicTFT.FilamentRunout(); AnycubicTFT.FilamentRunout();
#endif #endif
@ -14961,7 +14965,7 @@ void idle(
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
AnycubicTFT.CommandScan(); AnycubicTFT.CommandScan();
#endif #endif
lcd_update(); lcd_update();
host_keepalive(); host_keepalive();
@ -15018,7 +15022,7 @@ void kill(const char* lcd_msg) {
#else #else
UNUSED(lcd_msg); UNUSED(lcd_msg);
#endif #endif
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
// Kill AnycubicTFT // Kill AnycubicTFT
AnycubicTFT.KillTFT(); AnycubicTFT.KillTFT();
@ -15113,7 +15117,7 @@ void setup() {
MYSERIAL0.begin(BAUDRATE); MYSERIAL0.begin(BAUDRATE);
SERIAL_PROTOCOLLNPGM("start"); SERIAL_PROTOCOLLNPGM("start");
SERIAL_ECHO_START(); SERIAL_ECHO_START();
#ifdef ANYCUBIC_TFT_MODEL #ifdef ANYCUBIC_TFT_MODEL
// Setup AnycubicTFT // Setup AnycubicTFT
AnycubicTFT.Setup(); AnycubicTFT.Setup();
@ -15139,7 +15143,6 @@ void setup() {
SERIAL_ECHOPGM(MSG_MARLIN); SERIAL_ECHOPGM(MSG_MARLIN);
SERIAL_CHAR(' '); SERIAL_CHAR(' ');
SERIAL_ECHOLNPGM(SHORT_BUILD_VERSION); SERIAL_ECHOLNPGM(SHORT_BUILD_VERSION);
SERIAL_CHAR(' ');
SERIAL_ECHOPGM(MSG_MARLIN_AI3M); SERIAL_ECHOPGM(MSG_MARLIN_AI3M);
SERIAL_CHAR(' '); SERIAL_CHAR(' ');
SERIAL_ECHOLNPGM(CUSTOM_BUILD_VERSION); SERIAL_ECHOLNPGM(CUSTOM_BUILD_VERSION);

View File

@ -41,7 +41,7 @@
* Defines the version of the Marlin-AI3M build. Not to be confused with * Defines the version of the Marlin-AI3M build. Not to be confused with
* Marlin's own build number, e.g. 1.1.9. * Marlin's own build number, e.g. 1.1.9.
*/ */
#define CUSTOM_BUILD_VERSION "v1.4.1" #define CUSTOM_BUILD_VERSION "v1.4.2"
/** /**
* Verbose version identifier which should contain a reference to the location * Verbose version identifier which should contain a reference to the location
@ -54,7 +54,7 @@
* here we define this default string as the date where the latest release * here we define this default string as the date where the latest release
* version was tagged. * version was tagged.
*/ */
#define STRING_DISTRIBUTION_DATE "2019-02-23" #define STRING_DISTRIBUTION_DATE "2019-02-24"
/** /**
* Required minimum Configuration.h and Configuration_adv.h file versions. * Required minimum Configuration.h and Configuration_adv.h file versions.