From c88389506ff52cf0d8f2476198e97058b0723f10 Mon Sep 17 00:00:00 2001 From: Knutwurst <36196269+knutwurst@users.noreply.github.com> Date: Wed, 3 Jun 2020 11:29:32 +0200 Subject: [PATCH] Better handling of characters, which are not printable on the Touchscreen. --- Marlin/src/lcd/anycubic_touchscreen.cpp | 62 +++++++++---------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/Marlin/src/lcd/anycubic_touchscreen.cpp b/Marlin/src/lcd/anycubic_touchscreen.cpp index 96e2f6d9..2c5139c2 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.cpp +++ b/Marlin/src/lcd/anycubic_touchscreen.cpp @@ -598,55 +598,35 @@ void AnycubicTouchscreenClass::Ls() { card.selectFileByIndex(cnt - 1); - bool hasInvalidCharacter = false; + int fileNameLen = strlen(card.longFilename); + char buffer[fileNameLen]; - for (unsigned char currentChar = 0; currentChar < strlen(card.longFilename); currentChar++) - if (!isPrintable(card.longFilename[currentChar])) - { - hasInvalidCharacter = true; - break; + for (unsigned char i = 0; i < fileNameLen; i++){ + buffer[i] = card.longFilename[i]; + if (!isPrintable(buffer[i])) + { + buffer[i] = '_'; + } } - + buffer[fileNameLen] = '\0'; + if (card.flag.filenameIsDir) { - if(hasInvalidCharacter) - { - ANYCUBIC_SERIAL_PROTOCOLPGM("/"); - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - ANYCUBIC_SERIAL_PROTOCOLPGM("/"); - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - SERIAL_ECHO(cnt); - SERIAL_ECHOPGM("/"); - SERIAL_ECHOLN(card.filename); - } - else - { - ANYCUBIC_SERIAL_PROTOCOLPGM("/"); - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - ANYCUBIC_SERIAL_PROTOCOLPGM("/"); - ANYCUBIC_SERIAL_PROTOCOLLN(card.longFilename); - SERIAL_ECHO(cnt); - SERIAL_ECHOPGM("/"); - SERIAL_ECHOLN(card.longFilename); - } + ANYCUBIC_SERIAL_PROTOCOLPGM("/"); + ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); + ANYCUBIC_SERIAL_PROTOCOLPGM("/"); + ANYCUBIC_SERIAL_PROTOCOLLN(buffer); + SERIAL_ECHO(cnt); + SERIAL_ECHOPGM("/"); + SERIAL_ECHOLN(buffer); } else { - if(hasInvalidCharacter) - { - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - SERIAL_ECHO(cnt); - SERIAL_ECHOLN(card.filename); - } - else - { - ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); - ANYCUBIC_SERIAL_PROTOCOLLN(card.longFilename); - SERIAL_ECHO(cnt); - SERIAL_ECHOLN(card.longFilename); - } + ANYCUBIC_SERIAL_PROTOCOLLN(card.filename); + ANYCUBIC_SERIAL_PROTOCOLLN(buffer); + SERIAL_ECHO(cnt); + SERIAL_ECHOLN(buffer); } } }