Complete rewrite of anycubic tft code structure + cleanup for upcoming Chiron BBL feature.
This commit is contained in:
@@ -161,9 +161,9 @@
|
||||
* PLEASE READ THE WARNING ABOVE!
|
||||
*
|
||||
*/
|
||||
#if ENABLED(KNUTWURST_CHIRON)
|
||||
//#if ENABLED(KNUTWURST_CHIRON)
|
||||
//#define KNUTWURST_TFT_LEVELING
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
/*******************************************************************************************
|
||||
** **
|
||||
|
@@ -31,6 +31,8 @@
|
||||
#include "../module/planner.h"
|
||||
#include "../module/printcounter.h"
|
||||
#include "../module/temperature.h"
|
||||
#include "../module/motion.h"
|
||||
#include "../module/configuration_store.h"
|
||||
#include "../sd/cardreader.h"
|
||||
|
||||
|
||||
@@ -40,6 +42,12 @@
|
||||
|
||||
char _conv[8];
|
||||
|
||||
#if ENABLED(KNUTWURST_TFT_LEVELING)
|
||||
int z_values_index;
|
||||
int z_values_size;
|
||||
float SAVE_zprobe_zoffset;
|
||||
#endif
|
||||
|
||||
#if defined(POWER_OUTAGE_TEST)
|
||||
int PowerInt = 6;
|
||||
unsigned char PowerTestFlag = false;
|
||||
@@ -94,7 +102,6 @@ char *ftostr32(const float &x)
|
||||
_conv[6] = DIGIMOD(xx, 1);
|
||||
return &_conv[1];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
AnycubicTouchscreenClass::AnycubicTouchscreenClass()
|
||||
@@ -151,7 +158,6 @@ setup_OutageTestPin();
|
||||
}
|
||||
|
||||
#if ENABLED(KNUTWURST_MEGA_P_LASER)
|
||||
|
||||
PRINTER_STRUCT Laser_printer_st = {0};
|
||||
BMP_HEAD st_bmp = {0};
|
||||
|
||||
@@ -910,6 +916,7 @@ void AnycubicTouchscreenClass::PrintList()
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
#if ENABLED(KNUTWURST_SPECIAL_MENU)
|
||||
else if (card.isMounted())
|
||||
@@ -1078,14 +1085,10 @@ void AnycubicTouchscreenClass::CheckHeaterError()
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Hotend temperature abnormal... J20");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HeaterCheckCount++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HeaterCheckCount = 0;
|
||||
}
|
||||
}
|
||||
@@ -1167,9 +1170,7 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
if (FilamentTestStatus)
|
||||
{
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// Pause because of "out of filament"
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_OOF;
|
||||
}
|
||||
@@ -1247,8 +1248,7 @@ void AnycubicTouchscreenClass::FilamentRunout()
|
||||
#endif
|
||||
if (card.isPrinting())
|
||||
{
|
||||
ai3m_pause_state = 3;
|
||||
; // set runout pause flag
|
||||
ai3m_pause_state = 3; // set runout pause flag
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
@@ -1285,7 +1285,6 @@ static boolean TFTcomment_mode = false;
|
||||
|
||||
void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
{
|
||||
|
||||
char *starpos = NULL;
|
||||
while( HardwareSerial.available() > 0 && TFTbuflen < TFTBUFSIZE)
|
||||
{
|
||||
@@ -1304,7 +1303,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
{
|
||||
// -------- START ERROR CORRECTION ----------
|
||||
TFTcomment_mode = false; //for new command
|
||||
|
||||
if(strchr(TFTcmdbuffer[TFTbufindw], 'N') != NULL)
|
||||
{
|
||||
if(strchr(TFTcmdbuffer[TFTbufindw], '*') != NULL)
|
||||
@@ -1324,18 +1322,14 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
return;
|
||||
}
|
||||
//if no errors, continue parsing
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_ERROR_START;
|
||||
HardwareSerial.flush();
|
||||
serial3_count = 0;
|
||||
return;
|
||||
}
|
||||
//if no errors, continue parsing
|
||||
}
|
||||
else // if we don't receive 'N' but still see '*'
|
||||
{
|
||||
} else { // if we don't receive 'N' but still see '*'
|
||||
if((strchr(TFTcmdbuffer[TFTbufindw], '*') != NULL))
|
||||
{
|
||||
HARDWARE_SERIAL_ERROR_START;
|
||||
@@ -1351,7 +1345,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], 'A');
|
||||
switch((int)((strtod(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], NULL))))
|
||||
{
|
||||
|
||||
case 0: //A0 GET HOTEND TEMP
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A0V ");
|
||||
HARDWARE_SERIAL_PROTOCOL(itostr3(int(thermalManager.degHotend(0) + 0.5)));
|
||||
@@ -1410,15 +1403,13 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if (card.isMounted())
|
||||
{
|
||||
HARDWARE_SERIAL_PROTOCOL(itostr3(card.percentDone()));
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J02"); // J02 SD Card initilized
|
||||
}
|
||||
}
|
||||
else
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A6V ---");
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case 7: //A7 GET PRINTING TIME
|
||||
@@ -1434,19 +1425,15 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
HARDWARE_SERIAL_PROTOCOL(itostr2(time % 60));
|
||||
HARDWARE_SERIAL_SPACE();
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("M");
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_SPACE();
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("999:999");
|
||||
}
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 8: // A8 GET SD LIST
|
||||
#ifdef SDSUPPORT
|
||||
|
||||
currentTouchscreenSelection[0] = 0;
|
||||
#if DISABLED(KNUTWURST_SPECIAL_MENU_WO_SD)
|
||||
if (!IS_SD_INSERTED())
|
||||
@@ -1466,7 +1453,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("END"); // Filelist stop
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
}
|
||||
|
||||
#endif
|
||||
break;
|
||||
case 9: // A9 pause sd print
|
||||
@@ -1476,9 +1462,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
PausePrint();
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J05");//j05 pausing
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
ai3m_pause_state = 0;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
@@ -1510,9 +1494,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if ((card.isPrinting()) || (TFTstate == ANYCUBIC_TFT_STATE_SDOUTAGE))
|
||||
{
|
||||
StopPrint();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J16"); // J16 stop print
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
TFTstate = ANYCUBIC_TFT_STATE_IDLE;
|
||||
@@ -1532,11 +1514,9 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if ((TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE))
|
||||
{
|
||||
starpos = (strchr(TFTstrchr_pointer + 4, '*'));
|
||||
|
||||
if (TFTstrchr_pointer[4] == '/')
|
||||
{
|
||||
strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 5);
|
||||
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection);
|
||||
SERIAL_EOL();
|
||||
@@ -1545,9 +1525,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
else if (TFTstrchr_pointer[4] == '<')
|
||||
{
|
||||
strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
currentTouchscreenSelection[0] = 0;
|
||||
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -1564,9 +1542,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: File open successful... J20");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J21"); // J21 Open failed
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
@@ -1623,7 +1599,9 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
else if ((CodeSeen('C')) && (!planner.movesplanned()))
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
{
|
||||
queue.inject_P(PSTR("G1 Z10")); //RASE Z AXIS
|
||||
}
|
||||
tempvalue = constrain(CodeValue(), 0, 275);
|
||||
thermalManager.setTargetHotend(tempvalue, 0);
|
||||
}
|
||||
@@ -1646,9 +1624,9 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
temp = (CodeValue() * 255 / 100);
|
||||
temp = constrain(temp, 0, 255);
|
||||
thermalManager.set_fan_speed(0, temp);
|
||||
}
|
||||
else
|
||||
} else {
|
||||
thermalManager.set_fan_speed(0, 255);
|
||||
}
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
break;
|
||||
case 19: // A19 stop stepper drivers
|
||||
@@ -1668,9 +1646,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if (CodeSeen('S'))
|
||||
{
|
||||
feedrate_percentage = constrain(CodeValue(), 40, 999);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A20V ");
|
||||
HARDWARE_SERIAL_PROTOCOL(feedrate_percentage);
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
@@ -1781,6 +1757,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
queue.inject_P(PSTR("G1 Z10")); // RAISE Z AXIS
|
||||
|
||||
thermalManager.setTargetBed(KNUTWURST_PRHEAT_BED_PLA);
|
||||
thermalManager.setTargetHotend(KNUTWURST_PRHEAT_NOZZLE_PLA, 0);
|
||||
HARDWARE_SERIAL_SUCC_START;
|
||||
@@ -1792,6 +1769,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
queue.inject_P(PSTR("G1 Z10")); //RAISE Z AXIS
|
||||
|
||||
thermalManager.setTargetBed(KNUTWURST_PRHEAT_BED_ABS);
|
||||
thermalManager.setTargetHotend(KNUTWURST_PRHEAT_NOZZLE_ABS, 0);
|
||||
HARDWARE_SERIAL_SUCC_START;
|
||||
@@ -1819,9 +1797,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if (currentTouchscreenSelection[0] == 0)
|
||||
{
|
||||
card.mount();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if ((strcasestr(currentTouchscreenSelection, SM_DIR_UP_S) != NULL)
|
||||
|| (strcasestr(currentTouchscreenSelection, SM_DIR_UP_L) != NULL))
|
||||
{
|
||||
@@ -1829,18 +1805,14 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Directory UP (cd ..)");
|
||||
#endif
|
||||
card.cdup();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if (currentTouchscreenSelection[0] == '<')
|
||||
{
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Enter Special Menu");
|
||||
#endif
|
||||
HandleSpecialMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Not a menu. Must be a directory!");
|
||||
#endif
|
||||
@@ -1856,7 +1828,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
currentTouchscreenSelection[0] = 0;
|
||||
#endif
|
||||
break;
|
||||
@@ -1873,6 +1844,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
}
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
break;
|
||||
|
||||
case 33: // A33 get version info
|
||||
{
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J33 ");
|
||||
@@ -1889,84 +1861,130 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
* Chiron printer.
|
||||
*/
|
||||
|
||||
//#define KNUTWURST_TFT_LEVELING
|
||||
//#define AUTO_BED_LEVELING_BILINEAR
|
||||
|
||||
#if ENABLED(KNUTWURST_TFT_LEVELING)
|
||||
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
case 29: // A29 bed grid read
|
||||
{
|
||||
unsigned char temp_x=0,temp_y=0;
|
||||
if(CodeSeen('X'))temp_x=CodeValue();
|
||||
if(CodeSeen('Y'))temp_y=CodeValue();
|
||||
float Zvalue=bed_level_grid[temp_x][temp_y];
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
if(CodeSeen('X')) x = CodeValue();
|
||||
if(CodeSeen('Y')) y = CodeValue();
|
||||
float Zvalue = z_values[x][y];
|
||||
Zvalue = Zvalue * 100;
|
||||
|
||||
refresh_bed_level();
|
||||
set_bed_leveling_enabled(true);
|
||||
|
||||
if(!!card.isPrinting() && sdcardstartprintingflag == 0)
|
||||
{
|
||||
if (!all_axes_known())
|
||||
{
|
||||
queue.enqueue_now_P(PSTR("G28"));
|
||||
} else {
|
||||
destination[Z_AXIS] = (float)(5.0);
|
||||
prepare_line_to_destination();
|
||||
|
||||
feedrate_mm_s = MMM_TO_MMS(3600.0f);
|
||||
|
||||
destination[X_AXIS] = _GET_MESH_X(x);
|
||||
destination[Y_AXIS] = _GET_MESH_Y(y);
|
||||
|
||||
prepare_line_to_destination();
|
||||
|
||||
destination[Z_AXIS] = (float)(EXT_LEVEL_HIGH);
|
||||
prepare_line_to_destination();
|
||||
|
||||
report_current_position();
|
||||
}
|
||||
}
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A29V ");
|
||||
HARDWARE_SERIAL_PROTOCOL(Zvalue);
|
||||
HARDWARE_SERIAL_PROTOCOL(ftostr32(Zvalue)); // or better HARDWARE_SERIAL_PROTOCOLLN?
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case 30://a30 auto leveling
|
||||
{
|
||||
|
||||
if((planner.movesplanned())||(card.sdprinting))
|
||||
{
|
||||
case 30: // A30 auto leveling
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
if( (planner.movesplanned()) || (!card.isPrinting()) ) {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J24"); // forbid auto leveling
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
} else {
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J26"); // start auto leveling
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
}
|
||||
if(CodeSeen('S') )
|
||||
{
|
||||
Manual_Leveling=0x55;
|
||||
enqueue_and_echo_commands_P(PSTR("G28\nG29"));
|
||||
}
|
||||
if(CodeSeen('S') ) {
|
||||
queue.enqueue_now_P(PSTR("G28\nG29"));
|
||||
}
|
||||
#else
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J24\r\n")); // forbid auto leveling
|
||||
#endif
|
||||
break;
|
||||
case 31: //a31 zoffset set get or save
|
||||
{
|
||||
if(Manual_Leveling==0xaa)break;
|
||||
case 31: // A31 zoffset set get or save
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
if(CodeSeen('S'))
|
||||
{
|
||||
float value = constrain(CodeValue(),-1.0,1.0);
|
||||
NEW_zprobe_zoffset+=value;
|
||||
for (uint8_t x = 0; x < ABL_GRID_POINTS_X; x++)
|
||||
{
|
||||
for (uint8_t y = 0; y < ABL_GRID_POINTS_Y; y++)
|
||||
bed_level_grid[x][y] += value;
|
||||
zprobe_zoffset += value;
|
||||
for (x = 0; x < GRID_MAX_POINTS_X; x++) {
|
||||
for (y = 0; y < GRID_MAX_POINTS_Y; y++) z_values[x][y] += value;
|
||||
}
|
||||
set_bed_leveling_enabled(true);
|
||||
refresh_bed_level();
|
||||
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A31V ");
|
||||
HARDWARE_SERIAL_PROTOCOL(NEW_zprobe_zoffset);
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
write_to_lcd_f(zprobe_zoffset);
|
||||
}
|
||||
if(CodeSeen('G')) {HARDWARE_SERIAL_PROTOCOLPGM("A31V ");HARDWARE_SERIAL_PROTOCOL(NEW_zprobe_zoffset); HARDWARE_SERIAL_ENTER(); }
|
||||
if(CodeSeen('D')) SaveAutoBedGridData();
|
||||
|
||||
if(CodeSeen('G'))
|
||||
{
|
||||
SAVE_zprobe_zoffset = zprobe_zoffset;
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("A31V ");
|
||||
write_to_lcd_f(SAVE_zprobe_zoffset);
|
||||
}
|
||||
if(CodeSeen('D'))
|
||||
{
|
||||
SAVE_zprobe_zoffset = zprobe_zoffset;
|
||||
settings.save();
|
||||
set_bed_leveling_enabled(true);
|
||||
refresh_bed_level();
|
||||
}
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
break;
|
||||
#endif
|
||||
|
||||
break;
|
||||
case 32: //a32 clean leveling beep flag
|
||||
// {
|
||||
// PointTestFlag=0;
|
||||
// }
|
||||
|
||||
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
break;
|
||||
case 34: //a34 bed grid write
|
||||
{
|
||||
uint8_t x_array=0,y_array=0,result=0;
|
||||
if(Manual_Leveling==0xaa) break;
|
||||
if(CodeSeen('X')) x_array=constrain(CodeValue(),0,ABL_GRID_POINTS_X);
|
||||
if(CodeSeen('Y')) y_array=constrain(CodeValue(),0,ABL_GRID_POINTS_Y);
|
||||
if(CodeSeen('V')) {float i=constrain(CodeValue()/100,-10,10); bed_level_grid[x_array][y_array] = i;}
|
||||
if(CodeSeen('S')) SaveAutoBedGridData();
|
||||
if(CodeSeen('C')) ReadAutoBedGridData(); // if click return(didn't choose save),needs restore bed grid data.
|
||||
#ifdef AUTO_BED_LEVELING_BILINEAR
|
||||
if(CodeSeen('X')) x = constrain(CodeValue(),0,GRID_MAX_POINTS_X);
|
||||
if(CodeSeen('Y')) y = constrain(CodeValue(),0,GRID_MAX_POINTS_Y);
|
||||
if(CodeSeen('V'))
|
||||
{
|
||||
//z_values[x][y] = (float)constrain(CodeValue()/100,-10,10);
|
||||
float new_z_value = (float)constrain(CodeValue()/100,-10,10);
|
||||
z_values[x][y] = new_z_value;
|
||||
set_bed_leveling_enabled(true);
|
||||
refresh_bed_level();
|
||||
}
|
||||
if(CodeSeen('S'))
|
||||
{
|
||||
refresh_bed_level();
|
||||
set_bed_leveling_enabled(true);
|
||||
settings.save();
|
||||
}
|
||||
if(CodeSeen('C'))
|
||||
{
|
||||
restore_z_values();
|
||||
zprobe_zoffset = SAVE_zprobe_zoffset;
|
||||
set_bed_leveling_enabled(true);
|
||||
refresh_bed_level();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
case 35:{ //RESET AUTOBED DATE //M1000
|
||||
case 35:
|
||||
{ //RESET AUTOBED DATE //M1000
|
||||
/*
|
||||
float temp;
|
||||
if(code_seen('S')) temp=code_value_float();
|
||||
else temp=-3.5;
|
||||
@@ -1986,12 +2004,12 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
SaveAutoBedGridData();
|
||||
SERIAL_ECHOPGM("Done, Manual Leveling was actived!");
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
*/
|
||||
}
|
||||
break;
|
||||
|
||||
case 36:// a36 M1001
|
||||
{
|
||||
if((planner.movesplanned())||(card.sdprinting)) //forbit auto leveling when the printer is moving
|
||||
{ /*
|
||||
if((planner.movesplanned())||(!card.isPrinting())) //forbit auto leveling when the printer is moving
|
||||
{
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J24");// forbid auto leveling
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
@@ -2024,25 +2042,22 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J26");//start auto leveling
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
HARDWARE_SERIAL_PROTOCOLLN("J26");
|
||||
|
||||
*/
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLED(KNUTWURST_MEGA_P_LASER)
|
||||
case 34:// Continuous printing
|
||||
{
|
||||
en_continue = 1 ;}
|
||||
|
||||
en_continue = 1 ;
|
||||
}
|
||||
break;
|
||||
case 35:// Continuous printing
|
||||
{
|
||||
en_continue = 0 ;}
|
||||
|
||||
en_continue = 0 ;
|
||||
}
|
||||
break;
|
||||
|
||||
case 36://A36
|
||||
if(CodeSeen('S'))
|
||||
{
|
||||
@@ -2052,7 +2067,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
Laser_printer_st.pic_vector = 1;
|
||||
else
|
||||
Laser_printer_st.pic_vector = 0;
|
||||
|
||||
}
|
||||
case 37:
|
||||
if(CodeSeen('S'))//X
|
||||
@@ -2064,7 +2078,6 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
else if(coorvalue == 1)
|
||||
Laser_printer_st.pic_x_mirror = 1; //x
|
||||
}
|
||||
|
||||
break;
|
||||
case 38:
|
||||
if(CodeSeen('S'))//A38
|
||||
@@ -2073,9 +2086,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
coorvalue=CodeValueInt();
|
||||
Laser_printer_st.pic_laser_time = coorvalue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 39:
|
||||
if(CodeSeen('S'))//A39
|
||||
{
|
||||
@@ -2084,9 +2095,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
Laser_printer_st.laser_height = coorvalue;
|
||||
HARDWARE_SERIAL_PROTOCOL("laser_height = ");
|
||||
HARDWARE_SERIAL_PROTOCOLLN(Laser_printer_st.laser_height);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
case 40:
|
||||
if(CodeSeen('S'))//A40
|
||||
@@ -2095,19 +2104,17 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
coorvalue=CodeValue();
|
||||
Laser_printer_st.pic_pixel_distance = coorvalue;
|
||||
}
|
||||
|
||||
break;
|
||||
case 41:
|
||||
if(CodeSeen('S'))//
|
||||
if(CodeSeen('S'))
|
||||
{
|
||||
float coorvalue;
|
||||
coorvalue=CodeValue();
|
||||
Laser_printer_st.x_offset = coorvalue;
|
||||
}
|
||||
|
||||
break;
|
||||
case 42:
|
||||
if(CodeSeen('S'))//
|
||||
if(CodeSeen('S'))
|
||||
{
|
||||
float coorvalue;
|
||||
coorvalue=CodeValue();
|
||||
@@ -2123,66 +2130,63 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if(coorvalue == 0)
|
||||
Laser_printer_st.pic_y_mirror = 0;
|
||||
else if(coorvalue == 1)
|
||||
Laser_printer_st.pic_y_mirror = 1; //
|
||||
|
||||
Laser_printer_st.pic_y_mirror = 1;
|
||||
}
|
||||
break;
|
||||
case 44:
|
||||
send_laser_param();//
|
||||
break;
|
||||
|
||||
case 49:// A49
|
||||
{
|
||||
laser_on_off = 0;
|
||||
WRITE(HEATER_0_PIN, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case 50:// A50
|
||||
{
|
||||
if( laser_on_off == 0)
|
||||
{
|
||||
laser_on_off = 1;
|
||||
else
|
||||
{ laser_on_off = 0;
|
||||
} else {
|
||||
laser_on_off = 0;
|
||||
WRITE(HEATER_0_PIN, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
case 51:
|
||||
{
|
||||
if(CodeSeen('H'))
|
||||
{
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z5 F500"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 X30 Y30 F5000"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z0.15 F300"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z5 F500"));
|
||||
queue.enqueue_now_P(PSTR("G1 X30 Y30 F5000"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z0.15 F300"));
|
||||
}
|
||||
else if(CodeSeen('I'))
|
||||
{
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z5 F500"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 X190 Y30 F5000"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z0.15 F300"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z5 F500"));
|
||||
queue.enqueue_now_P(PSTR("G1 X190 Y30 F5000"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z0.15 F300"));
|
||||
}
|
||||
else if(CodeSeen('J'))
|
||||
{
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z5 F500"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 X190 Y190 F5000"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z0.15 F300"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z5 F500"));
|
||||
queue.enqueue_now_P(PSTR("G1 X190 Y190 F5000"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z0.15 F300"));
|
||||
}
|
||||
else if(CodeSeen('K'))
|
||||
{
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z5 F500"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 X30 Y190 F5000"));
|
||||
enqueue_and_echo_commands_P(PSTR("G1 Z0.15 F300"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z5 F500"));
|
||||
queue.enqueue_now_P(PSTR("G1 X30 Y190 F5000"));
|
||||
queue.enqueue_now_P(PSTR("G1 Z0.15 F300"));
|
||||
}
|
||||
else if(CodeSeen('L'))
|
||||
{
|
||||
enqueue_and_echo_commands_P(PSTR("G1 X100 Y100 Z50 F5000"));
|
||||
queue.enqueue_now_P(PSTR("G1 X100 Y100 Z50 F5000"));
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2213,23 +2217,23 @@ void prepare_laser_print()
|
||||
if(laser_print_steps == 0)
|
||||
{
|
||||
cvalue[0]= 0;
|
||||
while (planner.blocks_queued());//<2F>ȴ<EFBFBD><C8B4>˶<EFBFBD>ֹͣ
|
||||
enqueue_and_echo_commands_P(PSTR("G28"));//<2F>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>߶<EFBFBD>
|
||||
while (planner.blocks_queued());
|
||||
queue.enqueue_now_P(PSTR("G28"));
|
||||
sprintf_P(cvalue,PSTR("G1 Z%i F500"),(int)Laser_printer_st.laser_height);
|
||||
|
||||
SERIAL_PROTOCOLLN(cvalue);
|
||||
enqueue_and_echo_command_now(cvalue);//<2F>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>߶<EFBFBD>
|
||||
enqueue_and_echo_command_now(cvalue);
|
||||
laser_print_steps =1;
|
||||
times = 120000;
|
||||
}
|
||||
else if(laser_print_steps==1)
|
||||
{
|
||||
if(planner.blocks_queued())return;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>?<3F><EFBFBD>
|
||||
if(planner.blocks_queued())return;
|
||||
laser_print_steps =2;
|
||||
}
|
||||
else if(laser_print_steps==2)
|
||||
{
|
||||
Laset_print_picture( );//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
Laset_print_picture( );
|
||||
laser_print_steps=0;
|
||||
card.printingHasFinished();
|
||||
card.checkautostart(true);
|
||||
@@ -2324,5 +2328,30 @@ void PowerKill()
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if ENABLED(KNUTWURST_TFT_LEVELING)
|
||||
void restore_z_values() {
|
||||
uint16_t size = z_values_size;
|
||||
int pos = z_values_index;
|
||||
uint8_t* value = (uint8_t*)&z_values;
|
||||
do {
|
||||
uint8_t c = eeprom_read_byte((unsigned char*)pos);
|
||||
*value = c;
|
||||
pos++;
|
||||
value++;
|
||||
} while (--size);
|
||||
}
|
||||
|
||||
void setupMyZoffset() {
|
||||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
SERIAL_ECHOPAIR("MEANL_L:", 0x55);
|
||||
SAVE_zprobe_zoffset = zprobe_zoffset;
|
||||
#else
|
||||
SERIAL_ECHOPAIR("MEANL_L:", 0xaa);
|
||||
zprobe_zoffset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
AnycubicTouchscreenClass AnycubicTouchscreen;
|
||||
#endif
|
||||
|
@@ -287,6 +287,12 @@ private:
|
||||
int FilamentRunoutCounter = 0;
|
||||
#endif
|
||||
|
||||
#if ENABLED(KNUTWURST_TFT_LEVELING)
|
||||
extern int z_values_index;
|
||||
extern int z_values_size;
|
||||
extern float SAVE_zprobe_zoffset;
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLED(KNUTWURST_MEGA_P_LASER)
|
||||
|
||||
|
@@ -51,6 +51,7 @@
|
||||
#include "stepper.h"
|
||||
#include "temperature.h"
|
||||
#include "../lcd/ultralcd.h"
|
||||
#include "../lcd/anycubic_touchscreen.h"
|
||||
#include "../core/language.h"
|
||||
#include "../libs/vector_3.h" // for matrix_3x3
|
||||
#include "../gcode/gcode.h"
|
||||
@@ -718,6 +719,11 @@ void MarlinSettings::postprocess() {
|
||||
EEPROM_WRITE(bilinear_grid_spacing);
|
||||
EEPROM_WRITE(bilinear_start);
|
||||
|
||||
#if ENABLED(KNUTWURST_TFT_LEVELING)
|
||||
z_values_index = eeprom_index;
|
||||
z_values_size = sizeof(z_values);
|
||||
#endif
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
EEPROM_WRITE(z_values); // 9-256 floats
|
||||
#else
|
||||
|
Reference in New Issue
Block a user