diff --git a/Marlin/macros.h b/Marlin/macros.h index 0fb057441d..c37416b47f 100644 --- a/Marlin/macros.h +++ b/Marlin/macros.h @@ -127,6 +127,7 @@ #define DECIMAL(a) (NUMERIC(a) || a == '.') #define NUMERIC_SIGNED(a) (NUMERIC(a) || (a) == '-' || (a) == '+') #define DECIMAL_SIGNED(a) (DECIMAL(a) || (a) == '-' || (a) == '+') +#define PRINTABLE(C) (((C) & 0xC0u) != 0x80u) #define COUNT(a) (sizeof(a)/sizeof(*a)) #define ZERO(a) memset(a,0,sizeof(a)) #define COPY(a,b) memcpy(a,b,min(sizeof(a),sizeof(b))) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index e5eebff052..cd17014816 100755 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -3814,7 +3814,7 @@ int lcd_strlen(const char* s) { #if ENABLED(MAPPER_NON) j++; #else - if ((s[i] & 0xC0u) != 0x80u) j++; + if (PRINTABLE(s[i])) j++; #endif i++; } @@ -3827,7 +3827,7 @@ int lcd_strlen_P(const char* s) { #if ENABLED(MAPPER_NON) j++; #else - if ((pgm_read_byte(s) & 0xC0u) != 0x80u) j++; + if (PRINTABLE(pgm_read_byte(s))) j++; #endif s++; } @@ -4096,7 +4096,7 @@ void lcd_update() { #if ENABLED(MAPPER_NON) j++; #else - if ((s[i] & 0xC0u) != 0x80u) j++; + if (PRINTABLE(s[i])) j++; #endif i++; } diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h index ac6fedabba..c7c5eb3091 100644 --- a/Marlin/ultralcd_impl_DOGM.h +++ b/Marlin/ultralcd_impl_DOGM.h @@ -412,7 +412,7 @@ inline void lcd_implementation_status_message() { const uint8_t slen = lcd_strlen(lcd_status_message); if (slen > LCD_WIDTH) { // Skip any non-printing bytes - while (!charset_mapper(lcd_status_message[status_scroll_pos])) ++status_scroll_pos; + while (!PRINTABLE(lcd_status_message[status_scroll_pos])) ++status_scroll_pos; if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0; } #else diff --git a/Marlin/ultralcd_impl_HD44780.h b/Marlin/ultralcd_impl_HD44780.h index d650890d50..6c7389571b 100644 --- a/Marlin/ultralcd_impl_HD44780.h +++ b/Marlin/ultralcd_impl_HD44780.h @@ -831,7 +831,7 @@ static void lcd_implementation_status_screen() { const uint8_t slen = lcd_strlen(lcd_status_message); if (slen > LCD_WIDTH) { // Skip any non-printing bytes - while (!charset_mapper(lcd_status_message[status_scroll_pos])) ++status_scroll_pos; + while (!PRINTABLE(lcd_status_message[status_scroll_pos])) ++status_scroll_pos; if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0; } #else