diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index cc2766b44..98e5102c4 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -363,8 +363,8 @@ extern bool mmu_print_saved; //estimated time to end of the print extern uint8_t print_percent_done_normal; -extern uint16_t print_time_remaining_normal; extern uint8_t print_percent_done_silent; +extern uint16_t print_time_remaining_normal; extern uint16_t print_time_remaining_silent; extern uint16_t print_time_to_change_normal; extern uint16_t print_time_to_change_silent; @@ -376,7 +376,7 @@ extern uint16_t gcode_in_progress; extern LongTimer safetyTimer; -#define PRINT_PERCENT_DONE_INIT 0xff +#define PRINT_PERCENT_DONE_INIT 0xff #define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || mmu_print_saved || homing_flag || mesh_bed_leveling_flag) //! Beware - mcode_in_progress is set as soon as the command gets really processed, diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 547f4e211..9386e7539 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -313,8 +313,8 @@ bool mmu_print_saved = false; // storing estimated time to end of print counted by slicer uint8_t print_percent_done_normal = PRINT_PERCENT_DONE_INIT; -uint16_t print_time_remaining_normal = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes uint8_t print_percent_done_silent = PRINT_PERCENT_DONE_INIT; +uint16_t print_time_remaining_normal = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes uint16_t print_time_remaining_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes uint16_t print_time_to_change_normal = PRINT_TIME_REMAINING_INIT; //estimated remaining time to next change in minutes uint16_t print_time_to_change_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining time to next change in minutes @@ -6389,14 +6389,19 @@ Sigma_Exit: if(code_seen('R')) print_time_remaining_normal = code_value(); if(code_seen('Q')) print_percent_done_silent = code_value(); if(code_seen('S')) print_time_remaining_silent = code_value(); - if(code_seen('C')) print_time_to_change_normal = code_value(); - if(code_seen('D')) print_time_to_change_silent = code_value(); - - { - const char* _msg_mode_done_remain = _N("%S MODE: Percent done: %d; print time remaining in mins: %d; Change in mins: %d\n"); - printf_P(_msg_mode_done_remain, _N("NORMAL"), int(print_percent_done_normal), print_time_remaining_normal, print_time_to_change_normal); - printf_P(_msg_mode_done_remain, _N("SILENT"), int(print_percent_done_silent), print_time_remaining_silent, print_time_to_change_silent); - } + if(code_seen('C')){ + float print_time_to_change_normal_f = code_value_float(); + print_time_to_change_normal = ( print_time_to_change_normal_f <= 0 ) ? PRINT_TIME_REMAINING_INIT : print_time_to_change_normal_f; + } + if(code_seen('D')){ + float print_time_to_change_silent_f = code_value_float(); + print_time_to_change_silent = ( print_time_to_change_silent_f <= 0 ) ? PRINT_TIME_REMAINING_INIT : print_time_to_change_silent_f; + } + { + const char* _msg_mode_done_remain = _N("%S MODE: Percent done: %hhd; print time remaining in mins: %d; Change in mins: %d\n"); + printf_P(_msg_mode_done_remain, _N("NORMAL"), int8_t(print_percent_done_normal), print_time_remaining_normal, print_time_to_change_normal); + printf_P(_msg_mode_done_remain, _N("SILENT"), int8_t(print_percent_done_silent), print_time_remaining_silent, print_time_to_change_silent); + } break; } /*! diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e1d89c3fc..5ac1a0cc5 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -510,9 +510,9 @@ void lcdui_print_time(void) //if remaining print time estimation is available print it else print elapsed time int chars = 0; if (PRINTER_ACTIVE) { - uint16_t print_t = 0; - uint16_t print_tr = 0; - uint16_t print_tc = 0; + uint16_t print_t = PRINT_TIME_REMAINING_INIT; + uint16_t print_tr = PRINT_TIME_REMAINING_INIT; + uint16_t print_tc = PRINT_TIME_REMAINING_INIT; char suff = ' '; char suff_doubt = ' '; @@ -542,12 +542,12 @@ void lcdui_print_time(void) clock_interval++; - if (print_tc != 0 && clock_interval > CLOCK_INTERVAL_TIME) { + if (print_tc != PRINT_TIME_REMAINING_INIT && clock_interval > CLOCK_INTERVAL_TIME) { print_t = print_tc; suff = 'C'; } else //#endif //CLOCK_INTERVAL_TIME - if (print_tr != 0) { + if (print_tr != PRINT_TIME_REMAINING_INIT) { print_t = print_tr; suff = 'R'; } else