Refactor A22 move X/Y/Z or extrude function.

This commit is contained in:
Knutwurst
2023-06-15 17:29:50 +02:00
parent b940864e18
commit 524d6fbcdf

View File

@@ -1321,56 +1321,61 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
case 22: // A22 move X/Y/Z or extrude case 22: // A22 move X/Y/Z or extrude
if (!isPrinting()) { if (!isPrinting()) {
float coorvalue; float coorvalue;
unsigned int movespeed = 0; uint16_t movespeed = 0;
char value[30]; char commandStr[30];
char fullCommandStr[38];
commandStr[0] = 0; // empty string
if (CodeSeen('F')) { // Set feedrate if (CodeSeen('F')) { // Set feedrate
movespeed = CodeValue(); movespeed = CodeValue();
} }
queue.enqueue_now_P(PSTR("G91")); // relative coordinates
if (CodeSeen('X')) { // Move in X direction if (CodeSeen('X')) { // Move in X direction
coorvalue = CodeValue(); coorvalue = CodeValue();
if ((coorvalue <= 0.2) && coorvalue > 0) { if ((coorvalue <= 0.2) && coorvalue > 0) {
sprintf_P(value, PSTR("G1 X0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 X0.1F%i"), movespeed);
} else if ((coorvalue <= -0.1) && coorvalue > -1) { } else if ((coorvalue <= -0.1) && coorvalue > -1) {
sprintf_P(value, PSTR("G1 X-0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 X-0.1F%i"), movespeed);
} else { } else {
sprintf_P(value, PSTR("G1 X%iF%i"), int(coorvalue), movespeed); sprintf_P(commandStr, PSTR("G1 X%iF%i"), int(coorvalue), movespeed);
} }
queue.enqueue_one_now(value);
} else if (CodeSeen('Y')) { // Move in Y direction } else if (CodeSeen('Y')) { // Move in Y direction
coorvalue = CodeValue(); coorvalue = CodeValue();
if ((coorvalue <= 0.2) && coorvalue > 0) { if ((coorvalue <= 0.2) && coorvalue > 0) {
sprintf_P(value, PSTR("G1 Y0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 Y0.1F%i"), movespeed);
} else if ((coorvalue <= -0.1) && coorvalue > -1) { } else if ((coorvalue <= -0.1) && coorvalue > -1) {
sprintf_P(value, PSTR("G1 Y-0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 Y-0.1F%i"), movespeed);
} else { } else {
sprintf_P(value, PSTR("G1 Y%iF%i"), int(coorvalue), movespeed); sprintf_P(commandStr, PSTR("G1 Y%iF%i"), int(coorvalue), movespeed);
} }
queue.enqueue_one_now(value);
} else if (CodeSeen('Z')) { // Move in Z direction } else if (CodeSeen('Z')) { // Move in Z direction
coorvalue = CodeValue(); coorvalue = CodeValue();
if ((coorvalue <= 0.2) && coorvalue > 0) { if ((coorvalue <= 0.2) && coorvalue > 0) {
sprintf_P(value, PSTR("G1 Z0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 Z0.1F%i"), movespeed);
} else if ((coorvalue <= -0.1) && coorvalue > -1) { } else if ((coorvalue <= -0.1) && coorvalue > -1) {
sprintf_P(value, PSTR("G1 Z-0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 Z-0.1F%i"), movespeed);
} else { } else {
sprintf_P(value, PSTR("G1 Z%iF%i"), int(coorvalue), movespeed); sprintf_P(commandStr, PSTR("G1 Z%iF%i"), int(coorvalue), movespeed);
} }
queue.enqueue_one_now(value);
} else if (CodeSeen('E')) { // Extrude } else if (CodeSeen('E')) { // Extrude
coorvalue = CodeValue(); coorvalue = CodeValue();
if ((coorvalue <= 0.2) && coorvalue > 0) { if ((coorvalue <= 0.2) && coorvalue > 0) {
sprintf_P(value, PSTR("G1 E0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 E0.1F%i"), movespeed);
} else if ((coorvalue <= -0.1) && coorvalue > -1) { } else if ((coorvalue <= -0.1) && coorvalue > -1) {
sprintf_P(value, PSTR("G1 E-0.1F%i"), movespeed); sprintf_P(commandStr, PSTR("G1 E-0.1F%i"), movespeed);
} else { } else {
sprintf_P(value, PSTR("G1 E%iF500"), int(coorvalue)); sprintf_P(commandStr, PSTR("G1 E%iF500"), int(coorvalue));
} }
queue.enqueue_one_now(value);
} }
queue.enqueue_now_P(PSTR("G90")); // absolute coordinates
if (strlen(commandStr) > 0) {
sprintf_P(fullCommandStr, PSTR("G91\n%s\nG90"), commandStr);
#if ENABLED(ANYCUBIC_LCD_DEBUG)
SERIAL_ECHOPGM("TFT Serial Debug: A22 Move final request with gcode... ");
SERIAL_ECHOLN(fullCommandStr);
#endif
injectCommands(fullCommandStr);
}
} }
SENDLINE_PGM(""); SENDLINE_PGM("");
break; break;
@@ -1661,7 +1666,8 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
#if ENABLED(KNUTWURST_4MAXP2) #if ENABLED(KNUTWURST_4MAXP2)
case 30: // a30 assist leveling case 30: // a30 assist leveling
SEND_PGM("J22"); // level watching finish (that's from anycubic's 4MAX firmware and I don't know, what is does) SEND_PGM(
"J22"); // level watching finish (that's from anycubic's 4MAX firmware and I don't know, what is does)
SENDLINE_PGM(""); SENDLINE_PGM("");
if (!isPrintingFromMedia()) { if (!isPrintingFromMedia()) {
@@ -1932,23 +1938,23 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
#if ENABLED(KNUTWURST_MEGA_P) #if ENABLED(KNUTWURST_MEGA_P)
case 51: case 51:
if (CodeSeen('H')) { if (CodeSeen('H')) {
queue.enqueue_now_P(PSTR("G1 Z5 F500")); injectCommands(F("G1 Z5 F500"));
queue.enqueue_now_P(PSTR("G1 X30 Y30 F5000")); injectCommands(F("G1 X30 Y30 F5000"));
queue.enqueue_now_P(PSTR("G1 Z0.15 F300")); injectCommands(F("G1 Z0.15 F300"));
} else if (CodeSeen('I')) { } else if (CodeSeen('I')) {
queue.enqueue_now_P(PSTR("G1 Z5 F500")); injectCommands(F("G1 Z5 F500"));
queue.enqueue_now_P(PSTR("G1 X190 Y30 F5000")); injectCommands(F("G1 X190 Y30 F5000"));
queue.enqueue_now_P(PSTR("G1 Z0.15 F300")); injectCommands(F("G1 Z0.15 F300"));
} else if (CodeSeen('J')) { } else if (CodeSeen('J')) {
queue.enqueue_now_P(PSTR("G1 Z5 F500")); injectCommands(F("G1 Z5 F500"));
queue.enqueue_now_P(PSTR("G1 X190 Y190 F5000")); injectCommands(F("G1 X190 Y190 F5000"));
queue.enqueue_now_P(PSTR("G1 Z0.15 F300")); injectCommands(F("G1 Z0.15 F300"));
} else if (CodeSeen('K')) { } else if (CodeSeen('K')) {
queue.enqueue_now_P(PSTR("G1 Z5 F500")); injectCommands(F("G1 Z5 F500"));
queue.enqueue_now_P(PSTR("G1 X30 Y190 F5000")); injectCommands(F("G1 X30 Y190 F5000"));
queue.enqueue_now_P(PSTR("G1 Z0.15 F300")); injectCommands(F("G1 Z0.15 F300"));
} else if (CodeSeen('L')) { } else if (CodeSeen('L')) {
queue.enqueue_now_P(PSTR("G1 X100 Y100 Z50 F5000")); injectCommands(F("G1 X100 Y100 Z50 F5000"));
} }
break; break;
#endif #endif