diff --git a/Marlin/src/lcd/extui/dgus/DGUSDisplay.h b/Marlin/src/lcd/extui/dgus/DGUSDisplay.h index 6329d8fb23..e54b916ec6 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSDisplay.h +++ b/Marlin/src/lcd/extui/dgus/DGUSDisplay.h @@ -68,18 +68,22 @@ public: static void writeVariable(uint16_t adr, int8_t value); static void writeVariable(uint16_t adr, long value); + // Western PROGMEM string constant static void writeStringVar_P(uint16_t adr, PGM_P const pstr, uint8_t vallen=32) { writeVariable_P(adr, (const void *)pstr, vallen, true); } + // Western F-string constant + static void writeVariable(uint16_t adr, FSTR_P const fstr, uint8_t vallen=32) { + writeStringVar_P(adr, FTOP(fstr), vallen); + } + // Western string constant static void writeStringVar(uint16_t adr, const char * const cstr, uint8_t vallen=32) { writeVariable(adr, (const void *)cstr, vallen, true); } + // Chinese string constant static void writeStringVar(uint16_t adr, const uint16_t * const zhstr, uint8_t vallen=16) { writeVariable(adr, (const void *)zhstr, vallen, true); } - static void writeVariable(uint16_t adr, FSTR_P const fstr, uint8_t vallen=32) { - writeStringVar_P(adr, FTOP(fstr), vallen); - } // Utility functions for bridging ui_api and dgus template diff --git a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp index e40aab0bff..38b3d93853 100644 --- a/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp @@ -326,9 +326,9 @@ void DGUSScreenHandler::sendHeaterStatusToDisplay(DGUS_VP_Variable &var) { void DGUSScreenHandler::sdCardError() { DGUSScreenHandler::sdCardRemoved(); #if DGUS_LCD_UI_MKS - screen.sendInfoScreenMKS(F("NOTICE"), nullptr, F("SD card error"), nullptr, mks_language_index); + sendInfoScreenMKS(F("NOTICE"), nullptr, F("SD card error"), nullptr, mks_language_index); #else - sendInfoScreen(F("NOTICE"), nullptr, F("SD card error"), nullptr, true, true, true, true); + sendInfoScreen(F("NOTICE"), nullptr, F("SD card error"), nullptr); #endif setupConfirmAction(nullptr); gotoScreen(DGUS_SCREEN_POPUP); diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index 662430ab79..2a9ba87d68 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -1525,7 +1525,7 @@ void DGUSScreenHandlerMKS::updateDisplayLanguage() { } break; // MKS_English case MKS_SimpleChinese: { - uint16_t home_buf_ch[] = { 0xF7D6, 0xB3D2 }; + const uint16_t home_buf_ch[] = { 0xF7D6, 0xB3D2 }; dgus.writeStringVar(VP_HOME_Dis, home_buf_ch, 4); const uint16_t Setting_Dis[] = { 0xE8C9, 0xC3D6, 0x2000, 0x2000, 0x2000 }; diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h index 58acb5fe60..01faed6896 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.h @@ -32,9 +32,14 @@ class DGUSScreenHandlerMKS : public DGUSScreenHandler { public: DGUSScreenHandlerMKS() = default; + // Western / Chinese PROGMEM strings + static void sendInfoScreen_P(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4); + + // Western / Chinese strings static void sendInfoScreen(const char *line1, const char *line2, const char *line3, const char *line4); static void sendInfoScreen(const uint16_t *line1, const uint16_t *line2, const uint16_t *line3, const uint16_t *line4); - static void sendInfoScreen_P(PGM_P const line1, PGM_P const line2, PGM_P const line3, PGM_P const line4); + + // Use the language parameter to choose Western / Chinese string method static void sendInfoScreenMKS(const void *line1, const void *line2, const void *line3, const void *line4, const MKS_Language language); static void screenBackChange(DGUS_VP_Variable &var, void *val_ptr);