25 Commits

Author SHA1 Message Date
Knutwurst
c77aacbbd9 Set build version for next release 2023-06-07 21:59:21 +02:00
Knutwurst
4206e3c4e8 Invert setSoftEndstopState logic on print stop 2023-06-07 21:39:14 +02:00
Knutwurst
dfc9cbe8b1 Change Chiron and 4MAX filament load length. 2023-06-07 18:55:48 +02:00
Knutwurst
9c7e330363 Fix AutoPowerOff menu selection. 2023-06-07 18:02:01 +02:00
Knutwurst
580d56bd37 Fix PowerOffFlag handling. 2023-06-07 16:16:06 +02:00
Knutwurst
588f703684 Add Special Menu BLTouch HighSpeed Mode selection 2023-06-07 12:39:56 +02:00
Knutwurst
c48395f801 Fix 4MAX build 2023-06-07 09:09:14 +02:00
Knutwurst
f7060d5524 Add more TFT debugging messages. 2023-06-07 09:03:20 +02:00
Knutwurst
acee1592c9 Add setSoftEndstopState to TFT print and stop functions. 2023-06-07 08:49:56 +02:00
Knutwurst
442f66c145 Disable soft endstops while printing, so that mesh points below 0 can be reached. 2023-06-07 08:48:05 +02:00
Knutwurst
b5b3da41f5 Disable software endstops when manual or auto leveling is activated, so the nozzle can be set to a lower point than the endstop. 2023-06-07 08:35:43 +02:00
Knutwurst
38edd9375b Revert "Disable automatic mesh adjustment when Z offset is altered."
This reverts commit fb7a29ce8e.
2023-06-07 08:14:28 +02:00
Knutwurst
fb7a29ce8e Disable automatic mesh adjustment when Z offset is altered. 2023-06-06 21:44:08 +02:00
Knutwurst
056dd71494 Substitute LCD_SERIAL.println() with LCD_SERIAL.print(,2) to ensure display compatibility. 2023-06-06 19:06:50 +02:00
Knutwurst
09b448773f Revert define, because it breaks the build. 2023-06-06 17:01:43 +02:00
Knutwurst
223df2956a Fix display of single mesh points 2023-06-06 17:01:06 +02:00
Knutwurst
9376b95148 Fix live Z offset. 2023-06-06 16:46:09 +02:00
Knutwurst
fbd1b7b9bf Fix PowerOff. 2023-06-03 21:15:52 +02:00
Knutwurst
61fba37678 Reenable auto power off on 4MAX Pro 2.0 2023-06-03 19:45:48 +02:00
Knutwurst
7b0aa6ec6a Code cleanup. 2023-06-03 19:45:21 +02:00
Knutwurst
70ccd6a957 Refactor Chiron A31 Adjust all Probe Points routine 2023-06-03 19:29:59 +02:00
Knutwurst
6bc410a0e3 Unify special menu defines for both display types. Also fix NoSD message and error, when no SD card is present. 2023-06-03 18:51:02 +02:00
Knutwurst
011752e02a Improve file list rendering speed. 2023-06-03 09:20:54 +02:00
Knutwurst
471d7f47a0 Remove unnecessary code from get-sd-list routine. 2023-06-03 00:20:25 +02:00
Knutwurst
0670fb9253 Revert from const char* to char* because it breaks Anycubic 1.0 without SD card. 2023-06-02 22:57:16 +02:00
4 changed files with 158 additions and 159 deletions

View File

@@ -2673,7 +2673,7 @@
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 30 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 5 // (mm) Load length of filament, from extruder gear to nozzle.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 10 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
#endif
@@ -2693,7 +2693,7 @@
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 30 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 5 // (mm) Load length of filament, from extruder gear to nozzle.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 550 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
#endif

View File

@@ -41,10 +41,10 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
#define CUSTOM_BUILD_VERSION "1.5.0-RC1"
#define CUSTOM_BUILD_VERSION "1.5.0"
#ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2023-06-02"
#define STRING_DISTRIBUTION_DATE "2023-06-07"
#endif
/**

View File

@@ -121,6 +121,7 @@
CaseLight = false;
currentFlowRate = 100;
flowRateBuffer = SM_FLOW_DISP_L;
live_Zoffset = 0.0;
#if BOTH(SDSUPPORT, HAS_SD_DETECT)
SET_INPUT_PULLUP(SD_DETECT_PIN);
@@ -196,6 +197,7 @@
SERIAL_ECHOPGM(" ");
SERIAL_ECHOLN(currentFileOrDirectory);
#endif
setSoftEndstopState(false);
mediaPrintingState = AMPRINTSTATE_PRINTING;
mediaPauseState = AMPAUSESTATE_NOT_PAUSED;
printFile(currentFileOrDirectory);
@@ -218,6 +220,7 @@
inline void AnycubicTouchscreenClass::StopPrint() {
#if ENABLED(SDSUPPORT)
setSoftEndstopState(true);
mediaPrintingState = AMPRINTSTATE_STOP_REQUESTED;
mediaPauseState = AMPAUSESTATE_NOT_PAUSED;
SENDLINE_DBG_PGM("J16", "TFT Serial Debug: SD print stop called... J16");
@@ -355,6 +358,8 @@
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_MESH_MENU_S)) != NULL)
) {
MMLMenu = true;
SERIAL_ECHOLNPGM("Special Menu: Manual Med Leveling + disable soft endstops");
setSoftEndstopState(false);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_MESH_START_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_MESH_START_S)) != NULL)
@@ -445,8 +450,7 @@
) {
SERIAL_ECHOLNPGM("Special Menu: Disable Filament Sensor");
injectCommands(F("M412 H0 S0\nM500"));
BUZZ(105, 1108);
BUZZ(105, 1108);
BUZZ(210, 1661);
BUZZ(105, 1108);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_EN_FILSENS_L)) != NULL)
@@ -455,7 +459,7 @@
SERIAL_ECHOLNPGM("Special Menu: Enable Filament Sensor");
injectCommands(F("M412 H0 S1\nM500"));
BUZZ(105, 1108);
BUZZ(105, 1108);
BUZZ(210, 1661);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_EXIT_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_EXIT_S)) != NULL)
@@ -465,6 +469,8 @@
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_BACK_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_BACK_S)) != NULL)
) {
SERIAL_ECHOLNPGM("Special Menu: Exit Manual Med Leveling + enable soft endstops");
setSoftEndstopState(true);
MMLMenu = false;
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_FLOWMENU_L)) != NULL)
@@ -513,6 +519,7 @@
) {
SERIAL_ECHOLNPGM("Special Menu: Enter BLTouch Menu");
BLTouchMenu = true;
setSoftEndstopState(false);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_BLTZ_UP_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_BLTZ_UP_S)) != NULL)
@@ -526,15 +533,34 @@
SERIAL_ECHOLNPGM("Special Menu: Offset Down");
probe.offset.z -= 0.01F;
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_HS_ENABLE_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_HS_ENABLE_S)) != NULL)
) {
SERIAL_ECHOLNPGM("Special Menu: HighSpeed Mode ENABLED");
injectCommands(F("M401 S1\nM500"));
BUZZ(105, 1108);
BUZZ(210, 1661);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_HS_DISABLE_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_HS_DISABLE_S)) != NULL)
) {
SERIAL_ECHOLNPGM("Special Menu: HighSpeed Mode DISABLED!");
injectCommands(F("M401 S0\nM500"));
BUZZ(210, 1661);
BUZZ(105, 1108);
}
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_BLTZ_EXIT_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_BLTZ_EXIT_S)) != NULL)
) {
SERIAL_ECHOLNPGM("Special Menu: Exit BLTouch Menu & Save EEPROM");
setSoftEndstopState(true);
injectCommands(F("M500"));
BUZZ(105, 1108);
BUZZ(210, 1661);
BLTouchMenu = false;
}
#endif
else if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_EZLVL_MENU_L)) != NULL)
|| (strcasestr_P(currentTouchscreenSelection, PSTR(SM_EZLVL_MENU_S)) != NULL)
@@ -621,24 +647,21 @@
void AnycubicTouchscreenClass::RenderCurrentFileList() {
uint16_t selectedNumber = 0;
FileList currentFileList;
currentFileOrDirectory[0] = 0;
if (SpecialMenu == false) {
currentTouchscreenSelection[0] = 0;
}
SENDLINE_PGM("FN "); // Filelist start
if (!isMediaInserted() && !SpecialMenu) {
SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to render Current File List... J02");
SENDLINE_PGM(SM_SPECIAL_MENU_S);
SENDLINE_PGM(SM_SPECIAL_MENU_L);
}
else {
} else {
uint16_t selectedNumber = 0;
FileList currentFileList;
if (CodeSeen('S')) {
selectedNumber = CodeValue();
}
@@ -732,6 +755,10 @@ void AnycubicTouchscreenClass::RenderSpecialMenu(uint16_t selectedNumber) {
break;
case 4: // Page 2
SENDLINE_PGM(SM_HS_ENABLE_S);
SENDLINE_PGM(SM_HS_ENABLE_L);
SENDLINE_PGM(SM_HS_DISABLE_S);
SENDLINE_PGM(SM_HS_DISABLE_L);
SENDLINE_PGM(SM_BLTZ_EXIT_S);
SENDLINE_PGM(SM_BLTZ_EXIT_L);
break;
@@ -885,7 +912,7 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
#endif
// The longname may not be filed, so we use the built-in fallback here.
const char* fileName = currentFileList.filename();
char* fileName = strdup(currentFileList.filename());
int fileNameLen = strlen(fileName);
// Cut off too long filenames.
@@ -1170,19 +1197,8 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
case 8: // A8 GET SD LIST
#ifdef SDSUPPORT
if (SpecialMenu == false)
currentTouchscreenSelection[0] = 0;
#if DISABLED(KNUTWURST_SPECIAL_MENU_WO_SD)
if (!IS_SD_INSERTED()) {
SENDLINE_DBG_PGM("J02", "TFT Serial Debug: No SD Card mounted to render Current File List... J02");
}
else
#endif
{
if (CodeSeen('S')) filenumber = CodeValue();
if (SpecialMenu == false) currentTouchscreenSelection[0] = 0;
RenderCurrentFileList();
}
#endif
break;
@@ -1508,7 +1524,7 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("Moving to mesh point at x: ", pos.x, " y: ", pos.y, " z: ", pos_z);
#endif
setAxisPosition_mm(3.0,Z);
setAxisPosition_mm(5.0,Z);
setAxisPosition_mm(17 + (93 * pos.x), X);
setAxisPosition_mm(20 + (93 * pos.y), Y);
setAxisPosition_mm(0.0, Z);
@@ -1529,17 +1545,16 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
SENDLINE_DBG_PGM("J24", "TFT Serial Debug: Forbid auto leveling... J24");
} else {
SENDLINE_DBG_PGM("J26", "TFT Serial Debug: Start auto leveling... J26");
injectCommands(F("G28\nG29"));
//injectCommands(F("G28\nG29"));
injectCommands(F("G28\nG29\nG90\nM300 S440 P200\nM300 S660 P250\nM300 S880 P300\nG1 Z30 F4000\nG1 X5 F4000\nG91\nM84\nM420 S1"));
mediaPrintingState = AMPRINTSTATE_PROBING;
}
} else {
SENDLINE_DBG_PGM("J26", "TFT Serial Debug: Start auto leveling... J26");
SENDLINE_DBG_PGM("J26", "TFT Serial Debug: Enable level menu... J26");
}
break;
case 31: // A31 z-offset
// The tokens can occur in different places on the new panel so we need to find it.
if (CodeSeen('C')) { // Restore and apply original offsets
if (!isPrinting()) {
injectCommands(F("M501\nM420 S1"));
@@ -1550,7 +1565,7 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
else if (CodeSeen('D')) { // Save Z Offset tables and restore leveling state
if (!isPrinting()) {
setAxisPosition_mm(1.0,Z); // Lift nozzle before any further movements are made
setAxisPosition_mm(5.0,Z); // Lift nozzle before any further movements are made
injectCommands(F("M500"));
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNF(F("Mesh changes saved."));
@@ -1560,13 +1575,14 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
}
else if (CodeSeen('G')) { // Get current offset
SENDLINE_PGM("A31V ");
// When printing use the live z Offset position
// we will use babystepping to move the print head
if (isPrinting())
LCD_SERIAL.println(live_Zoffset);
else {
LCD_SERIAL.println(getZOffset_mm());
if (isPrinting()) {
SEND_PGM("A31V ");
LCD_SERIAL.print(live_Zoffset, 2);
SENDLINE_PGM("");
} else {
SEND_PGM("A31V ");
LCD_SERIAL.print(getZOffset_mm(), 2);
SENDLINE_PGM("");
selectedmeshpoint.x = selectedmeshpoint.y = 99;
}
}
@@ -1584,7 +1600,6 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
const float currZpos = getAxisPosition_mm(Z);
SERIAL_ECHOLNPGM("Nudge Z pos from ", currZpos, " to ", currZpos + constrain(Zshift, -0.05, 0.05));
#endif
// Use babystepping to adjust the head position
int16_t steps = mmToWholeSteps(constrain(Zshift,-0.05,0.05), Z);
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("Steps to move Z: ", steps);
@@ -1592,8 +1607,10 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
babystepAxis_steps(steps, Z);
live_Zoffset += Zshift;
}
SENDLINE_PGM("A31V ");
LCD_SERIAL.println(live_Zoffset);
SEND_PGM("A31V ");
LCD_SERIAL.print(live_Zoffset, 2);
SENDLINE_PGM("");
}
else {
GRID_LOOP(x, y) {
@@ -1610,8 +1627,10 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
#endif
setZOffset_mm(currZOffset + Zshift);
SENDLINE_PGM("A31V ");
LCD_SERIAL.println(getZOffset_mm());
SEND_PGM("A31V ");
LCD_SERIAL.print(getZOffset_mm(), 2);
SENDLINE_PGM("");
if (isAxisPositionKnown(Z)) {
const float currZpos = getAxisPosition_mm(Z);
@@ -1688,17 +1707,32 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
case 41:
if (CodeSeen('O')) {
PrintdoneAndPowerOFF = true;
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("TFT Serial Debug: PrintdoneAndPowerOFF is set!");
#endif
break;
}
else if (CodeSeen('C')) {
PrintdoneAndPowerOFF = false;
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("TFT Serial Debug: PrintdoneAndPowerOFF is disabled!");
#endif
break;
}
if (CodeSeen('S')) {
if (PrintdoneAndPowerOFF)
SENDLINE_PGM("J35 ");
else
SENDLINE_PGM("J34 ");
if (PrintdoneAndPowerOFF) {
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("TFT Serial Debug: Sending J35 because PrintdoneAndPowerOFF = true");
#endif
SEND_PGM("J35 ");
SENDLINE_PGM("");
} else {
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("TFT Serial Debug: Sending J34 because PrintdoneAndPowerOFF = false");
#endif
SEND_PGM("J34 ");
SENDLINE_PGM("");
}
}
break;
@@ -1906,6 +1940,9 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
#if ENABLED(KNUTWURST_4MAXP2)
void PowerDown() {
#if ENABLED(ANYCUBIC_TFT_DEBUG)
SERIAL_ECHOLNPGM("TFT Serial Debug: PowerDown is called!");
#endif
for (unsigned char i = 0; i < 3; i++) {
WRITE(POWER_OFF_PIN, LOW);
delay(10);
@@ -1934,6 +1971,13 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
}
}
#if ENABLED(KNUTWURST_4MAXP2)
if (PrintdoneAndPowerOFF && powerOFFflag && (thermalManager.degHotend(0) < 50 )) {
powerOFFflag = 0;
PowerDown();
}
#endif
if (TFTbuflen < (TFTBUFSIZE - 1))
GetCommandFromTFT();
@@ -1945,9 +1989,12 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
void AnycubicTouchscreenClass::OnPrintTimerStarted() {
#if ENABLED(SDSUPPORT)
if (mediaPrintingState == AMPRINTSTATE_PRINTING)
SENDLINE_DBG_PGM("J04", "TFT Serial Debug: Starting SD Print... J04"); // J04 Starting Print
if (mediaPrintingState == AMPRINTSTATE_PRINTING) {
SENDLINE_DBG_PGM("J04", "TFT Serial Debug: Starting SD Print... soft endstops disabled J04"); // J04 Starting Print
setSoftEndstopState(false);
live_Zoffset = 0.0;
powerOFFflag = 0;
}
#endif
}
@@ -1965,7 +2012,9 @@ void AnycubicTouchscreenClass::RenderCurrentFolder(uint16_t selectedNumber) {
if (mediaPrintingState == AMPRINTSTATE_PRINTING) {
mediaPrintingState = AMPRINTSTATE_NOT_PRINTING;
mediaPauseState = AMPAUSESTATE_NOT_PAUSED;
SENDLINE_DBG_PGM("J14", "TFT Serial Debug: SD Print Completed... J14");
setSoftEndstopState(true);
powerOFFflag = 1;
SENDLINE_DBG_PGM("J14", "TFT Serial Debug: SD Print Completed... soft endstops enabled J14");
}
// otherwise it was stopped by the printer so don't send print completed signal to TFT
#endif

View File

@@ -57,178 +57,139 @@ enum AnycubicMediaPauseState {
AMPAUSESTATE_PAUSED
};
#define SM_DIR_UP_S "DIR_UP~1.GCO"
#define SM_SPECIAL_MENU_S "<SPECI~1.GCO"
#define SM_PID_HOTEND_S "<PIDTU~1.GCO"
#define SM_PID_BED_S "<PIDTU~2.GCO"
#define SM_SAVE_EEPROM_S "<SAVEE~1.GCO"
#define SM_LOAD_DEFAULTS_S "<LOADF~1.GCO"
#define SM_PREHEAT_BED_S "<PREHE~1.GCO"
#define SM_MESH_MENU_S "<MESHL~1.GCO"
#define SM_MESH_START_S "<START~1.GCO"
#define SM_MESH_NEXT_S "<NEXTM~1.GCO"
#define SM_Z_UP_01_S "<ZUP01~1.GCO"
#define SM_Z_DN_01_S "<ZDOWN~1.GCO"
#define SM_Z_UP_002_S "<ZUP00~1.GCO"
#define SM_Z_DN_002_S "<ZDOWN~2.GCO"
#define SM_Z_UP_001_S "<ZUP00~2.GCO"
#define SM_Z_DN_001_S "<ZDOWN~3.GCO"
#define SM_BLTOUCH_S "<BLTOU~1.GCO"
#define SM_RESETLV_S "<RSTLV~1.GCO"
#define SM_PAUSE_S "<FILCH~2.GCO"
#define SM_RESUME_S "<FILCH~1.GCO"
#define SM_DIS_FILSENS_S "<DISAB~1.GCO"
#define SM_EN_FILSENS_S "<ENABL~1.GCO"
#define SM_EXIT_S "<EXIT_~1.GCO"
#define SM_BACK_S "<BACK_~1.GCO"
#define SM_FLOWMENU_S "<SETFLO1.GCO"
#define SM_FLOW_DISP_S "<FLDISPL.GCO"
#define SM_FLOW_UP_S "<UPFLOW1.GCO"
#define SM_FLOW_DN_S "<DWNFLOW.GCO"
#define SM_FLOW_EXIT_S "<EXTFLW1.GCO"
#define SM_EZLVL_MENU_S "<EZLVLM1.GCO"
#define SM_EZLVL_P1_S "<EZLPA01.GCO"
#define SM_EZLVL_P2_S "<EZLPB01.GCO"
#define SM_EZLVL_P3_S "<EZLPC01.GCO"
#define SM_EZLVL_P4_S "<EZLPD01.GCO"
#define SM_EZLVL_EXIT_S "<EZLEXT1.GCO"
#define SM_BLTZMENU_S "<SETOFZ0.GCO"
#define SM_BLTZ_DISP_S "<OFZDSP0.GCO"
#define SM_BLTZ_UP_S "<UPOFFZ0.GCO"
#define SM_BLTZ_DN_S "<DOWNOFZ.GCO"
#define SM_BLTZ_EXIT_S "<EXTABLM.GCO"
#define SM_HS_DISABLE_S "<HSDISAB.GCO"
#define SM_HS_ENABLE_S "<HSENABL.GCO"
#if DISABLED(KNUTWURST_DGUS2_TFT)
#define SM_DIR_UP_L "/.."
#define SM_DIR_UP_S ".."
#define SM_SPECIAL_MENU_L "<Special Menu>"
#define SM_SPECIAL_MENU_S "<SPECM>"
#define SM_PID_HOTEND_L "<PID Tune Hotend>"
#define SM_PID_HOTEND_S "<PIDHE>"
#define SM_PID_BED_L "<PID Tune Ultrabase>"
#define SM_PID_BED_S "<PIDUB>"
#define SM_SAVE_EEPROM_L "<Save EEPROM>"
#define SM_SAVE_EEPROM_S "<SAVEE>"
#define SM_LOAD_DEFAULTS_L "<Load FW Defaults>"
#define SM_LOAD_DEFAULTS_S "<LDDEF>"
#define SM_PREHEAT_BED_L "<Preheat Ultrabase>"
#define SM_PREHEAT_BED_S "<PREHE>"
#define SM_MESH_MENU_L "<Mesh Leveling>"
#define SM_MESH_MENU_S "<MESHL>"
#define SM_MESH_START_L "<Start Mesh Leveling>"
#define SM_MESH_START_S "<SMESH>"
#define SM_MESH_NEXT_L "<Next Mesh Point>"
#define SM_MESH_NEXT_S "<NEXTM>"
#define SM_Z_UP_01_L "<Z Up 0.1>"
#define SM_Z_UP_01_S "<ZUP01>"
#define SM_Z_DN_01_L "<Z Down 0.1>"
#define SM_Z_DN_01_S "<ZDN01>"
#define SM_Z_UP_002_L "<Z Up 0.02>"
#define SM_Z_UP_002_S "<ZUP002>"
#define SM_Z_DN_002_L "<Z Down 0.02>"
#define SM_Z_DN_002_S "<ZDN002>"
#define SM_Z_UP_001_L "<Z Up 0.01>"
#define SM_Z_UP_001_S "<ZUP001>"
#define SM_Z_DN_001_L "<Z Down 0.01>"
#define SM_Z_DN_001_S "<ZDN001>"
#define SM_BLTOUCH_L "<Start Auto Leveling>"
#define SM_BLTOUCH_S "<BLTCH>"
#define SM_RESETLV_L "<Reset Level Grid>"
#define SM_RESETLV_S "<RSTLV>"
#define SM_PAUSE_L "<Fil. Change Pause>"
#define SM_PAUSE_S "<PAUSE>"
#define SM_RESUME_L "<Fil. Change Resume>"
#define SM_RESUME_S "<RESUM>"
#define SM_DIS_FILSENS_L "<Disable Fil. Sensor>"
#define SM_DIS_FILSENS_S "<DISSEN>"
#define SM_EN_FILSENS_L "<Enable Fil. Sensor>"
#define SM_EN_FILSENS_S "<ENSEN>"
#define SM_EXIT_L "<Exit>"
#define SM_EXIT_S "<SMEXIT>"
#define SM_BACK_L "<End Mesh Leveling>"
#define SM_BACK_S "<BACK>"
#define SM_FLOWMENU_L "<Set Flowrate>"
#define SM_FLOWMENU_S "<SETFLO>"
#define SM_FLOW_DISP_L "<Flow is XXX>"
#define SM_FLOW_DISP_S "<FLDISP>"
#define SM_FLOW_UP_L "<Up>"
#define SM_FLOW_UP_S "<FLUP>"
#define SM_FLOW_DN_L "<Down>"
#define SM_FLOW_DN_S "<FLDN>"
#define SM_FLOW_EXIT_L "<Exit Flow Settings>"
#define SM_FLOW_EXIT_S "<EXTFLW>"
#define SM_EZLVL_MENU_L "<Easy 4 Point Level>"
#define SM_EZLVL_MENU_S "<EZLVLM>"
#define SM_EZLVL_P1_L "<Point A>"
#define SM_EZLVL_P1_S "<EZLPA>"
#define SM_EZLVL_P2_L "<Point B>"
#define SM_EZLVL_P2_S "<EZLPB>"
#define SM_EZLVL_P3_L "<Point C>"
#define SM_EZLVL_P3_S "<EZLPC>"
#define SM_EZLVL_P4_L "<Point D>"
#define SM_EZLVL_P4_S "<EZLPD>"
#define SM_EZLVL_EXIT_L "<Exit Easy Level>"
#define SM_EZLVL_EXIT_S "<EZLEXT>"
#define SM_BLTZMENU_L "<Auto Leveling>"
#define SM_BLTZMENU_S "<SETOFZ>"
#define SM_BLTZ_DISP_L "<Z Offset: XXXXX>"
#define SM_BLTZ_DISP_S "<OFZDSP>"
#define SM_BLTZ_UP_L "<Up>"
#define SM_BLTZ_UP_S "<UPOFFZ0>"
#define SM_BLTZ_DN_L "<Down>"
#define SM_BLTZ_DN_S "<DNOFFZ0>"
#define SM_BLTZ_EXIT_L "<SAVE and EXIT>"
#define SM_BLTZ_EXIT_S "<EXTABLM>"
#define SM_HS_DISABLE_L "<Disable HiSpeed Mode>"
#define SM_HS_ENABLE_L "<Enable HiSpeed Mode>"
#endif // !KNUTWURST_DGUS2_TFT
#if ENABLED(KNUTWURST_DGUS2_TFT)
#define SM_DIR_UP_L "/.. .gcode"
#define SM_DIR_UP_S "DIR_UP~1.GCO"
#define SM_SPECIAL_MENU_L "<Special Menu> .gcode"
#define SM_SPECIAL_MENU_S "<SPECI~1.GCO"
#define SM_PID_HOTEND_L "<PID Tune Hotend> .gcode"
#define SM_PID_HOTEND_S "<PIDTU~1.GCO"
#define SM_PID_BED_L "<PID Tune Ultrabase>.gcode"
#define SM_PID_BED_S "<PIDTU~2.GCO"
#define SM_SAVE_EEPROM_L "<Save EEPROM> .gcode"
#define SM_SAVE_EEPROM_S "<SAVEE~1.GCO"
#define SM_LOAD_DEFAULTS_L "<Load FW Defaults> .gcode"
#define SM_LOAD_DEFAULTS_S "<LOADF~1.GCO"
#define SM_PREHEAT_BED_L "<Preheat Ultrabase> .gcode"
#define SM_PREHEAT_BED_S "<PREHE~1.GCO"
#define SM_MESH_MENU_L "<Mesh Leveling> .gcode"
#define SM_MESH_MENU_S "<MESHL~1.GCO"
#define SM_MESH_START_L "<Start MeshLeveling>.gcode"
#define SM_MESH_START_S "<START~1.GCO"
#define SM_MESH_NEXT_L "<Next Mesh Point> .gcode"
#define SM_MESH_NEXT_S "<NEXTM~1.GCO"
#define SM_Z_UP_01_L "<Z Up 0.1> .gcode"
#define SM_Z_UP_01_S "<ZUP01~1.GCO"
#define SM_Z_DN_01_L "<Z Down 0.1> .gcode"
#define SM_Z_DN_01_S "<ZDOWN~1.GCO"
#define SM_Z_UP_002_L "<Z Up 0.02> .gcode"
#define SM_Z_UP_002_S "<ZUP00~1.GCO"
#define SM_Z_DN_002_L "<Z Down 0.02> .gcode"
#define SM_Z_DN_002_S "<ZDOWN~2.GCO"
#define SM_Z_UP_001_L "<Z Up 0.01> .gcode"
#define SM_Z_UP_001_S "<ZUP00~2.GCO"
#define SM_Z_DN_001_L "<Z Down 0.01> .gcode"
#define SM_Z_DN_001_S "<ZDOWN~3.GCO"
#define SM_BLTOUCH_L "<Start AutoLeveling>.gcode"
#define SM_BLTOUCH_S "<BLTOU~1.GCO"
#define SM_RESETLV_L "<Reset Level Grid> .gcode"
#define SM_RESETLV_S "<RSTLV~1.GCO>"
#define SM_PAUSE_L "<Fil. Change Pause> .gcode"
#define SM_PAUSE_S "<FILCH~2.GCO"
#define SM_RESUME_L "<Fil. Change Resume>.gcode"
#define SM_RESUME_S "<FILCH~1.GCO"
#define SM_DIS_FILSENS_L "<Disable Fil.Sensor>.gcode"
#define SM_DIS_FILSENS_S "<DISAB~1.GCO"
#define SM_EN_FILSENS_L "<Enable Fil. Sensor>.gcode"
#define SM_EN_FILSENS_S "<ENABL~1.GCO"
#define SM_EXIT_L "<Exit> .gcode"
#define SM_EXIT_S "<EXIT_~1.GCO"
#define SM_BACK_L "<End Mesh Leveling> .gcode"
#define SM_BACK_S "<BACK_~1.GCO"
#define SM_FLOWMENU_L "<Set Flowrate> .gcode"
#define SM_FLOWMENU_S "<SETFLO1.GCO"
#define SM_FLOW_DISP_L "<Flow is XXX%> .gcode"
#define SM_FLOW_DISP_S "<FLDISPL.GCO"
#define SM_FLOW_UP_L "<Up> .gcode"
#define SM_FLOW_UP_S "<UPFLOW1.GCO"
#define SM_FLOW_DN_L "<Down> .gcode"
#define SM_FLOW_DN_S "<DWNFLOW.GCO"
#define SM_FLOW_EXIT_L "<Exit Flow Settings>.gcode"
#define SM_FLOW_EXIT_S "<EXTFLW1.GCO"
#define SM_EZLVL_MENU_L "<Easy 4 Point Level>.gcode"
#define SM_EZLVL_MENU_S "<EZLVLM1.GCO"
#define SM_EZLVL_P1_L "<Point A> .gcode"
#define SM_EZLVL_P1_S "<EZLPA01.GCO"
#define SM_EZLVL_P2_L "<Point B> .gcode"
#define SM_EZLVL_P2_S "<EZLPB01.GCO"
#define SM_EZLVL_P3_L "<Point C> .gcode"
#define SM_EZLVL_P3_S "<EZLPC01.GCO"
#define SM_EZLVL_P4_L "<Point D> .gcode"
#define SM_EZLVL_P4_S "<EZLPD01.GCO"
#define SM_EZLVL_EXIT_L "<Exit Easy Leveling>.gcode"
#define SM_EZLVL_EXIT_S "<EZLEXT1.GCO"
#define SM_BLTZMENU_L "<Auto Leveling> .gcode"
#define SM_BLTZMENU_S "<SETOFZ0.GCO"
#define SM_BLTZ_DISP_L "<Z Offset: XXXXX> .gcode"
#define SM_BLTZ_DISP_S "<OFZDSP0.GCO"
#define SM_BLTZ_UP_L "<Up> .gcode"
#define SM_BLTZ_UP_S "<UPOFFZ0.GCO"
#define SM_BLTZ_DN_L "<Down> .gcode"
#define SM_BLTZ_DN_S "<DOWNOFZ.GCO"
#define SM_BLTZ_EXIT_L "<SAVE and EXIT> .gcode"
#define SM_BLTZ_EXIT_S "<EXTABLM.GCO"
#define SM_HS_DISABLE_L "<Disable HiSpeed> .gcode"
#define SM_HS_ENABLE_L "<Enable HiSpeed> .gcode"
#endif // KNUTWURST_DGUS2_TFT
class AnycubicTouchscreenClass {
@@ -244,9 +205,9 @@ void UserConfirmRequired(const char *);
void SDCardStateChange(bool);
void SDCardError();
void KillTFT();
static void OnPrintTimerStarted();
static void OnPrintTimerPaused();
static void OnPrintTimerStopped();
void OnPrintTimerStarted();
void OnPrintTimerPaused();
void OnPrintTimerStopped();
#if BOTH(ANYCUBIC_TFT_DEBUG, KNUTWURST_DGUS2_TFT)
void Command(const char * const command);
@@ -266,20 +227,13 @@ int serial3_count = 0;
char *TFTstrchr_pointer;
char FlagResumFromOutage = 0;
int filenumber = 0;
unsigned long starttime = 0;
unsigned long stoptime = 0;
uint8_t tmp_extruder = 0;
char LastSDstatus = 0;
uint16_t HeaterCheckCount = 0;
bool IsParked = false;
int currentFlowRate = 0;
bool PrintdoneAndPowerOFF = true;
bool powerOFFflag = 0;
#if ENABLED(KNUTWURST_TFT_LEVELING)
xy_uint8_t selectedmeshpoint;
float live_Zoffset;
#endif
xy_uint8_t selectedmeshpoint;
float live_Zoffset;
static AnycubicMediaPrintState mediaPrintingState;
static AnycubicMediaPauseState mediaPauseState;
@@ -301,16 +255,13 @@ float CodeValue();
bool CodeSeen(char);
void StartPrint();
void PausePrint();
void ResumePrint();
void StopPrint();
void StateHandler();
void GetCommandFromTFT();
void CheckSDCardChange();
void CheckHeaterError();
void HandleSpecialMenu();
void FilamentChangePause();
void ResumePrint();
void ReheatNozzle();
void ParkAfterStop();
void HandleSpecialMenu();
void RenderCurrentFileList();
void RenderSpecialMenu(uint16_t);
void RenderCurrentFolder(uint16_t);
@@ -319,7 +270,6 @@ char currentTouchscreenSelection[64];
char currentFileOrDirectory[64];
String flowRateBuffer;
String zOffsetBuffer;
uint8_t FilamentSensorEnabled = true;
uint8_t SpecialMenu = false;
uint8_t MMLMenu = false;