mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2025-12-30 11:20:35 -07:00
update, revert
This commit is contained in:
parent
96fe24ed6f
commit
e5f1195e6f
2 changed files with 153 additions and 160 deletions
|
|
@ -56,8 +56,8 @@ public:
|
|||
#endif
|
||||
|
||||
static Flags<EXTRUDERS> retracted; // Which extruders are currently retracted
|
||||
static float current_retract[EXTRUDERS], // Retract value used by planner
|
||||
current_hop; // Hop value used by planner
|
||||
static float current_retract[EXTRUDERS]; // Retract value used by planner
|
||||
static float current_hop; // Hop value used by planner
|
||||
|
||||
FWRetract() { reset(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@
|
|||
#define UNITFDIGITS 1
|
||||
#define MINUNITMULT pow(10, UNITFDIGITS)
|
||||
|
||||
#define DWIN_VAR_UPDATE_INTERVAL 1024
|
||||
#define DWIN_VAR_UPDATE_INTERVAL 1000
|
||||
#define DWIN_SCROLL_UPDATE_INTERVAL SEC_TO_MS(2)
|
||||
#define DWIN_REMAIN_TIME_UPDATE_INTERVAL SEC_TO_MS(20)
|
||||
|
||||
|
|
@ -460,7 +460,7 @@ void drawBackFirst(const bool is_sel=true) {
|
|||
//
|
||||
#define CASE_BACK 0
|
||||
|
||||
#define MOTION_CASE_RATE 1
|
||||
#define MOTION_CASE_SPEED 1
|
||||
#define MOTION_CASE_ACCEL 2
|
||||
#define MOTION_CASE_JERK (MOTION_CASE_ACCEL + ENABLED(CLASSIC_JERK))
|
||||
#define MOTION_CASE_STEPS (MOTION_CASE_JERK + 1)
|
||||
|
|
@ -723,7 +723,7 @@ void itemPrepareLang(const uint8_t row) {
|
|||
itemAreaCopy(239, 134, 266, 146, row);
|
||||
else {
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(row, F("UI Language"));
|
||||
dwinDrawLabel(row, GET_TEXT_F(MSG_UI_LANGUAGE));
|
||||
#else
|
||||
itemAreaCopy(1, 194, 96, 206, row); // "LCD Language"
|
||||
#endif
|
||||
|
|
@ -1003,7 +1003,7 @@ void drawMotionMenu() {
|
|||
|
||||
if (hmiIsChinese()) {
|
||||
dwinFrameTitleCopy(1, 16, 28, 13); // "Motion"
|
||||
itemAreaCopy(173, 133, 228, 147, MOTION_CASE_RATE); // Max speed
|
||||
itemAreaCopy(173, 133, 228, 147, MOTION_CASE_SPEED); // Max speed
|
||||
itemAreaCopy(173, 133, 200, 147, MOTION_CASE_ACCEL); // Max...
|
||||
itemAreaCopy(28, 149, 69, 161, MOTION_CASE_ACCEL, 30, 1); // ...Acceleration
|
||||
#if ENABLED(CLASSIC_JERK)
|
||||
|
|
@ -1020,14 +1020,14 @@ void drawMotionMenu() {
|
|||
dwinFrameTitleCopy(144, 16, 46, 11); // "Motion"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(MOTION_CASE_RATE, F("Feedrate")); // "Feedrate"
|
||||
dwinDrawLabel(MOTION_CASE_SPEED, GET_TEXT_F(MSG_SPEED)); // "Speed"
|
||||
dwinDrawLabel(MOTION_CASE_ACCEL, GET_TEXT_F(MSG_ACCELERATION)); // "Acceleration"
|
||||
#if ENABLED(CLASSIC_JERK)
|
||||
dwinDrawLabel(MOTION_CASE_JERK, GET_TEXT_F(MSG_JERK)); // "Jerk"
|
||||
#endif
|
||||
dwinDrawLabel(MOTION_CASE_STEPS, GET_TEXT_F(MSG_STEPS_PER_MM)); // "Steps/mm"
|
||||
#else
|
||||
say_max_en(MOTION_CASE_RATE); say_speed_en(30, MOTION_CASE_RATE); // "Max Speed"
|
||||
say_max_en(MOTION_CASE_SPEED); say_speed_en(30, MOTION_CASE_SPEED); // "Max Speed"
|
||||
say_max_accel_en(MOTION_CASE_ACCEL); // "Max Acceleration"
|
||||
#if ENABLED(CLASSIC_JERK)
|
||||
say_max_en(MOTION_CASE_JERK); say_jerk_en(MOTION_CASE_JERK); // "Max Jerk"
|
||||
|
|
@ -1041,7 +1041,7 @@ void drawMotionMenu() {
|
|||
|
||||
uint8_t i = 0;
|
||||
#define _MOTION_ICON(N) drawMenuLine(++i, ICON_MaxSpeed + (N) - 1)
|
||||
_MOTION_ICON(MOTION_CASE_RATE); drawMoreIcon(i);
|
||||
_MOTION_ICON(MOTION_CASE_SPEED); drawMoreIcon(i);
|
||||
_MOTION_ICON(MOTION_CASE_ACCEL); drawMoreIcon(i);
|
||||
#if ENABLED(CLASSIC_JERK)
|
||||
_MOTION_ICON(MOTION_CASE_JERK); drawMoreIcon(i);
|
||||
|
|
@ -1058,28 +1058,23 @@ void drawMotionMenu() {
|
|||
void dwinPopupTemperature(const bool toohigh) {
|
||||
clearPopupArea();
|
||||
drawPopupBkgd105();
|
||||
if (toohigh) {
|
||||
dwinIconShow(ICON, ICON_TempTooHigh, 100, 165);
|
||||
if (hmiIsChinese()) {
|
||||
dwinIconShow(ICON, toohigh ? ICON_TempTooHigh : ICON_TempTooLow, 100, 105);
|
||||
if (hmiIsChinese()) {
|
||||
if (toohigh) {
|
||||
dwinFrameAreaCopy(1, 103, 371, 237, 386, 52, 285); // Temp Too High
|
||||
dwinFrameAreaCopy(1, 151, 389, 185, 402, 187, 285);
|
||||
dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310);
|
||||
}
|
||||
else {
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 13) / 2, 300, F("Nozzle or Bed"));
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 20) / 2, 300, GET_TEXT_F(MSG_TEMP_TOO_HIGH));
|
||||
}
|
||||
}
|
||||
else {
|
||||
dwinIconShow(ICON, ICON_TempTooLow, 100, 165);
|
||||
if (hmiIsChinese()) {
|
||||
dwinFrameAreaCopy(1, 103, 371, 270, 386, 52, 285); // Tenp Too Low
|
||||
dwinFrameAreaCopy(1, 189, 389, 271, 402, 95, 310);
|
||||
}
|
||||
else {
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 13) / 2, 300, F("Nozzle or Bed"));
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 19) / 2, 300, GET_TEXT_F(MSG_TEMP_TOO_LOW));
|
||||
}
|
||||
dwinIconShow(ICON, ICON_Confirm_C, 86, 280);
|
||||
}
|
||||
else {
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 13) / 2, 300, F("Nozzle or Bed"));
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, (DWIN_WIDTH - MENU_CHR_W * 19) / 2, 300, toohigh ? GET_TEXT_F(MSG_TEMP_TOO_HIGH) : GET_TEXT_F(MSG_TEMP_TOO_LOW));
|
||||
dwinIconShow(ICON, ICON_Confirm_E, 86, 280);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1090,7 +1085,7 @@ void drawMotionMenu() {
|
|||
void popupWindowETempTooLow() {
|
||||
clearMainWindow();
|
||||
drawPopupBkgd60();
|
||||
dwinIconShow(ICON, ICON_TempTooLow, 100, 105);
|
||||
dwinIconShow(ICON, ICON_TempTooLow, 102, 105);
|
||||
if (hmiIsChinese()) {
|
||||
dwinFrameAreaCopy(1, 103, 371, 136, 386, 69, 240); // Nozzle Too Cold
|
||||
dwinFrameAreaCopy(1, 170, 371, 270, 386, 69 + 33, 240);
|
||||
|
|
@ -1192,9 +1187,18 @@ void drawPrintingScreen() {
|
|||
dwinFrameAreaCopy(1, 65, 72, 128, 86, 178, y); // "Remain"
|
||||
}
|
||||
else {
|
||||
dwinFrameTitleCopy(42, 0, 47, 14); // "Printing"
|
||||
dwinFrameAreaCopy(1, 1, 43, 97, 59, 43, y); // "Printing Time"
|
||||
dwinFrameAreaCopy(1, 100, 43, 152, 56, 178, y); // "Remain"
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
drawTitle(GET_TEXT_F(MSG_PRINTING));
|
||||
#else
|
||||
dwinFrameTitleCopy(42, 0, 47, 14); // "Printing"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 43, y, GET_TEXT_F(MSG_INFO_PRINT_TIME));
|
||||
dwinDrawString(false, font8x16, COLOR_WHITE, COLOR_BG_BLACK, 178, y, GET_TEXT_F(MSG_REMAINING_TIME));
|
||||
#else
|
||||
dwinFrameAreaCopy(1, 1, 43, 97, 59, 43, y); // "Printing Time"
|
||||
dwinFrameAreaCopy(1, 100, 43, 152, 56, 178, y); // "Remain"
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2487,7 +2491,7 @@ void itemAdvHotendPID(const uint8_t row) {
|
|||
}
|
||||
else {
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(row, F("Hotend PID"));
|
||||
dwinDrawLabel(row, F(STR_HOTEND_PID));
|
||||
#else
|
||||
itemAreaCopy(96, 104, 167, 114, row); // "Hotend PID"
|
||||
#endif
|
||||
|
|
@ -2501,7 +2505,7 @@ void itemAdvBedPID(const uint8_t row) {
|
|||
}
|
||||
else {
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(row, F("Bed PID"));
|
||||
dwinDrawLabel(row, F(STR_BED_PID));
|
||||
#else
|
||||
itemAreaCopy(241, 104, 263, 115, row); // "Bed"
|
||||
itemAreaCopy(145, 104, 167, 114, row, 27); // "PID"
|
||||
|
|
@ -2832,7 +2836,7 @@ void drawTemperatureMenu() {
|
|||
dwinDrawLabel(TEMP_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED));
|
||||
#endif
|
||||
#if HAS_PREHEAT
|
||||
dwinDrawLabel(TEMP_CASE_PLA, F(PREHEAT_1_LABEL " Preheat Settings"));
|
||||
dwinDrawLabel(TEMP_CASE_PLA, GET_TEXT_F(MSG_PREHEAT_1_SETTINGS));
|
||||
#if PREHEAT_COUNT > 1
|
||||
dwinDrawLabel(TEMP_CASE_ABS, F(PREHEAT_2_LABEL " Preheat Settings"));
|
||||
#endif
|
||||
|
|
@ -3144,9 +3148,9 @@ void hmiTemperature() {
|
|||
dwinFrameTitleCopy(56, 15, 85, 14); // "Temperature" TODO: "PLA Settings"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(PREHEAT_CASE_TEMP, F("Nozzle Temp"));
|
||||
dwinDrawLabel(PREHEAT_CASE_TEMP, GET_TEXT_F(MSG_TEMP_NOZZLE));
|
||||
#if HAS_HEATED_BED
|
||||
dwinDrawLabel(PREHEAT_CASE_BED, F("Bed Temp"));
|
||||
dwinDrawLabel(PREHEAT_CASE_BED, GET_TEXT_F(MSG_TEMP_BED));
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
dwinDrawLabel(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED));
|
||||
|
|
@ -3220,14 +3224,14 @@ void hmiTemperature() {
|
|||
}
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
drawTitle(F("ABS Settings")); // TODO: GET_TEXT_F
|
||||
drawTitle(F(PREHEAT_1_LABEL " Settings")); // TODO: GET_TEXT_F
|
||||
#else
|
||||
dwinFrameTitleCopy(56, 15, 85, 14); // "Temperature" TODO: "ABS Settings"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(PREHEAT_CASE_TEMP, F("Nozzle Temp"));
|
||||
dwinDrawLabel(PREHEAT_CASE_TEMP, GET_TEXT_F(MSG_TEMP_NOZZLE));
|
||||
#if HAS_HEATED_BED
|
||||
dwinDrawLabel(PREHEAT_CASE_BED, F("Bed Temp"));
|
||||
dwinDrawLabel(PREHEAT_CASE_BED, GET_TEXT_F(MSG_TEMP_BED));
|
||||
#endif
|
||||
#if HAS_FAN
|
||||
dwinDrawLabel(PREHEAT_CASE_FAN, GET_TEXT_F(MSG_FAN_SPEED));
|
||||
|
|
@ -3303,16 +3307,16 @@ void drawMaxSpeedMenu() {
|
|||
}
|
||||
else {
|
||||
#ifdef USE_STRING_HEADINGS
|
||||
drawTitle(F("Max Speed (mm/s)")); // TODO: GET_TEXT_F
|
||||
drawTitle(GET_TEXT_F(MSG_MAX_SPEED));
|
||||
#else
|
||||
dwinFrameTitleCopy(144, 16, 46, 11); // "Max Speed (mm/s)"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(1, F("Max Feedrate X"));
|
||||
dwinDrawLabel(2, F("Max Feedrate Y"));
|
||||
dwinDrawLabel(3, F("Max Feedrate Z"));
|
||||
dwinDrawLabel(1, GET_TEXT_F(MSG_VMAX_A));
|
||||
dwinDrawLabel(2, GET_TEXT_F(MSG_VMAX_B));
|
||||
dwinDrawLabel(3, GET_TEXT_F(MSG_VMAX_C));
|
||||
#if HAS_HOTEND
|
||||
dwinDrawLabel(4, F("Max Feedrate E"));
|
||||
dwinDrawLabel(4, GET_TEXT_F(MSG_VMAX_E));
|
||||
#endif
|
||||
#else
|
||||
say_max_en(1); say_speed_en(30, 1); say_x_en(73, 1); // "Max Speed X"
|
||||
|
|
@ -3362,11 +3366,11 @@ void drawMaxAccelMenu() {
|
|||
dwinFrameTitleCopy(144, 16, 46, 11); // "Acceleration"
|
||||
#endif
|
||||
#ifdef USE_STRING_TITLES
|
||||
dwinDrawLabel(1, F("Max Accel X"));
|
||||
dwinDrawLabel(2, F("Max Accel Y"));
|
||||
dwinDrawLabel(3, F("Max Accel Z"));
|
||||
dwinDrawLabel(1, F(MSG_AMAX_A));
|
||||
dwinDrawLabel(2, F(MSG_AMAX_B));
|
||||
dwinDrawLabel(3, F(MSG_AMAX_C));
|
||||
#if HAS_HOTEND
|
||||
dwinDrawLabel(4, F("Max Accel E"));
|
||||
dwinDrawLabel(4, F(MSG_AMAX_E));
|
||||
#endif
|
||||
#else
|
||||
say_max_accel_en(1); say_x_en(112, 1); // "Max Acceleration X"
|
||||
|
|
@ -3518,7 +3522,7 @@ void hmiMotion() {
|
|||
index_control = MROWS;
|
||||
drawControlMenu();
|
||||
break;
|
||||
case MOTION_CASE_RATE:
|
||||
case MOTION_CASE_SPEED:
|
||||
checkkey = ID_MaxSpeed;
|
||||
select_speed.reset();
|
||||
drawMaxSpeedMenu();
|
||||
|
|
@ -3999,7 +4003,7 @@ void hmiMaxSpeed() {
|
|||
}
|
||||
else { // Back
|
||||
checkkey = ID_Motion;
|
||||
select_motion.now = MOTION_CASE_RATE;
|
||||
select_motion.now = MOTION_CASE_SPEED;
|
||||
drawMotionMenu();
|
||||
}
|
||||
}
|
||||
|
|
@ -4123,130 +4127,119 @@ void eachMomentUpdate() {
|
|||
updateVariable();
|
||||
}
|
||||
|
||||
if (PENDING(ms, next_rts_update_ms)) return;
|
||||
next_rts_update_ms = ms + DWIN_SCROLL_UPDATE_INTERVAL;
|
||||
|
||||
if (checkkey == ID_PrintProcess) {
|
||||
// if print done
|
||||
if (hmiFlag.print_finish && !hmiFlag.done_confirm_flag) {
|
||||
hmiFlag.print_finish = false;
|
||||
hmiFlag.done_confirm_flag = true;
|
||||
|
||||
TERN_(POWER_LOSS_RECOVERY, recovery.cancel());
|
||||
|
||||
planner.finish_and_disable();
|
||||
|
||||
// show percent bar and value
|
||||
_card_percent = 0;
|
||||
drawPrintProgressBar();
|
||||
|
||||
// show print done confirm
|
||||
dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 250, DWIN_WIDTH - 1, STATUS_Y);
|
||||
dwinIconShow(ICON, hmiIsChinese() ? ICON_Confirm_C : ICON_Confirm_E, 86, 283);
|
||||
}
|
||||
else if (hmiFlag.pause_flag != printingIsPaused()) {
|
||||
// print status update
|
||||
hmiFlag.pause_flag = printingIsPaused();
|
||||
iconResumeOrPause();
|
||||
}
|
||||
}
|
||||
|
||||
// pause after homing
|
||||
if (hmiFlag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
|
||||
hmiFlag.pause_action = false;
|
||||
#if ENABLED(PAUSE_HEAT)
|
||||
TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0));
|
||||
TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.degTargetBed());
|
||||
thermalManager.disable_all_heaters();
|
||||
#endif
|
||||
queue.inject(F("G1 F1200 X0 Y0"));
|
||||
}
|
||||
|
||||
if (card.isPrinting() && checkkey == ID_PrintProcess) { // Print process
|
||||
const uint8_t card_pct = card.percentDone();
|
||||
static uint8_t last_cardpercentValue = 101;
|
||||
if (last_cardpercentValue != card_pct) { // print percent
|
||||
last_cardpercentValue = card_pct;
|
||||
if (card_pct) {
|
||||
_card_percent = card_pct;
|
||||
if (!PENDING(ms, next_rts_update_ms)) {
|
||||
next_rts_update_ms = ms + DWIN_SCROLL_UPDATE_INTERVAL;
|
||||
if (checkkey == ID_PrintProcess) {
|
||||
// If print done
|
||||
if (hmiFlag.print_finish && !hmiFlag.done_confirm_flag) {
|
||||
hmiFlag.print_finish = false;
|
||||
hmiFlag.done_confirm_flag = true;
|
||||
TERN_(POWER_LOSS_RECOVERY, recovery.cancel());
|
||||
planner.finish_and_disable();
|
||||
// show percent bar and value
|
||||
_card_percent = 0;
|
||||
drawPrintProgressBar();
|
||||
// Show print done confirm
|
||||
dwinDrawRectangle(1, COLOR_BG_BLACK, 0, 250, DWIN_WIDTH - 1, STATUS_Y);
|
||||
dwinIconShow(ICON, hmiIsChinese() ? ICON_Confirm_C : ICON_Confirm_E, 86, 283);
|
||||
}
|
||||
else if (hmiFlag.pause_flag != printingIsPaused()) {
|
||||
// Print status update
|
||||
hmiFlag.pause_flag = printingIsPaused();
|
||||
iconResumeOrPause();
|
||||
}
|
||||
}
|
||||
|
||||
duration_t elapsed = print_job_timer.duration(); // Print timer
|
||||
|
||||
// Print time so far
|
||||
static uint16_t last_Printtime = 0;
|
||||
const uint16_t min = (elapsed.value % 3600) / 60;
|
||||
if (last_Printtime != min) { // 1 minute update
|
||||
last_Printtime = min;
|
||||
drawPrintProgressElapsed();
|
||||
// Pause after homing
|
||||
if (hmiFlag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
|
||||
hmiFlag.pause_action = false;
|
||||
#if ENABLED(PAUSE_HEAT)
|
||||
TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.degTargetHotend(0));
|
||||
TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.degTargetBed());
|
||||
thermalManager.disable_all_heaters();
|
||||
#endif
|
||||
queue.inject(F("G1 F1200 X0 Y0"));
|
||||
}
|
||||
|
||||
// Estimate remaining time every 20 seconds
|
||||
static millis_t next_remain_time_update = 0;
|
||||
if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !hmiFlag.heat_flag) {
|
||||
_remain_time = (elapsed.value - dwin_heat_time) / (_card_percent * 0.01f) - (elapsed.value - dwin_heat_time);
|
||||
next_remain_time_update += DWIN_REMAIN_TIME_UPDATE_INTERVAL;
|
||||
drawPrintProgressRemain();
|
||||
}
|
||||
}
|
||||
else if (dwin_abort_flag && !hmiFlag.home_flag) { // Print Stop
|
||||
dwin_abort_flag = false;
|
||||
hmiValues.printSpeed = feedrate_percentage = 100;
|
||||
dwin_zoffset = BABY_Z_VAR;
|
||||
select_page.set(0);
|
||||
gotoMainMenu();
|
||||
}
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
else if (DWIN_lcd_sd_status && recovery.ui_flag_resume) { // Resume interrupted print
|
||||
recovery.ui_flag_resume = false;
|
||||
|
||||
auto update_selection = [&](const bool sel) {
|
||||
hmiFlag.select_flag = sel;
|
||||
const uint16_t c1 = sel ? COLOR_BG_WINDOW : COLOR_SELECT;
|
||||
dwinDrawRectangle(0, c1, 25, 306, 126, 345);
|
||||
dwinDrawRectangle(0, c1, 24, 305, 127, 346);
|
||||
const uint16_t c2 = sel ? COLOR_SELECT : COLOR_BG_WINDOW;
|
||||
dwinDrawRectangle(0, c2, 145, 306, 246, 345);
|
||||
dwinDrawRectangle(0, c2, 144, 305, 247, 346);
|
||||
};
|
||||
|
||||
popupWindowResume();
|
||||
update_selection(true);
|
||||
|
||||
char * const name = card.longest_filename();
|
||||
const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * (MENU_CHR_W)) / 2;
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, npos, 252, name);
|
||||
dwinUpdateLCD();
|
||||
|
||||
bool recovery_flag = true;
|
||||
while (recovery_flag) {
|
||||
EncoderState encoder_diffState = encoderReceiveAnalyze();
|
||||
if (encoder_diffState != ENCODER_DIFF_NO) {
|
||||
if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
recovery_flag = false;
|
||||
if (hmiFlag.select_flag) break;
|
||||
queue.inject(F("M1000C"));
|
||||
hmiStartFrame(true);
|
||||
return;
|
||||
}
|
||||
else
|
||||
update_selection(encoder_diffState == ENCODER_DIFF_CW);
|
||||
|
||||
dwinUpdateLCD();
|
||||
if (card.isPrinting() && checkkey == ID_PrintProcess) { // Print process
|
||||
const uint8_t card_pct = card.percentDone();
|
||||
static uint8_t last_cardpercentValue = 101;
|
||||
if (last_cardpercentValue != card_pct) { // Print percent
|
||||
last_cardpercentValue = card_pct;
|
||||
if (card_pct) {
|
||||
_card_percent = card_pct;
|
||||
drawPrintProgressBar();
|
||||
}
|
||||
}
|
||||
|
||||
select_print.set(0);
|
||||
hmiValues.show_mode = 0;
|
||||
queue.inject(F("M1000"));
|
||||
gotoPrintProcess();
|
||||
drawStatusArea(true);
|
||||
}
|
||||
#endif // POWER_LOSS_RECOVERY
|
||||
// Print time so far
|
||||
duration_t elapsed = print_job_timer.duration();
|
||||
static uint16_t last_Printtime = 0;
|
||||
const uint16_t min = (elapsed.value % 3600) / 60;
|
||||
if (last_Printtime != min) { // 1 minute update
|
||||
last_Printtime = min;
|
||||
drawPrintProgressElapsed();
|
||||
}
|
||||
|
||||
dwinUpdateLCD();
|
||||
// Estimate remaining time every 20 seconds
|
||||
static millis_t next_remain_time_update = 0;
|
||||
if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !hmiFlag.heat_flag) {
|
||||
_remain_time = (elapsed.value - dwin_heat_time) / (_card_percent * 0.01f) - (elapsed.value - dwin_heat_time);
|
||||
next_remain_time_update += DWIN_REMAIN_TIME_UPDATE_INTERVAL;
|
||||
drawPrintProgressRemain();
|
||||
}
|
||||
}
|
||||
else if (dwin_abort_flag && !hmiFlag.home_flag) { // Print Stop
|
||||
dwin_abort_flag = false;
|
||||
hmiValues.printSpeed = feedrate_percentage = 100;
|
||||
dwin_zoffset = BABY_Z_VAR;
|
||||
select_page.set(0);
|
||||
gotoMainMenu();
|
||||
}
|
||||
#if ENABLED(POWER_LOSS_RECOVERY)
|
||||
else if (DWIN_lcd_sd_status && recovery.ui_flag_resume) { // Resume interrupted print
|
||||
recovery.ui_flag_resume = false;
|
||||
auto update_selection = [&](const bool sel) {
|
||||
hmiFlag.select_flag = sel;
|
||||
const uint16_t c1 = sel ? COLOR_BG_WINDOW : COLOR_SELECT;
|
||||
dwinDrawRectangle(0, c1, 25, 306, 126, 345);
|
||||
dwinDrawRectangle(0, c1, 24, 305, 127, 346);
|
||||
const uint16_t c2 = sel ? COLOR_SELECT : COLOR_BG_WINDOW;
|
||||
dwinDrawRectangle(0, c2, 145, 306, 246, 345);
|
||||
dwinDrawRectangle(0, c2, 144, 305, 247, 346);
|
||||
};
|
||||
popupWindowResume();
|
||||
update_selection(true);
|
||||
char * const name = card.longest_filename();
|
||||
const int8_t npos = _MAX(0U, DWIN_WIDTH - strlen(name) * (MENU_CHR_W)) / 2;
|
||||
dwinDrawString(true, font8x16, COLOR_POPUP_TEXT, COLOR_BG_WINDOW, npos, 252, name);
|
||||
dwinUpdateLCD();
|
||||
bool recovery_flag = true;
|
||||
while (recovery_flag) {
|
||||
EncoderState encoder_diffState = encoderReceiveAnalyze();
|
||||
if (encoder_diffState != ENCODER_DIFF_NO) {
|
||||
if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
||||
recovery_flag = false;
|
||||
if (hmiFlag.select_flag) break;
|
||||
queue.inject(F("M1000C"));
|
||||
hmiStartFrame(true);
|
||||
return;
|
||||
}
|
||||
else
|
||||
update_selection(encoder_diffState == ENCODER_DIFF_CW);
|
||||
dwinUpdateLCD();
|
||||
}
|
||||
}
|
||||
select_print.set(0);
|
||||
hmiValues.show_mode = 0;
|
||||
queue.inject(F("M1000"));
|
||||
gotoPrintProcess();
|
||||
drawStatusArea(true);
|
||||
}
|
||||
#endif // POWER_LOSS_RECOVERY
|
||||
|
||||
dwinUpdateLCD();
|
||||
}
|
||||
}
|
||||
|
||||
void dwinHandleScreen() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue