diff --git a/Marlin/src/lcd/anycubic_touchscreen.cpp b/Marlin/src/lcd/anycubic_touchscreen.cpp index 718bd63b..0384b5c0 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.cpp +++ b/Marlin/src/lcd/anycubic_touchscreen.cpp @@ -57,6 +57,8 @@ int PowerInt = 6; unsigned char PowerTestFlag = false; #endif +#define MAX_PRINTABLE_FILENAME_LEN 21 + void setup_OutageTestPin() { #if defined(POWER_OUTAGE_TEST) @@ -522,14 +524,14 @@ void AnycubicTouchscreenClass::HandleSpecialMenu() SERIAL_ECHOLNPGM("Special Menu: Z Down 0.01"); queue.inject_P(PSTR("G91\nG1 Z-0.01\nG90")); } - else if (strcmp(SelectedDirectory, "") == 0) + else if (strcmp(SelectedDirectory, "") == 0) { - SERIAL_ECHOLNPGM("Special Menu: FilamentChange Pause"); + SERIAL_ECHOLNPGM("Special Menu: Fil. Change Pause"); FilamentChangePause(); } - else if (strcmp(SelectedDirectory, "") == 0) + else if (strcmp(SelectedDirectory, "") == 0) { - SERIAL_ECHOLNPGM("Special Menu: FilamentChange Resume"); + SERIAL_ECHOLNPGM("Special Menu: Fil. Change Resume"); FilamentChangeResume(); } else if (strcmp(SelectedDirectory, "") == 0) @@ -564,10 +566,10 @@ void AnycubicTouchscreenClass::Ls() HARDWARE_SERIAL_PROTOCOLLNPGM(""); HARDWARE_SERIAL_PROTOCOLLNPGM(""); HARDWARE_SERIAL_PROTOCOLLNPGM(""); - HARDWARE_SERIAL_PROTOCOLLNPGM(""); - HARDWARE_SERIAL_PROTOCOLLNPGM(""); - HARDWARE_SERIAL_PROTOCOLLNPGM(""); - HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); + HARDWARE_SERIAL_PROTOCOLLNPGM(""); break; case 4: // Page 2 @@ -626,8 +628,8 @@ void AnycubicTouchscreenClass::Ls() */ default: - HARDWARE_SERIAL_PROTOCOLLNPGM(""); - HARDWARE_SERIAL_PROTOCOLLNPGM(""); + //HARDWARE_SERIAL_PROTOCOLLNPGM(""); + //HARDWARE_SERIAL_PROTOCOLLNPGM(""); break; } } @@ -674,6 +676,12 @@ void AnycubicTouchscreenClass::Ls() // Bugfix for non-printable special characters // which are now replaced by underscores. int fileNameLen = strlen(card.longFilename); + + // Cut off too long filenames. + // They don't fit on the screen anyways. + if(fileNameLen > MAX_PRINTABLE_FILENAME_LEN) + fileNameLen = MAX_PRINTABLE_FILENAME_LEN; + char buffer[fileNameLen]; for (unsigned char i = 0; i < fileNameLen; i++)