Let's try something else...

This commit is contained in:
Knutwurst
2020-07-22 09:39:43 +02:00
parent 1c3f1e9ada
commit 6fff254817
3 changed files with 99 additions and 64 deletions

View File

@@ -1726,8 +1726,8 @@
// @section serial
// The ASCII buffer for serial input
#define MAX_CMD_SIZE 128
#define BUFSIZE 8
#define MAX_CMD_SIZE 96
#define BUFSIZE 4
// Transmission to Host Buffer Size
// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
@@ -1736,13 +1736,13 @@
// For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256]
#define TX_BUFFER_SIZE 4
#define TX_BUFFER_SIZE 0
// Host Receive Buffer Size
// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
// To use flow control, set this buffer size to at least 1024 bytes.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
#define RX_BUFFER_SIZE 256
#define RX_BUFFER_SIZE 32
#if RX_BUFFER_SIZE >= 1024
// Enable to have the controller send XON/XOFF control characters to

View File

@@ -55,7 +55,7 @@ unsigned char ResumingFlag = 0;
#endif
//#define MAX_PRINTABLE_FILENAME_LEN 21
#define MAX_PRINTABLE_FILENAME_LEN 24
#define MAX_PRINTABLE_FILENAME_LEN 26
void setup_OutageTestPin()
{
@@ -113,6 +113,7 @@ AnycubicTouchscreenClass::AnycubicTouchscreenClass()
void AnycubicTouchscreenClass::Setup()
{
HardwareSerial.begin(115200);
HARDWARE_SERIAL_ENTER();
HARDWARE_SERIAL_PROTOCOLPGM("J17"); // J17 Main board reset
HARDWARE_SERIAL_ENTER();
delay(10);
@@ -140,6 +141,7 @@ void AnycubicTouchscreenClass::Setup()
currentFileOrDirectory[0] = '\0';
SpecialMenu = false;
FilamentSensorEnabled = true;
MyFileNrCnt = 0;
#ifdef STARTUP_CHIME
buzzer.tone(100, 554);
@@ -437,7 +439,6 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
SERIAL_ECHOPAIR(" DEBUG: Special Menu Selection: ", currentTouchscreenSelection);
SERIAL_EOL();
#endif
delay(10);
if (strcasestr(currentTouchscreenSelection, "<Special Menu>") != NULL)
{
SpecialMenu = true;
@@ -471,6 +472,7 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
SERIAL_ECHOLNPGM("Special Menu: Preheat Ultrabase");
queue.inject_P(PSTR("M140 S60"));
}
#if DISABLED(KNUTWURST_BLTOUCH)
else if (strcasestr(currentTouchscreenSelection, "<Start Mesh Leveling>") != NULL)
{
SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling");
@@ -504,13 +506,23 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
else if (strcasestr(currentTouchscreenSelection, "<Z Up 0.01>") != NULL)
{
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.01");
queue.inject_P(PSTR("G91\nG1 Z+0.01\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z+0.03\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.02\nG90"));
}
else if (strcasestr(currentTouchscreenSelection, "<Z Down 0.01>") != NULL)
{
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.01");
queue.inject_P(PSTR("G91\nG1 Z-0.01\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z+0.02\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.03\nG90"));
}
#endif
#if ENABLED(KNUTWURST_BLTOUCH)
else if (strcasestr(currentTouchscreenSelection, "<BLTouch Leveling>") != NULL)
{
SERIAL_ECHOLNPGM("Special Menu: BLTouch Leveling");
queue.inject_P(PSTR("G28\nG29"));
}
#endif
else if (strcasestr(currentTouchscreenSelection, "<Fil. Change Pause>") != NULL)
{
SERIAL_ECHOLNPGM("Special Menu: Fil. Change Pause");
@@ -542,6 +554,19 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
}
}
uint16_t AnycubicTouchscreenClass::MyGetFileNr()
{
if(card.isMounted)
{
MyFileNrCnt=0;
//ReadMyfileNrFlag=true;
delay(10);
//card.Myls();
MyFileNrCnt = card.countFilesInWorkDir();
}
return MyFileNrCnt;
}
void AnycubicTouchscreenClass::PrintList()
{
if (SpecialMenu)
@@ -549,96 +574,102 @@ void AnycubicTouchscreenClass::PrintList()
switch (filenumber)
{
case 0: // Page 1
HARDWARE_SERIAL_PROTOCOLLN("<Exit>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Exit>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Preheat Ultrabase>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Preheat Ultrabase>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Pause>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Pause>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Resume>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Resume>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Preheat Ultrabase>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Preheat Ultrabase>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Fil. Change Pause>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Fil. Change Pause>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Fil. Change Resume>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Fil. Change Resume>");
break;
case 4: // Page 2
HARDWARE_SERIAL_PROTOCOLLN("<Start Mesh Leveling>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Start Mesh Leveling>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Next Mesh Point>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Next Mesh Point>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.1>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.1>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.1>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.1>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Start Mesh Leveling>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Start Mesh Leveling>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Next Mesh Point>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Next Mesh Point>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.1>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.1>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.1>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.1>");
break;
case 8: // Page 3
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.02>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.02>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.02>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.02>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.01>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.01>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.01>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.01>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.02>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.02>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.02>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.02>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.01>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.01>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.01>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Down 0.01>");
break;
case 12: // Page 4
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Hotend>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Hotend>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Ultrabase>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Ultrabase>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Save EEPROM>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Save EEPROM>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Load FW Defaults>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Load FW Defaults>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<PID Tune Hotend>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<PID Tune Hotend>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<PID Tune Ultrabase>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<PID Tune Ultrabase>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Save EEPROM>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Save EEPROM>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
break;
case 16: // Page 5
HARDWARE_SERIAL_PROTOCOLLN("<Disable Fil. Sensor>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Disable Fil. Sensor>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Enable Fil. Sensor>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Enable Fil. Sensor>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Exit>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Exit>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Disable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Disable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Enable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Enable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
break;
default:
break;
}
}
#ifdef SDSUPPORT
else if (card.isMounted())
{
uint16_t count = filenumber;
uint16_t max_files;
uint16_t dir_files = card.countFilesInWorkDir();
//uint16_t MyFileNrCnt = card.countFilesInWorkDir();
delay(10);
// What is this shit? What if there are exactely 3 files+folders?
// TODO: find something better than this crap.
if ((dir_files - filenumber) < 4)
if ((MyFileNrCnt - filenumber) < 4)
{
max_files = dir_files;
max_files = MyFileNrCnt;
}
else
{
//max_files = MyFileNrCnt;
max_files = filenumber + 3;
}
for (count = filenumber; count <= max_files; count++)
{
SERIAL_ECHOPGM("filenumber: ");
SERIAL_ECHOLN(filenumber);
SERIAL_ECHOPGM("max_files: ");
SERIAL_ECHOLN(max_files);
SERIAL_ECHOPGM("count: ");
SERIAL_ECHOLN(count);
if (count == 0) // Special Entry
{
if (strcmp(card.getWorkDirName(), "/") == 0)
{
HARDWARE_SERIAL_PROTOCOLLN("<Special Menu>.gcode");
HARDWARE_SERIAL_PROTOCOLLN("<Special Menu>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Special Menu>.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Special Menu>.gcode");
SERIAL_ECHO(count);
SERIAL_ECHOLNPGM(": <Special Menu>.gcode");
}
else
{
HARDWARE_SERIAL_PROTOCOLLN("DIR_UP.gcode");
HARDWARE_SERIAL_PROTOCOLLN("DIR_UP.gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM("DIR_UP.gco");
HARDWARE_SERIAL_PROTOCOLLNPGM("DIR_UP.gcode");
SERIAL_ECHO(count);
SERIAL_ECHOLNPGM(": DIR_UP.gcode");
}
@@ -647,6 +678,7 @@ void AnycubicTouchscreenClass::PrintList()
{
card.selectFileByIndex(count - 1);
// Bugfix for non-printable special characters
// which are now replaced by underscores.
int fileNameLen = strlen(card.longFilename);
@@ -678,11 +710,12 @@ void AnycubicTouchscreenClass::PrintList()
if (card.flag.filenameIsDir)
{
HARDWARE_SERIAL_PROTOCOL("/");
HARDWARE_SERIAL_PROTOCOLLN(card.filename);
HARDWARE_SERIAL_PROTOCOL("DIR_");
HARDWARE_SERIAL_PROTOCOLPGM("/");
HARDWARE_SERIAL_PROTOCOL(card.filename);
HARDWARE_SERIAL_PROTOCOLLNPGM(".gco");
HARDWARE_SERIAL_PROTOCOLPGM("DIR_");
HARDWARE_SERIAL_PROTOCOL(outputString);
HARDWARE_SERIAL_PROTOCOLLN(".gcode");
HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode");
SERIAL_ECHO(count);
SERIAL_ECHOPGM(": /");
SERIAL_ECHOLN(outputString);
@@ -693,12 +726,11 @@ void AnycubicTouchscreenClass::PrintList()
HARDWARE_SERIAL_PROTOCOLLN(outputString);
SERIAL_ECHO(count);
SERIAL_ECHOPGM(": ");
SERIAL_ECHOLN(outputString);
SERIAL_ECHOLN(card.longFilename);
}
}
}
}
#endif
}
void AnycubicTouchscreenClass::CheckSDCardChange()
@@ -1129,9 +1161,10 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
}
else
{
if (CodeSeen('S')) {
MyGetFileNr();
if (CodeSeen('S'))
filenumber = CodeValue();
}
HARDWARE_SERIAL_PROTOCOLPGM("FN "); // Filelist start
@@ -1508,7 +1541,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
{
strcpy(currentFileOrDirectory, currentTouchscreenSelection);
int currentFileLen = strlen(currentFileOrDirectory);
currentFileOrDirectory[currentFileLen - 6] = '\0';
currentFileOrDirectory[currentFileLen - 4] = '\0';
card.cd(currentFileOrDirectory);
}
}

View File

@@ -114,9 +114,11 @@ private:
void FilamentChangeResume();
void ReheatNozzle();
void ParkAfterStop();
uint16_t MyGetFileNr();
char currentTouchscreenSelection[30];
char currentFileOrDirectory[30];
uint16_t MyFileNrCnt = 0;
uint8_t SpecialMenu = false;
uint8_t FilamentSensorEnabled = true;