- Fix resume from pause (M108)

- Use serial out from progmem for debugging
This commit is contained in:
Knutwurst
2022-01-09 14:48:21 +01:00
parent 899f35e029
commit b6b2995b5e

View File

@@ -202,10 +202,13 @@ AnycubicTouchscreenClass::AnycubicTouchscreenClass() {
void AnycubicTouchscreenClass::Setup() { void AnycubicTouchscreenClass::Setup() {
HardwareSerial.begin(115200); HardwareSerial.begin(115200);
HARDWARE_SERIAL_ENTER(); #if DISABLED(KNUTWURST_4MAXP2)
HARDWARE_SERIAL_PROTOCOLPGM("J17"); // J17 Main board reset HARDWARE_SERIAL_ENTER();
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_PROTOCOLPGM("J17"); // J17 Main board reset
delay(10); HARDWARE_SERIAL_ENTER();
delay(10);
#endif
HARDWARE_SERIAL_PROTOCOLPGM("J12"); // J12 Ready HARDWARE_SERIAL_PROTOCOLPGM("J12"); // J12 Ready
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
@@ -335,18 +338,18 @@ void AnycubicTouchscreenClass::StartPrint(){
card.startOrResumeFilePrinting(); card.startOrResumeFilePrinting();
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT; TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
SERIAL_ECHOLNPGM("DEBUG: Regular Start"); SERIAL_ECHOLNPGM("DEBUG: Regular Start");
#endif #endif
break; break;
case 1: case 1:
// regular sd pause // regular sd pause
queue.inject_P(PSTR("M24")); // unpark nozzle queue.inject_P(PSTR("M108")); // unpark nozzle
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
SERIAL_ECHOLNPGM("DEBUG: M24 Resume from regular pause"); SERIAL_ECHOLNPGM("DEBUG: M108 Resume from regular pause");
#endif #endif
IsParked = false; // remove parked flag IsParked = false; // remove parked flag
wait_for_heatup = false; wait_for_heatup = false;
@@ -356,14 +359,14 @@ void AnycubicTouchscreenClass::StartPrint(){
TFTstate = ANYCUBIC_TFT_STATE_SDPRINT; TFTstate = ANYCUBIC_TFT_STATE_SDPRINT;
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
break; break;
case 2: case 2:
// paused by M600 // paused by M600
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
SERIAL_ECHOLNPGM("DEBUG: Start M108 routine"); SERIAL_ECHOLNPGM("DEBUG: Start M108 routine");
#endif #endif
@@ -424,7 +427,7 @@ void AnycubicTouchscreenClass::PausePrint() {
if (ai3m_pause_state < 2) { // is this a regular pause? if (ai3m_pause_state < 2) { // is this a regular pause?
card.pauseSDPrint(); // pause print regularly card.pauseSDPrint(); // pause print regularly
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
SERIAL_ECHOLNPGM("DEBUG: Regular Pause"); SERIAL_ECHOLNPGM("DEBUG: Regular Pause");
#endif #endif
@@ -449,7 +452,7 @@ void AnycubicTouchscreenClass::PausePrint() {
ai3m_pause_state = 3; ai3m_pause_state = 3;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: M25 sent, parking nozzle"); SERIAL_ECHOLNPGM("DEBUG: M25 sent, parking nozzle");
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
IsParked = true; IsParked = true;
@@ -481,7 +484,7 @@ inline void AnycubicTouchscreenClass::StopPrint()
thermalManager.disable_all_heaters(); thermalManager.disable_all_heaters();
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
#if FAN_COUNT > 0 #if FAN_COUNT > 0
@@ -512,7 +515,7 @@ void AnycubicTouchscreenClass::FilamentChangePause() {
// gets used when the user hits CONTINUE // gets used when the user hits CONTINUE
ai3m_pause_state = 2; ai3m_pause_state = 2;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
@@ -542,7 +545,7 @@ void AnycubicTouchscreenClass::ReheatNozzle() {
if (ai3m_pause_state > 3) { if (ai3m_pause_state > 3) {
ai3m_pause_state -= 2; ai3m_pause_state -= 2;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: NTO done, AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: NTO done, AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -572,7 +575,7 @@ void AnycubicTouchscreenClass::ParkAfterStop(){
queue.enqueue_now_P(PSTR("M27")); // force report of SD status queue.enqueue_now_P(PSTR("M27")); // force report of SD status
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -593,7 +596,7 @@ bool AnycubicTouchscreenClass::CodeSeen(char code) {
void AnycubicTouchscreenClass::HandleSpecialMenu() { void AnycubicTouchscreenClass::HandleSpecialMenu() {
#if ENABLED(KNUTWURST_SPECIAL_MENU) #if ENABLED(KNUTWURST_SPECIAL_MENU)
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: Special Menu Selection: ", currentTouchscreenSelection); SERIAL_ECHOPGM(" DEBUG: Special Menu Selection: ", currentTouchscreenSelection);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_SPECIAL_MENU_L)) != NULL) if ((strcasestr_P(currentTouchscreenSelection, PSTR(SM_SPECIAL_MENU_L)) != NULL)
@@ -964,7 +967,7 @@ void AnycubicTouchscreenClass::PrintList() {
zOffsetBuffer = SM_BLTZ_DISP_L; zOffsetBuffer = SM_BLTZ_DISP_L;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: Current probe.offset.z: ", float(probe.offset.z)); SERIAL_ECHOPGM(" DEBUG: Current probe.offset.z: ", float(probe.offset.z));
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
@@ -1280,7 +1283,7 @@ void AnycubicTouchscreenClass::StateHandler() {
#endif #endif
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -1306,7 +1309,7 @@ void AnycubicTouchscreenClass::StateHandler() {
// no flags, this is a regular pause. // no flags, this is a regular pause.
ai3m_pause_state = 1; ai3m_pause_state = 1;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
SERIAL_ECHOLNPGM("DEBUG: Regular Pause requested"); SERIAL_ECHOLNPGM("DEBUG: Regular Pause requested");
#endif #endif
@@ -1342,7 +1345,7 @@ void AnycubicTouchscreenClass::StateHandler() {
#endif #endif
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -1390,7 +1393,7 @@ void AnycubicTouchscreenClass::FilamentRunout() {
if (card.isPrinting()) { if (card.isPrinting()) {
ai3m_pause_state = 3; // set runout pause flag ai3m_pause_state = 3; // set runout pause flag
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
PausePrint(); PausePrint();
@@ -1600,7 +1603,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
else { else {
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
StopPrint(); StopPrint();
@@ -1633,7 +1636,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
TFTstate = ANYCUBIC_TFT_STATE_IDLE; TFTstate = ANYCUBIC_TFT_STATE_IDLE;
ai3m_pause_state = 0; ai3m_pause_state = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -1649,7 +1652,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
if (TFTstrchr_pointer[4] == '/') { if (TFTstrchr_pointer[4] == '/') {
strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 5); strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 5);
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection); SERIAL_ECHOPGM(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
} }
@@ -1692,7 +1695,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
ai3m_pause_state = 0; ai3m_pause_state = 0;
powerOFFflag = 0; powerOFFflag = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPGM(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
StartPrint(); StartPrint();
@@ -1898,7 +1901,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
case 26: // A26 refresh SD case 26: // A26 refresh SD
#ifdef SDSUPPORT #ifdef SDSUPPORT
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection); SERIAL_ECHOPGM(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
if (currentTouchscreenSelection[0] == 0) { if (currentTouchscreenSelection[0] == 0) {