diff --git a/Marlin/src/lcd/anycubic_touchscreen.cpp b/Marlin/src/lcd/anycubic_touchscreen.cpp index 4c3d84d0..d5afbea6 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.cpp +++ b/Marlin/src/lcd/anycubic_touchscreen.cpp @@ -123,10 +123,9 @@ void AnycubicTouchscreenClass::Setup() pinMode(SD_DETECT_PIN, INPUT); WRITE(SD_DETECT_PIN, HIGH); #endif - -#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) pinMode(19, INPUT); WRITE(19, HIGH); +#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) if ((READ(19) == true) && FilamentSensorEnabled) { HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK @@ -549,56 +548,56 @@ void AnycubicTouchscreenClass::PrintList() switch (filenumber) { case 0: // Page 1 - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); break; case 4: // Page 2 - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); break; case 8: // Page 3 - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); break; case 12: // Page 4 - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); break; case 16: // Page 5 - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); break; default: @@ -609,7 +608,7 @@ void AnycubicTouchscreenClass::PrintList() else if (card.isMounted()) { uint16_t count = filenumber; - uint16_t max_files; + uint16_t max_files = 0; uint16_t dir_files = card.countFilesInWorkDir(); // What is this shit? What if there are exactely 3 files+folders? @@ -629,15 +628,15 @@ void AnycubicTouchscreenClass::PrintList() { if (strcmp(card.getWorkDirName(), "/") == 0) { - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + HARDWARE_SERIAL_PROTOCOLLN(".gcode"); SERIAL_ECHO(count); SERIAL_ECHOLNPGM(": .gcode"); } else { - HARDWARE_SERIAL_PROTOCOLLNPGM("DIR_UP.gcode"); - HARDWARE_SERIAL_PROTOCOLLNPGM("DIR_UP.gcode"); + HARDWARE_SERIAL_PROTOCOLLN("DIR_UP.gcode"); + HARDWARE_SERIAL_PROTOCOLLN("DIR_UP.gcode"); SERIAL_ECHO(count); SERIAL_ECHOLNPGM(": DIR_UP.gcode"); } @@ -672,18 +671,24 @@ void AnycubicTouchscreenClass::PrintList() } } } + outputString[fileNameLen] = '\0'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 6] = '.'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 5] = 'g'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 4] = 'c'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 3] = 'o'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 2] = 'd'; - outputString[MAX_PRINTABLE_FILENAME_LEN - 1] = 'e'; - outputString[MAX_PRINTABLE_FILENAME_LEN] = '\0'; + if (strcasestr(outputString, ".gcode") == NULL) { + outputString[MAX_PRINTABLE_FILENAME_LEN - 7] = '.'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 6] = 'g'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 5] = 'c'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 4] = 'o'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 3] = 'd'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 2] = 'e'; + outputString[MAX_PRINTABLE_FILENAME_LEN - 1] = '\0'; + } + + if (card.flag.filenameIsDir) { + /* HARDWARE_SERIAL_PROTOCOLPGM("/"); HARDWARE_SERIAL_PROTOCOLLN(card.filename); HARDWARE_SERIAL_PROTOCOLPGM("/"); @@ -691,6 +696,7 @@ void AnycubicTouchscreenClass::PrintList() SERIAL_ECHO(count); SERIAL_ECHOPGM(": /"); SERIAL_ECHOLN(outputString); + */ } else { @@ -706,8 +712,8 @@ void AnycubicTouchscreenClass::PrintList() #endif else { - //HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); - //HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode"); + //HARDWARE_SERIAL_PROTOCOLLN(".gcode"); + //HARDWARE_SERIAL_PROTOCOLLN(".gcode"); } } diff --git a/Marlin/src/lcd/anycubic_touchscreen.h b/Marlin/src/lcd/anycubic_touchscreen.h index 7763d811..0d5a1bc3 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.h +++ b/Marlin/src/lcd/anycubic_touchscreen.h @@ -115,7 +115,7 @@ private: void ReheatNozzle(); void ParkAfterStop(); - char currentTouchscreenSelection[64]; + char currentTouchscreenSelection[30]; char currentFileOrDirectory[30]; uint8_t SpecialMenu = false; uint8_t FilamentSensorEnabled = true;