diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 70734d4972cc..a9732429326e 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,3 +1,3 @@
github: [thinkyhead]
patreon: thinkyhead
-custom: ["http://www.thinkyhead.com/donate-to-marlin"]
+custom: ["https://www.thinkyhead.com/donate-to-marlin"]
diff --git a/.github/contributing.md b/.github/contributing.md
index 589f14581a12..6bc7b5a00514 100644
--- a/.github/contributing.md
+++ b/.github/contributing.md
@@ -34,16 +34,15 @@ This project and everyone participating in it is governed by the [Marlin Code of
We have a Message Board and a Facebook group where our knowledgable user community can provide helpful advice if you have questions.
-* [Marlin RepRap forum](http://forums.reprap.org/list.php?415)
+* [Marlin RepRap forum](https://reprap.org/forum/list.php?415)
* [MarlinFirmware on Facebook](https://www.facebook.com/groups/1049718498464482/)
-If chat is more your speed, you can join the MarlinFirmware Slack team:
+If chat is more your speed, you can join the MarlinFirmware Discord server:
-* Join the Marlin Slack Team
- * To obtain group access, please [send a request](http://www.thinkyhead.com/contact/9) to @thinkyhead.
- * Even though Slack is a chat service, sometimes it takes several hours for community members to respond — please be patient!
- * Use the `#general` channel for general questions or discussion about Marlin.
- * Other channels exist for certain topics. Check the channel list.
+* Use the link https://discord.gg/n5NJ59y to join up as a General User.
+* Even though our Discord is pretty active, it may take a while for community members to respond — please be patient!
+* Use the `#general` channel for general questions or discussion about Marlin.
+* Other channels exist for certain topics or are limited to Patrons. Check the channel list.
## How Can I Contribute?
diff --git a/.github/issue_template.md b/.github/issue_template.md
index ecfb36f0d580..6cb34b8f588a 100644
--- a/.github/issue_template.md
+++ b/.github/issue_template.md
@@ -2,9 +2,13 @@
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/.github/code_of_conduct.md
-Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use the Marlin Firmware forum at http://forums.reprap.org/list.php?415 or the Marlin Facebook Group https://www.facebook.com/groups/1049718498464482/ or the Marlin Discord Server https://discord.gg/n5NJ59y.
+Do you want to ask a question? Are you looking for support? Please don't post here. Instead use one of the following options:
-Before filing an issue be sure to test the 1.1 and/or 2.0 "bugfix" branches to see whether the issue is already addressed.
+- The Marlin Firmware forum at https://reprap.org/forum/list.php?415
+- The MarlinFirmware Facebook Group at https://www.facebook.com/groups/1049718498464482/
+- The MarlinFirmware Discord Server at https://discord.gg/n5NJ59y.
+
+Before filing an issue be sure to test the latest "bugfix" branch to see whether the issue is already addressed.
-->
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 78044525618b..a01571c42232 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -135,13 +135,13 @@
//#define CUSTOM_MACHINE_NAME "3D Printer"
// Printer's unique ID, used by some programs to differentiate between machines.
-// Choose your own or use a service like http://www.uuidgenerator.net/version4
+// Choose your own or use a service like https://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
// This defines the number of extruders
-// :[1, 2, 3, 4, 5, 6, 7, 8]
+// :[0, 1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
@@ -473,7 +473,7 @@
//===========================================================================
//============================= PID Settings ================================
//===========================================================================
-// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
+// PID Tuning Guide here: https://reprap.org/wiki/PID_Tuning
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
@@ -2142,26 +2142,30 @@
//
// FSMC display (MKS Robin, Alfawise U20, JGAurora A5S, REXYZ A1, etc.)
+// Upscaled 128x64 Marlin UI
//
//#define FSMC_GRAPHICAL_TFT
//
// TFT LVGL UI
//
-// Default MKS icons and fonts: https://git.io/JJvzK
-// Copy mks_pic and mks_font folders to the root of your SD
+// Using default MKS icons and fonts from: https://git.io/JJvzK
+// Just copy the 'assets' folder from the build directory to the
+// root of your SD card, together with the compiled firmware.
//
-//#define TFT_LVGL_UI
+//#define TFT_LVGL_UI_FSMC // Robin nano v1.2 uses FSMC
+//#define TFT_LVGL_UI_SPI // Robin nano v2.0 uses SPI
+
+//
+// Anycubic Mega TFT (AI3M)
+//
+//#define ANYCUBIC_TFT_MODEL
+//#define ANYCUBIC_TFT_DEBUG
//=============================================================================
//============================ Other Controllers ============================
//=============================================================================
-//
-// Robin nano v2.0 SPI touch screen
-//
-//#define SPI_GRAPHICAL_TFT
-
//
// Ender-3 v2 OEM display. A DWIN display with Rotary Encoder.
//
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 0945a6c43409..3f097c09e311 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -375,6 +375,7 @@
#if ENABLED(USE_CONTROLLER_FAN)
//#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
//#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered
+ //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled.
#define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
#define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled
#define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled
@@ -897,6 +898,9 @@
//#define CALIBRATION_GCODE
#if ENABLED(CALIBRATION_GCODE)
+ //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..."
+ //#define CALIBRATION_SCRIPT_POST "M500\nM117 Calibration data saved"
+
#define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm
#define CALIBRATION_FEEDRATE_SLOW 60 // mm/m
diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino
index 213c18a94ec0..57c825445fb5 100644
--- a/Marlin/Marlin.ino
+++ b/Marlin/Marlin.ino
@@ -37,7 +37,7 @@ Configuration
Getting Help
- - http://forums.reprap.org/list.php?415
+ - https://reprap.org/forum/list.php?415
The Marlin Discussion Forum is a great place to get help from other Marlin
users who may have experienced similar issues to your own.
diff --git a/Marlin/Version.h b/Marlin/Version.h
index a698b435cd31..fe0724fbfcb1 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -71,6 +71,6 @@
* Set the vendor info the serial USB interface, if changable
* Currently only supported by DUE platform
*/
-//#define USB_DEVICE_VENDOR_ID 0x0000
-//#define USB_DEVICE_PRODUCT_ID 0x0000
-//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
+//#define USB_DEVICE_VENDOR_ID 0x0000
+//#define USB_DEVICE_PRODUCT_ID 0x0000
+//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
diff --git a/Marlin/src/HAL/AVR/eeprom.cpp b/Marlin/src/HAL/AVR/eeprom.cpp
index d23ac2f32a5d..c7906985eb60 100644
--- a/Marlin/src/HAL/AVR/eeprom.cpp
+++ b/Marlin/src/HAL/AVR/eeprom.cpp
@@ -55,7 +55,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/AVR/fastio.h b/Marlin/src/HAL/AVR/fastio.h
index c3239186baca..bd6935aaf0ce 100644
--- a/Marlin/src/HAL/AVR/fastio.h
+++ b/Marlin/src/HAL/AVR/fastio.h
@@ -57,7 +57,7 @@
*
* Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/cpp/Stringification.html
*/
#define _READ(IO) TEST(DIO ## IO ## _RPORT, DIO ## IO ## _PIN)
diff --git a/Marlin/src/HAL/DUE/Tone.cpp b/Marlin/src/HAL/DUE/Tone.cpp
index e6c72c728b67..9beb6022237f 100644
--- a/Marlin/src/HAL/DUE/Tone.cpp
+++ b/Marlin/src/HAL/DUE/Tone.cpp
@@ -24,7 +24,7 @@
/**
* Description: Tone function for Arduino Due and compatible (SAM3X8E)
- * Derived from http://forum.arduino.cc/index.php?topic=136500.msg2903012#msg2903012
+ * Derived from https://forum.arduino.cc/index.php?topic=136500.msg2903012#msg2903012
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/eeprom_flash.cpp b/Marlin/src/HAL/DUE/eeprom_flash.cpp
index 74d4e81fa6c0..d98f06039f51 100644
--- a/Marlin/src/HAL/DUE/eeprom_flash.cpp
+++ b/Marlin/src/HAL/DUE/eeprom_flash.cpp
@@ -993,7 +993,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/DUE/eeprom_wired.cpp b/Marlin/src/HAL/DUE/eeprom_wired.cpp
index 496d81f28224..4599d6a7cd44 100644
--- a/Marlin/src/HAL/DUE/eeprom_wired.cpp
+++ b/Marlin/src/HAL/DUE/eeprom_wired.cpp
@@ -58,7 +58,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/DUE/fastio.h b/Marlin/src/HAL/DUE/fastio.h
index 9d6bfa164aed..286319302dd2 100644
--- a/Marlin/src/HAL/DUE/fastio.h
+++ b/Marlin/src/HAL/DUE/fastio.h
@@ -58,7 +58,7 @@
*
* Now you can simply SET_OUTPUT(STEP); WRITE(STEP, HIGH); WRITE(STEP, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/cpp/Stringification.html
*/
// Read a pin
diff --git a/Marlin/src/HAL/DUE/usb/arduino_due_x.h b/Marlin/src/HAL/DUE/usb/arduino_due_x.h
index 7355f74f6d9b..b5be621791d2 100644
--- a/Marlin/src/HAL/DUE/usb/arduino_due_x.h
+++ b/Marlin/src/HAL/DUE/usb/arduino_due_x.h
@@ -43,7 +43,7 @@
#pragma once
/**
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
/**
diff --git a/Marlin/src/HAL/DUE/usb/compiler.h b/Marlin/src/HAL/DUE/usb/compiler.h
index 33df080e2f89..7b746543c4c6 100644
--- a/Marlin/src/HAL/DUE/usb/compiler.h
+++ b/Marlin/src/HAL/DUE/usb/compiler.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef UTILS_COMPILER_H
diff --git a/Marlin/src/HAL/DUE/usb/conf_access.h b/Marlin/src/HAL/DUE/usb/conf_access.h
index fdac1ab7e848..f401685223cb 100644
--- a/Marlin/src/HAL/DUE/usb/conf_access.h
+++ b/Marlin/src/HAL/DUE/usb/conf_access.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _CONF_ACCESS_H_
diff --git a/Marlin/src/HAL/DUE/usb/conf_clock.h b/Marlin/src/HAL/DUE/usb/conf_clock.h
index d0f68500ad71..97e70e99a5b9 100644
--- a/Marlin/src/HAL/DUE/usb/conf_clock.h
+++ b/Marlin/src/HAL/DUE/usb/conf_clock.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef CONF_CLOCK_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/conf_usb.h b/Marlin/src/HAL/DUE/usb/conf_usb.h
index 7beb9b0bba7c..4de9e347e213 100644
--- a/Marlin/src/HAL/DUE/usb/conf_usb.h
+++ b/Marlin/src/HAL/DUE/usb/conf_usb.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _CONF_USB_H_
diff --git a/Marlin/src/HAL/DUE/usb/ctrl_access.c b/Marlin/src/HAL/DUE/usb/ctrl_access.c
index 0ec14e0b8f8d..99f97f62cb80 100644
--- a/Marlin/src/HAL/DUE/usb/ctrl_access.c
+++ b/Marlin/src/HAL/DUE/usb/ctrl_access.c
@@ -53,7 +53,7 @@
*
******************************************************************************/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/ctrl_access.h b/Marlin/src/HAL/DUE/usb/ctrl_access.h
index af6c8ceb963e..b33839076eae 100644
--- a/Marlin/src/HAL/DUE/usb/ctrl_access.h
+++ b/Marlin/src/HAL/DUE/usb/ctrl_access.h
@@ -53,7 +53,7 @@
*
******************************************************************************/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
diff --git a/Marlin/src/HAL/DUE/usb/genclk.h b/Marlin/src/HAL/DUE/usb/genclk.h
index 895aba035229..cde03bc0d107 100644
--- a/Marlin/src/HAL/DUE/usb/genclk.h
+++ b/Marlin/src/HAL/DUE/usb/genclk.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef CHIP_GENCLK_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/mrepeat.h b/Marlin/src/HAL/DUE/usb/mrepeat.h
index 5a2017be99e9..8363d9cde380 100644
--- a/Marlin/src/HAL/DUE/usb/mrepeat.h
+++ b/Marlin/src/HAL/DUE/usb/mrepeat.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _MREPEAT_H_
diff --git a/Marlin/src/HAL/DUE/usb/osc.h b/Marlin/src/HAL/DUE/usb/osc.h
index 3a9543507bb8..953bcbbed1d3 100644
--- a/Marlin/src/HAL/DUE/usb/osc.h
+++ b/Marlin/src/HAL/DUE/usb/osc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef CHIP_OSC_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/pll.h b/Marlin/src/HAL/DUE/usb/pll.h
index d3d2174870e5..8eaf27672b25 100644
--- a/Marlin/src/HAL/DUE/usb/pll.h
+++ b/Marlin/src/HAL/DUE/usb/pll.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef CHIP_PLL_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/preprocessor.h b/Marlin/src/HAL/DUE/usb/preprocessor.h
index 184c03ae7103..c12d01cb642f 100644
--- a/Marlin/src/HAL/DUE/usb/preprocessor.h
+++ b/Marlin/src/HAL/DUE/usb/preprocessor.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _PREPROCESSOR_H_
diff --git a/Marlin/src/HAL/DUE/usb/sbc_protocol.h b/Marlin/src/HAL/DUE/usb/sbc_protocol.h
index 082b735fa619..ab845739fd48 100644
--- a/Marlin/src/HAL/DUE/usb/sbc_protocol.h
+++ b/Marlin/src/HAL/DUE/usb/sbc_protocol.h
@@ -52,7 +52,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _SBC_PROTOCOL_H_
#define _SBC_PROTOCOL_H_
diff --git a/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.h b/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.h
index 6df82c146b75..d77e4f95232b 100644
--- a/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.h
+++ b/Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.h
@@ -42,7 +42,7 @@
*
******************************************************************************/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
diff --git a/Marlin/src/HAL/DUE/usb/spc_protocol.h b/Marlin/src/HAL/DUE/usb/spc_protocol.h
index 6fadb9f36caa..d67cc5c78803 100644
--- a/Marlin/src/HAL/DUE/usb/spc_protocol.h
+++ b/Marlin/src/HAL/DUE/usb/spc_protocol.h
@@ -45,7 +45,7 @@
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _SPC_PROTOCOL_H_
#define _SPC_PROTOCOL_H_
diff --git a/Marlin/src/HAL/DUE/usb/stringz.h b/Marlin/src/HAL/DUE/usb/stringz.h
index b914b7348933..fc9aaf38a4cf 100644
--- a/Marlin/src/HAL/DUE/usb/stringz.h
+++ b/Marlin/src/HAL/DUE/usb/stringz.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _STRINGZ_H_
diff --git a/Marlin/src/HAL/DUE/usb/sysclk.c b/Marlin/src/HAL/DUE/usb/sysclk.c
index 899244dd88d0..cbb4e2c9ef22 100644
--- a/Marlin/src/HAL/DUE/usb/sysclk.c
+++ b/Marlin/src/HAL/DUE/usb/sysclk.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/sysclk.h b/Marlin/src/HAL/DUE/usb/sysclk.h
index 48c99de2983e..16db8c86d373 100644
--- a/Marlin/src/HAL/DUE/usb/sysclk.h
+++ b/Marlin/src/HAL/DUE/usb/sysclk.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef CHIP_SYSCLK_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/tpaste.h b/Marlin/src/HAL/DUE/usb/tpaste.h
index f8ec44a41def..2ad3f2758e8a 100644
--- a/Marlin/src/HAL/DUE/usb/tpaste.h
+++ b/Marlin/src/HAL/DUE/usb/tpaste.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _TPASTE_H_
diff --git a/Marlin/src/HAL/DUE/usb/udc.c b/Marlin/src/HAL/DUE/usb/udc.c
index 048a902d3b5e..60bf0cfff35c 100644
--- a/Marlin/src/HAL/DUE/usb/udc.c
+++ b/Marlin/src/HAL/DUE/usb/udc.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/udc.h b/Marlin/src/HAL/DUE/usb/udc.h
index 885bdf04d651..8d92eb5c038a 100644
--- a/Marlin/src/HAL/DUE/usb/udc.h
+++ b/Marlin/src/HAL/DUE/usb/udc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDC_H_
diff --git a/Marlin/src/HAL/DUE/usb/udc_desc.h b/Marlin/src/HAL/DUE/usb/udc_desc.h
index 88ed08a96118..052ca08eca78 100644
--- a/Marlin/src/HAL/DUE/usb/udc_desc.h
+++ b/Marlin/src/HAL/DUE/usb/udc_desc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDC_DESC_H_
diff --git a/Marlin/src/HAL/DUE/usb/udd.h b/Marlin/src/HAL/DUE/usb/udd.h
index c87763de23fa..7ec8c03dee63 100644
--- a/Marlin/src/HAL/DUE/usb/udd.h
+++ b/Marlin/src/HAL/DUE/usb/udd.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDD_H_
diff --git a/Marlin/src/HAL/DUE/usb/udi.h b/Marlin/src/HAL/DUE/usb/udi.h
index 709908cad947..febf03b7181e 100644
--- a/Marlin/src/HAL/DUE/usb/udi.h
+++ b/Marlin/src/HAL/DUE/usb/udi.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDI_H_
diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc.c b/Marlin/src/HAL/DUE/usb/udi_cdc.c
index 60c9546ce236..cbe23dbb68fb 100644
--- a/Marlin/src/HAL/DUE/usb/udi_cdc.c
+++ b/Marlin/src/HAL/DUE/usb/udi_cdc.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc.h b/Marlin/src/HAL/DUE/usb/udi_cdc.h
index 526419c86002..0ecf7bb00e5e 100644
--- a/Marlin/src/HAL/DUE/usb/udi_cdc.h
+++ b/Marlin/src/HAL/DUE/usb/udi_cdc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDI_CDC_H_
@@ -701,7 +701,7 @@ iram_size_t udi_cdc_multi_write_buf(uint8_t port, const void* buf, iram_size_t s
* another "Composite Device" module, like "USB HID Mouse (Composite Device)".
*
* Also, you can refer to application note
- *
+ *
* AVR4902 ASF - USB Composite Device.
*
* \section udi_cdc_use_case_composite_setup Setup steps
diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc_conf.h b/Marlin/src/HAL/DUE/usb/udi_cdc_conf.h
index cbd3eb00ae71..d406a87743f3 100644
--- a/Marlin/src/HAL/DUE/usb/udi_cdc_conf.h
+++ b/Marlin/src/HAL/DUE/usb/udi_cdc_conf.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDI_CDC_CONF_H_
diff --git a/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c b/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c
index 8f730ba823d1..97c334e2a854 100644
--- a/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c
+++ b/Marlin/src/HAL/DUE/usb/udi_cdc_desc.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/udi_composite_desc.c b/Marlin/src/HAL/DUE/usb/udi_composite_desc.c
index 07bdd1b9d692..da74fbe60dfe 100644
--- a/Marlin/src/HAL/DUE/usb/udi_composite_desc.c
+++ b/Marlin/src/HAL/DUE/usb/udi_composite_desc.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/udi_msc.c b/Marlin/src/HAL/DUE/usb/udi_msc.c
index 627bca0d4f5a..b7c3bb5ea016 100644
--- a/Marlin/src/HAL/DUE/usb/udi_msc.c
+++ b/Marlin/src/HAL/DUE/usb/udi_msc.c
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/udi_msc.h b/Marlin/src/HAL/DUE/usb/udi_msc.h
index c632ee4aacee..730dbc8eec56 100644
--- a/Marlin/src/HAL/DUE/usb/udi_msc.h
+++ b/Marlin/src/HAL/DUE/usb/udi_msc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _UDI_MSC_H_
@@ -290,7 +290,7 @@ bool udi_msc_trans_block(bool b_read, uint8_t * block, iram_size_t block_size,
* another "Composite Device" module, like "USB HID Mouse (Composite Device)".
*
* Also, you can refer to application note
- *
+ *
* AVR4902 ASF - USB Composite Device.
*
* \section udi_msc_use_case_composite_setup Setup steps
diff --git a/Marlin/src/HAL/DUE/usb/uotghs_device_due.c b/Marlin/src/HAL/DUE/usb/uotghs_device_due.c
index 2a10190c7eca..e13232a39c7d 100644
--- a/Marlin/src/HAL/DUE/usb/uotghs_device_due.c
+++ b/Marlin/src/HAL/DUE/usb/uotghs_device_due.c
@@ -42,7 +42,7 @@
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/uotghs_device_due.h b/Marlin/src/HAL/DUE/usb/uotghs_device_due.h
index 97877994bf66..6df26d63dfd4 100644
--- a/Marlin/src/HAL/DUE/usb/uotghs_device_due.h
+++ b/Marlin/src/HAL/DUE/usb/uotghs_device_due.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef UOTGHS_DEVICE_DUE_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/uotghs_otg.h b/Marlin/src/HAL/DUE/usb/uotghs_otg.h
index 86c903b2c18f..eca5e938bbe1 100644
--- a/Marlin/src/HAL/DUE/usb/uotghs_otg.h
+++ b/Marlin/src/HAL/DUE/usb/uotghs_otg.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef UOTGHS_OTG_H_INCLUDED
diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol.h b/Marlin/src/HAL/DUE/usb/usb_protocol.h
index 31c783f974cf..ea51a8689649 100644
--- a/Marlin/src/HAL/DUE/usb/usb_protocol.h
+++ b/Marlin/src/HAL/DUE/usb/usb_protocol.h
@@ -44,7 +44,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _USB_PROTOCOL_H_
diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h b/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h
index 49fc7387ef31..d594db52e33b 100644
--- a/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h
+++ b/Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _USB_PROTOCOL_CDC_H_
#define _USB_PROTOCOL_CDC_H_
diff --git a/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h b/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h
index db8f9cafd081..0fef30804662 100644
--- a/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h
+++ b/Marlin/src/HAL/DUE/usb/usb_protocol_msc.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _USB_PROTOCOL_MSC_H_
diff --git a/Marlin/src/HAL/DUE/usb/usb_task.c b/Marlin/src/HAL/DUE/usb/usb_task.c
index 29d02faef703..66bdb265d881 100644
--- a/Marlin/src/HAL/DUE/usb/usb_task.c
+++ b/Marlin/src/HAL/DUE/usb/usb_task.c
@@ -41,7 +41,7 @@
*
*/
-// Support and FAQ: visit Atmel Support
+// Support and FAQ: visit Atmel Support
#ifdef ARDUINO_ARCH_SAM
diff --git a/Marlin/src/HAL/DUE/usb/usb_task.h b/Marlin/src/HAL/DUE/usb/usb_task.h
index fad62fda504b..e9831ae0628a 100644
--- a/Marlin/src/HAL/DUE/usb/usb_task.h
+++ b/Marlin/src/HAL/DUE/usb/usb_task.h
@@ -41,7 +41,7 @@
*
*/
/*
- * Support and FAQ: visit Atmel Support
+ * Support and FAQ: visit Atmel Support
*/
#ifndef _USB_TASK_H_
diff --git a/Marlin/src/HAL/LINUX/fastio.h b/Marlin/src/HAL/LINUX/fastio.h
index 8f18d6ab607a..4567c62a5106 100644
--- a/Marlin/src/HAL/LINUX/fastio.h
+++ b/Marlin/src/HAL/LINUX/fastio.h
@@ -44,7 +44,7 @@
*
* Now you can simply SET_OUTPUT(STEP); WRITE(STEP, HIGH); WRITE(STEP, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/gcc-4.8.5/cpp/Stringification.html
*/
/// Read a pin
diff --git a/Marlin/src/HAL/LPC1768/fastio.h b/Marlin/src/HAL/LPC1768/fastio.h
index 31cd8772d16d..c553ffb1820d 100644
--- a/Marlin/src/HAL/LPC1768/fastio.h
+++ b/Marlin/src/HAL/LPC1768/fastio.h
@@ -56,7 +56,7 @@
*
* Now you can simply SET_OUTPUT(STEP); WRITE(STEP, HIGH); WRITE(STEP, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/gcc-4.8.5/cpp/Stringification.html
*/
/// Read a pin
diff --git a/Marlin/src/HAL/STM32/HAL.cpp b/Marlin/src/HAL/STM32/HAL.cpp
index 8a619bfb5071..b1b727ce195b 100644
--- a/Marlin/src/HAL/STM32/HAL.cpp
+++ b/Marlin/src/HAL/STM32/HAL.cpp
@@ -63,7 +63,7 @@ uint16_t HAL_adc_result;
void HAL_init() {
FastIO_init();
- #if ENABLED(SDSUPPORT)
+ #if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT)
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
#endif
diff --git a/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp b/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
index bab77b55daf1..9d32b342e440 100644
--- a/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
+++ b/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
@@ -41,8 +41,7 @@
}
bool SDIO_Init() {
- if (hsd.State == HAL_SD_STATE_READY) return 1; // return passing status
- return 0; // return failing status
+ return hsd.State == HAL_SD_STATE_READY; // return pass/fail status
}
bool SDIO_ReadBlock(uint32_t block, uint8_t *src) {
@@ -58,7 +57,6 @@
#else // !USBD_USE_CDC_COMPOSITE
// use local drivers
-
#if defined(STM32F103xE) || defined(STM32F103xG)
#include
#include
@@ -274,7 +272,6 @@
bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
hsd.Instance = SDIO;
uint8_t retryCnt = SD_RETRY_COUNT;
-
bool status;
for (;;) {
status = (bool) HAL_SD_WriteBlocks(&hsd, (uint8_t*)src, block, 1, 500); // write one 512 byte block with 500mS timeout
diff --git a/Marlin/src/HAL/STM32/fastio.h b/Marlin/src/HAL/STM32/fastio.h
index 38a2e28cfb3b..d90b2fbeb02d 100644
--- a/Marlin/src/HAL/STM32/fastio.h
+++ b/Marlin/src/HAL/STM32/fastio.h
@@ -64,12 +64,14 @@ void FastIO_init(); // Must be called before using fast io macros
#define _GET_MODE(IO)
#define _SET_MODE(IO,M) pinMode(IO, M)
#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) /*!< Output Push Pull Mode & GPIO_NOPULL */
+#define _SET_OUTPUT_OD(IO) pinMode(IO, OUTPUT_OPEN_DRAIN)
#define WRITE(IO,V) _WRITE(IO,V)
#define READ(IO) _READ(IO)
#define TOGGLE(IO) _TOGGLE(IO)
#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); }while(0)
+#define OUT_WRITE_OD(IO,V) do{ _SET_OUTPUT_OD(IO); WRITE(IO,V); }while(0)
#define SET_INPUT(IO) _SET_MODE(IO, INPUT) /*!< Input Floating Mode */
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) /*!< Input with Pull-up activation */
diff --git a/Marlin/src/HAL/STM32F1/SPI.cpp b/Marlin/src/HAL/STM32F1/SPI.cpp
index 991ceb3148ee..80095ba1dce8 100644
--- a/Marlin/src/HAL/STM32F1/SPI.cpp
+++ b/Marlin/src/HAL/STM32F1/SPI.cpp
@@ -216,7 +216,7 @@ void SPIClass::setDataMode(uint8_t dataMode) {
/**
* Notes:
* As far as we know the AVR numbers for dataMode match the numbers required by the STM32.
- * From the AVR doc http://www.atmel.com/images/doc2585.pdf section 2.4
+ * From the AVR doc https://www.atmel.com/images/doc2585.pdf section 2.4
*
* SPI Mode CPOL CPHA Shift SCK-edge Capture SCK-edge
* 0 0 0 Falling Rising
diff --git a/Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp b/Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp
new file mode 100644
index 000000000000..f77306a88a17
--- /dev/null
+++ b/Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp
@@ -0,0 +1,81 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * PersistentStore for Arduino-style EEPROM interface
+ * with simple implementations supplied by Marlin.
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(IIC_BL24CXX_EEPROM)
+
+#include "../shared/eeprom_if.h"
+#include "../shared/eeprom_api.h"
+
+//
+// PersistentStore
+//
+
+#ifndef MARLIN_EEPROM_SIZE
+ #error "MARLIN_EEPROM_SIZE is required for IIC_BL24CXX_EEPROM."
+#endif
+
+size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
+
+bool PersistentStore::access_start() { eeprom_init(); return true; }
+bool PersistentStore::access_finish() { return true; }
+
+bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
+ while (size--) {
+ uint8_t v = *value;
+ uint8_t * const p = (uint8_t * const)pos;
+ // EEPROM has only ~100,000 write cycles,
+ // so only write bytes that have changed!
+ if (v != eeprom_read_byte(p)) {
+ eeprom_write_byte(p, v);
+ delay(2);
+ if (eeprom_read_byte(p) != v) {
+ SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
+ return true;
+ }
+ }
+ crc16(crc, &v, 1);
+ pos++;
+ value++;
+ }
+ return false;
+}
+
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
+ do {
+ uint8_t * const p = (uint8_t * const)pos;
+ uint8_t c = eeprom_read_byte(p);
+ if (writing) *value = c;
+ crc16(crc, &c, 1);
+ pos++;
+ value++;
+ } while (--size);
+ return false;
+}
+
+#endif // IIC_BL24CXX_EEPROM
diff --git a/Marlin/src/HAL/STM32F1/eeprom_if_iic.cpp b/Marlin/src/HAL/STM32F1/eeprom_if_iic.cpp
new file mode 100644
index 000000000000..33dd277addbe
--- /dev/null
+++ b/Marlin/src/HAL/STM32F1/eeprom_if_iic.cpp
@@ -0,0 +1,51 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Platform-independent Arduino functions for I2C EEPROM.
+ * Enable USE_SHARED_EEPROM if not supplied by the framework.
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(IIC_BL24CXX_EEPROM)
+
+#include "../../libs/BL24CXX.h"
+#include "../shared/eeprom_if.h"
+
+void eeprom_init() { BL24CXX::init(); }
+
+// ------------------------
+// Public functions
+// ------------------------
+
+void eeprom_write_byte(uint8_t *pos, unsigned char value) {
+ const unsigned eeprom_address = (unsigned)pos;
+ return BL24CXX::writeOneByte(eeprom_address, value);
+}
+
+uint8_t eeprom_read_byte(uint8_t *pos) {
+ const unsigned eeprom_address = (unsigned)pos;
+ return BL24CXX::readOneByte(eeprom_address);
+}
+
+#endif // IIC_BL24CXX_EEPROM
diff --git a/Marlin/src/HAL/STM32F1/eeprom_wired.cpp b/Marlin/src/HAL/STM32F1/eeprom_wired.cpp
index e495fd8ecf53..b4699d00dcc0 100644
--- a/Marlin/src/HAL/STM32F1/eeprom_wired.cpp
+++ b/Marlin/src/HAL/STM32F1/eeprom_wired.cpp
@@ -68,7 +68,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h
index 5fd916624191..656fbe1ce259 100644
--- a/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h
+++ b/Marlin/src/HAL/STM32F1/inc/Conditionals_post.h
@@ -27,3 +27,8 @@
#elif EITHER(I2C_EEPROM, SPI_EEPROM)
#define USE_SHARED_EEPROM 1
#endif
+
+// Allow SDSUPPORT to be disabled
+#if DISABLED(SDSUPPORT)
+ #undef SDIO_SUPPORT
+#endif
diff --git a/Marlin/src/HAL/STM32F1/inc/SanityCheck.h b/Marlin/src/HAL/STM32F1/inc/SanityCheck.h
index 47f4f59b219b..5559b3d4a480 100644
--- a/Marlin/src/HAL/STM32F1/inc/SanityCheck.h
+++ b/Marlin/src/HAL/STM32F1/inc/SanityCheck.h
@@ -29,10 +29,6 @@
#error "EMERGENCY_PARSER is not yet implemented for STM32F1. Disable EMERGENCY_PARSER to continue."
#endif
-#if ENABLED(SDIO_SUPPORT) && DISABLED(SDSUPPORT)
- #error "SDIO_SUPPORT requires SDSUPPORT. Enable SDSUPPORT to continue."
-#endif
-
#if ENABLED(FAST_PWM_FAN)
#error "FAST_PWM_FAN is not yet implemented for this platform."
#endif
diff --git a/Marlin/src/HAL/STM32_F4_F7/eeprom_flash.cpp b/Marlin/src/HAL/STM32_F4_F7/eeprom_flash.cpp
index 9a0791e437a7..00b808fd4824 100644
--- a/Marlin/src/HAL/STM32_F4_F7/eeprom_flash.cpp
+++ b/Marlin/src/HAL/STM32_F4_F7/eeprom_flash.cpp
@@ -92,7 +92,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/STM32_F4_F7/eeprom_wired.cpp b/Marlin/src/HAL/STM32_F4_F7/eeprom_wired.cpp
index f3df536cb2f3..c0d82dbd0754 100644
--- a/Marlin/src/HAL/STM32_F4_F7/eeprom_wired.cpp
+++ b/Marlin/src/HAL/STM32_F4_F7/eeprom_wired.cpp
@@ -58,7 +58,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/TEENSY31_32/eeprom.cpp b/Marlin/src/HAL/TEENSY31_32/eeprom.cpp
index 12be9ff72c17..f66313225562 100644
--- a/Marlin/src/HAL/TEENSY31_32/eeprom.cpp
+++ b/Marlin/src/HAL/TEENSY31_32/eeprom.cpp
@@ -54,7 +54,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/TEENSY31_32/fastio.h b/Marlin/src/HAL/TEENSY31_32/fastio.h
index c564a718357b..9a299de9c763 100644
--- a/Marlin/src/HAL/TEENSY31_32/fastio.h
+++ b/Marlin/src/HAL/TEENSY31_32/fastio.h
@@ -39,7 +39,7 @@
*
* Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/gcc-4.8.5/cpp/Stringification.html
*/
#define _READ(P) bool(CORE_PIN ## P ## _PINREG & CORE_PIN ## P ## _BITMASK)
diff --git a/Marlin/src/HAL/TEENSY35_36/eeprom.cpp b/Marlin/src/HAL/TEENSY35_36/eeprom.cpp
index de67ef9e1d73..d2d7324cdd97 100644
--- a/Marlin/src/HAL/TEENSY35_36/eeprom.cpp
+++ b/Marlin/src/HAL/TEENSY35_36/eeprom.cpp
@@ -58,7 +58,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
crc16(crc, &v, 1);
pos++;
value++;
- };
+ }
return false;
}
diff --git a/Marlin/src/HAL/TEENSY35_36/fastio.h b/Marlin/src/HAL/TEENSY35_36/fastio.h
index c564a718357b..9a299de9c763 100644
--- a/Marlin/src/HAL/TEENSY35_36/fastio.h
+++ b/Marlin/src/HAL/TEENSY35_36/fastio.h
@@ -39,7 +39,7 @@
*
* Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
*
- * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
+ * Why double up on these macros? see https://gcc.gnu.org/onlinedocs/gcc-4.8.5/cpp/Stringification.html
*/
#define _READ(P) bool(CORE_PIN ## P ## _PINREG & CORE_PIN ## P ## _BITMASK)
diff --git a/Marlin/src/HAL/shared/backtrace/unwarmbytab.cpp b/Marlin/src/HAL/shared/backtrace/unwarmbytab.cpp
index 207cd56aa82e..f524673ecd74 100644
--- a/Marlin/src/HAL/shared/backtrace/unwarmbytab.cpp
+++ b/Marlin/src/HAL/shared/backtrace/unwarmbytab.cpp
@@ -4,7 +4,7 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
* This library was modified, some bugs fixed, stack address validated
* and adapted to be used in Marlin 3D printer firmware as backtracer
diff --git a/Marlin/src/HAL/shared/eeprom_api.h b/Marlin/src/HAL/shared/eeprom_api.h
index b97267484e62..6445f7a4aae4 100644
--- a/Marlin/src/HAL/shared/eeprom_api.h
+++ b/Marlin/src/HAL/shared/eeprom_api.h
@@ -29,20 +29,38 @@
class PersistentStore {
public:
+
+ // Total available persistent storage space (in bytes)
+ static size_t capacity();
+
+ // Prepare to read or write
static bool access_start();
+
+ // Housecleaning after read or write
static bool access_finish();
+
+ // Write one or more bytes of data and update the CRC
+ // Return 'true' on write error
static bool write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc);
+
+ // Read one or more bytes of data and update the CRC
+ // Return 'true' on read error
static bool read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing=true);
- static size_t capacity();
+ // Write one or more bytes of data
+ // Return 'true' on write error
static inline bool write_data(const int pos, const uint8_t* value, const size_t size=sizeof(uint8_t)) {
int data_pos = pos;
uint16_t crc = 0;
return write_data(data_pos, value, size, &crc);
}
+ // Write a single byte of data
+ // Return 'true' on write error
static inline bool write_data(const int pos, const uint8_t value) { return write_data(pos, &value); }
+ // Read one or more bytes of data
+ // Return 'true' on read error
static inline bool read_data(const int pos, uint8_t* value, const size_t size=1) {
int data_pos = pos;
uint16_t crc = 0;
diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp
index 55c0bda4ac01..00ea51b058ea 100644
--- a/Marlin/src/MarlinCore.cpp
+++ b/Marlin/src/MarlinCore.cpp
@@ -59,10 +59,11 @@
#include "gcode/parser.h"
#include "gcode/queue.h"
-#if ENABLED(TFT_LVGL_UI)
- #include "lvgl.h"
+#if HAS_TFT_LVGL_UI
#include "lcd/extui/lib/mks_ui/tft_lvgl_configuration.h"
#include "lcd/extui/lib/mks_ui/draw_ui.h"
+ #include "lcd/extui/lib/mks_ui/mks_hardware_test.h"
+ #include
#endif
#if ENABLED(DWIN_CREALITY_LCD)
@@ -72,7 +73,7 @@
#endif
#if ENABLED(IIC_BL24CXX_EEPROM)
- #include "lcd/dwin/eeprom_BL24CXX.h"
+ #include "libs/BL24CXX.h"
#endif
#if ENABLED(DIRECT_STEPPING)
@@ -755,7 +756,7 @@ void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep/*=false*/)) {
// Direct Stepping
TERN_(DIRECT_STEPPING, page_manager.write_responses());
- #if ENABLED(TFT_LVGL_UI)
+ #if HAS_TFT_LVGL_UI
LV_TASK_HANDLER();
#endif
}
@@ -1171,7 +1172,7 @@ void setup() {
#if ENABLED(IIC_BL24CXX_EEPROM)
BL24CXX::init();
const uint8_t err = BL24CXX::check();
- SERIAL_ECHO_TERNARY(err, "I2C_EEPROM Check ", "failed", "succeeded", "!\n");
+ SERIAL_ECHO_TERNARY(err, "BL24CXX Check ", "failed", "succeeded", "!\n");
#endif
#if ENABLED(DWIN_CREALITY_LCD)
@@ -1192,7 +1193,7 @@ void setup() {
SETUP_RUN(page_manager.init());
#endif
- #if ENABLED(TFT_LVGL_UI)
+ #if HAS_TFT_LVGL_UI
if (!card.isMounted()) SETUP_RUN(card.mount()); // Mount SD to load graphics and fonts
SETUP_RUN(tft_lvgl_init());
#endif
@@ -1229,7 +1230,7 @@ void loop() {
endstops.event_handler();
- TERN_(TFT_LVGL_UI, printer_state_polling());
+ TERN_(HAS_TFT_LVGL_UI, printer_state_polling());
} while (ENABLED(__AVR__)); // Loop forever on slower (AVR) boards
}
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index 1077d494e480..6e57a43747f0 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -288,30 +288,31 @@
#define BOARD_MKS_ROBIN 4007 // MKS Robin (STM32F103ZET6)
#define BOARD_MKS_ROBIN_MINI 4008 // MKS Robin Mini (STM32F103VET6)
#define BOARD_MKS_ROBIN_NANO 4009 // MKS Robin Nano (STM32F103VET6)
-#define BOARD_MKS_ROBIN_LITE 4010 // MKS Robin Lite/Lite2 (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_LITE3 4011 // MKS Robin Lite3 (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_PRO 4012 // MKS Robin Pro (STM32F103ZET6)
-#define BOARD_BTT_SKR_MINI_V1_1 4013 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V1_0 4014 // BigTreeTech SKR Mini E3 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V1_2 4015 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V2_0 4016 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
-#define BOARD_BTT_SKR_E3_DIP 4017 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
-#define BOARD_JGAURORA_A5S_A1 4018 // JGAurora A5S A1 (STM32F103ZET6)
-#define BOARD_FYSETC_AIO_II 4019 // FYSETC AIO_II
-#define BOARD_FYSETC_CHEETAH 4020 // FYSETC Cheetah
-#define BOARD_FYSETC_CHEETAH_V12 4021 // FYSETC Cheetah V1.2
-#define BOARD_LONGER3D_LK 4022 // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
-#define BOARD_GTM32_MINI 4023 // STM32F103VET6 controller
-#define BOARD_GTM32_MINI_A30 4024 // STM32F103VET6 controller
-#define BOARD_GTM32_REV_B 4025 // STM32F103VET6 controller
-#define BOARD_MKS_ROBIN_E3D 4026 // MKS Robin E3D (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_E3 4027 // MKS Robin E3 (STM32F103RCT6)
-#define BOARD_MALYAN_M300 4028 // STM32F070-based delta
-#define BOARD_CCROBOT_MEEB_3DP 4029 // ccrobot-online.com MEEB_3DP (STM32F103RC)
-#define BOARD_CHITU3D_V5 4030 // Chitu3D TronXY X5SA V5 Board
-#define BOARD_CHITU3D_V6 4031 // Chitu3D TronXY X5SA V5 Board
-#define BOARD_CREALITY_V4 4032 // Creality v4.x (STM32F103RE)
-#define BOARD_TRIGORILLA_PRO 4033 // Trigorilla Pro (STM32F103ZET6)
+#define BOARD_MKS_ROBIN_NANO_V2 4010 // MKS Robin Nano V2 (STM32F103VET6)
+#define BOARD_MKS_ROBIN_LITE 4011 // MKS Robin Lite/Lite2 (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_LITE3 4012 // MKS Robin Lite3 (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_PRO 4013 // MKS Robin Pro (STM32F103ZET6)
+#define BOARD_BTT_SKR_MINI_V1_1 4014 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V1_0 4015 // BigTreeTech SKR Mini E3 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V1_2 4016 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V2_0 4017 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
+#define BOARD_BTT_SKR_E3_DIP 4018 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
+#define BOARD_JGAURORA_A5S_A1 4019 // JGAurora A5S A1 (STM32F103ZET6)
+#define BOARD_FYSETC_AIO_II 4020 // FYSETC AIO_II
+#define BOARD_FYSETC_CHEETAH 4021 // FYSETC Cheetah
+#define BOARD_FYSETC_CHEETAH_V12 4022 // FYSETC Cheetah V1.2
+#define BOARD_LONGER3D_LK 4023 // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
+#define BOARD_GTM32_MINI 4024 // STM32F103VET6 controller
+#define BOARD_GTM32_MINI_A30 4025 // STM32F103VET6 controller
+#define BOARD_GTM32_REV_B 4026 // STM32F103VET6 controller
+#define BOARD_MKS_ROBIN_E3D 4027 // MKS Robin E3D (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_E3 4028 // MKS Robin E3 (STM32F103RCT6)
+#define BOARD_MALYAN_M300 4029 // STM32F070-based delta
+#define BOARD_CCROBOT_MEEB_3DP 4030 // ccrobot-online.com MEEB_3DP (STM32F103RC)
+#define BOARD_CHITU3D_V5 4031 // Chitu3D TronXY X5SA V5 Board
+#define BOARD_CHITU3D_V6 4032 // Chitu3D TronXY X5SA V5 Board
+#define BOARD_CREALITY_V4 4033 // Creality v4.x (STM32F103RE)
+#define BOARD_TRIGORILLA_PRO 4034 // Trigorilla Pro (STM32F103ZET6)
//
// ARM Cortex-M4F
diff --git a/Marlin/src/core/millis_t.h b/Marlin/src/core/millis_t.h
index bf0b0bb30899..95bc40e1ecbb 100644
--- a/Marlin/src/core/millis_t.h
+++ b/Marlin/src/core/millis_t.h
@@ -16,7 +16,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
*/
#pragma once
diff --git a/Marlin/src/feature/controllerfan.cpp b/Marlin/src/feature/controllerfan.cpp
index c9a2dad03dbf..fa5a86b0194e 100644
--- a/Marlin/src/feature/controllerfan.cpp
+++ b/Marlin/src/feature/controllerfan.cpp
@@ -55,30 +55,24 @@ void ControllerFan::update() {
#define MOTOR_IS_ON(A,B) (A##_ENABLE_READ() == bool(B##_ENABLE_ON))
#define _OR_ENABLED_E(N) || MOTOR_IS_ON(E##N,E)
- const bool motor_on = MOTOR_IS_ON(Z,Z)
- #if HAS_Z2_ENABLE
- || MOTOR_IS_ON(Z2,Z)
- #endif
- #if HAS_Z3_ENABLE
- || MOTOR_IS_ON(Z3,Z)
- #endif
- #if HAS_Z4_ENABLE
- || MOTOR_IS_ON(Z4,Z)
- #endif
- || (DISABLED(CONTROLLER_FAN_USE_Z_ONLY) && (
- MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y)
- #if HAS_X2_ENABLE
- || MOTOR_IS_ON(X2,X)
- #endif
- #if HAS_Y2_ENABLE
- || MOTOR_IS_ON(Y2,Y)
- #endif
+ const bool motor_on = (
+ ( DISABLED(CONTROLLER_FAN_IGNORE_Z) &&
+ ( MOTOR_IS_ON(Z,Z)
+ || TERN0(HAS_Z2_ENABLE, MOTOR_IS_ON(Z2,Z))
+ || TERN0(HAS_Z3_ENABLE, MOTOR_IS_ON(Z3,Z))
+ || TERN0(HAS_Z4_ENABLE, MOTOR_IS_ON(Z4,Z))
+ )
+ ) || (
+ DISABLED(CONTROLLER_FAN_USE_Z_ONLY) &&
+ ( MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y)
+ || TERN0(HAS_X2_ENABLE, MOTOR_IS_ON(X2,X))
+ || TERN0(HAS_Y2_ENABLE, MOTOR_IS_ON(Y2,Y))
#if E_STEPPERS
REPEAT(E_STEPPERS, _OR_ENABLED_E)
#endif
)
)
- ;
+ );
// If any of the drivers or the heated bed are enabled...
if (motor_on || TERN0(HAS_HEATED_BED, thermalManager.temp_bed.soft_pwm_amount > 0))
diff --git a/Marlin/src/feature/dac/dac_mcp4728.cpp b/Marlin/src/feature/dac/dac_mcp4728.cpp
index 90ad31290f33..4976b3690729 100644
--- a/Marlin/src/feature/dac/dac_mcp4728.cpp
+++ b/Marlin/src/feature/dac/dac_mcp4728.cpp
@@ -24,7 +24,7 @@
* mcp4728.cpp - Arduino library for MicroChip MCP4728 I2C D/A converter
*
* For implementation details, please take a look at the datasheet:
- * http://ww1.microchip.com/downloads/en/DeviceDoc/22187a.pdf
+ * https://ww1.microchip.com/downloads/en/DeviceDoc/22187a.pdf
*
* For discussion and feedback, please go to:
* https://arduino.cc/forum/index.php/topic,51842.0.html
diff --git a/Marlin/src/feature/mmu2/mmu2.cpp b/Marlin/src/feature/mmu2/mmu2.cpp
index aeff7918dde6..35f2db45a907 100644
--- a/Marlin/src/feature/mmu2/mmu2.cpp
+++ b/Marlin/src/feature/mmu2/mmu2.cpp
@@ -466,7 +466,7 @@ void MMU2::check_version() {
}
}
-static bool mmu2_not_responding() {
+static void mmu2_not_responding() {
LCD_MESSAGEPGM(MSG_MMU2_NOT_RESPONDING);
BUZZ(100, 659);
BUZZ(200, 698);
diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp
index 291401ca0db7..77f352c399b5 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -271,6 +271,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
} while (TERN0(HAS_LCD_MENU, show_lcd && pause_menu_response == PAUSE_RESPONSE_EXTRUDE_MORE));
#endif
+ TERN_(HOST_PROMPT_SUPPORT, host_action_prompt_end());
return true;
}
diff --git a/Marlin/src/feature/power_monitor.cpp b/Marlin/src/feature/power_monitor.cpp
index 956135d26e90..bf5ac748a86e 100644
--- a/Marlin/src/feature/power_monitor.cpp
+++ b/Marlin/src/feature/power_monitor.cpp
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/feature/power_monitor.h b/Marlin/src/feature/power_monitor.h
index 8dd79da6d2d5..ca52ed74c6bc 100644
--- a/Marlin/src/feature/power_monitor.h
+++ b/Marlin/src/feature/power_monitor.h
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp
index c14e5e395c45..0ef23d28f92b 100644
--- a/Marlin/src/gcode/calibrate/G425.cpp
+++ b/Marlin/src/gcode/calibrate/G425.cpp
@@ -576,6 +576,11 @@ inline void calibrate_all() {
* no args - Perform entire calibration sequence (backlash + position on all toolheads)
*/
void GcodeSuite::G425() {
+
+ #ifdef CALIBRATION_SCRIPT_PRE
+ GcodeSuite::process_subcommands_now_P(PSTR(CALIBRATION_SCRIPT_PRE));
+ #endif
+
TEMPORARY_SOFT_ENDSTOP_STATE(false);
TEMPORARY_BED_LEVELING_STATE(false);
@@ -606,6 +611,10 @@ void GcodeSuite::G425() {
#endif
else
calibrate_all();
+
+ #ifdef CALIBRATION_SCRIPT_POST
+ GcodeSuite::process_subcommands_now_P(PSTR(CALIBRATION_SCRIPT_POST));
+ #endif
}
#endif // CALIBRATION_GCODE
diff --git a/Marlin/src/gcode/eeprom/M500-M504.cpp b/Marlin/src/gcode/eeprom/M500-M504.cpp
index 4eb6dfcc7628..5aee68ba997a 100644
--- a/Marlin/src/gcode/eeprom/M500-M504.cpp
+++ b/Marlin/src/gcode/eeprom/M500-M504.cpp
@@ -58,11 +58,47 @@ void GcodeSuite::M502() {
#endif // !DISABLE_M503
#if ENABLED(EEPROM_SETTINGS)
+
+ #if ENABLED(MARLIN_DEV_MODE)
+ #include "../../libs/hex_print_routines.h"
+ #endif
+
/**
* M504: Validate EEPROM Contents
*/
void GcodeSuite::M504() {
+ #if ENABLED(MARLIN_DEV_MODE)
+ const bool dowrite = parser.seenval('W');
+ if (dowrite || parser.seenval('R')) {
+ uint8_t val = 0;
+ int addr = parser.value_ushort();
+ if (dowrite) {
+ val = parser.byteval('V');
+ persistentStore.write_data(addr, &val);
+ SERIAL_ECHOLNPAIR("Wrote address ", addr, " with ", int(val));
+ }
+ else {
+ if (parser.seenval('T')) {
+ const int endaddr = parser.value_ushort();
+ while (addr <= endaddr) {
+ persistentStore.read_data(addr, &val);
+ SERIAL_ECHOLNPAIR("0x", hex_word(addr), ":", hex_byte(val));
+ addr++;
+ safe_delay(10);
+ }
+ SERIAL_EOL();
+ }
+ else {
+ persistentStore.read_data(addr, &val);
+ SERIAL_ECHOLNPAIR("Read address ", addr, " and got ", int(val));
+ }
+ }
+ return;
+ }
+ #endif
+
if (settings.validate())
SERIAL_ECHO_MSG("EEPROM OK");
}
+
#endif
diff --git a/Marlin/src/gcode/feature/power_monitor/M430.cpp b/Marlin/src/gcode/feature/power_monitor/M430.cpp
index 08e2d96cc001..a669f0a76b42 100644
--- a/Marlin/src/gcode/feature/power_monitor/M430.cpp
+++ b/Marlin/src/gcode/feature/power_monitor/M430.cpp
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/gcode/motion/G5.cpp b/Marlin/src/gcode/motion/G5.cpp
index 804db5a742af..35cc4280239b 100644
--- a/Marlin/src/gcode/motion/G5.cpp
+++ b/Marlin/src/gcode/motion/G5.cpp
@@ -29,7 +29,7 @@
/**
* Parameters interpreted according to:
- * http://linuxcnc.org/docs/2.6/html/gcode/parser.html#sec:G5-Cubic-Spline
+ * https://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G5-Cubic-Spline
* However I, J omission is not supported at this point; all
* parameters can be omitted and default to zero.
*/
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index a552e5b9ce7d..66e83c5299e4 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -255,12 +255,17 @@
#define IS_ULTIPANEL
#endif
+// LVGL UI, SPI or FSMC
+#if EITHER(TFT_LVGL_UI_SPI, TFT_LVGL_UI_FSMC)
+ #define HAS_TFT_LVGL_UI 1
+#endif
+
// FSMC/SPI TFT Panels
#if ENABLED(FSMC_GRAPHICAL_TFT)
#define DOGLCD
#define IS_ULTIPANEL
#define DELAYED_BACKLIGHT_INIT
-#elif ENABLED(SPI_GRAPHICAL_TFT)
+#elif ENABLED(TFT_LVGL_UI_SPI)
#define DELAYED_BACKLIGHT_INIT
#endif
@@ -743,3 +748,10 @@
#ifndef EXTRUDE_MINTEMP
#define EXTRUDE_MINTEMP 170
#endif
+
+/**
+ * To check if we need the folder src/features/leds
+ */
+#if ANY(TEMP_STAT_LEDS, HAS_COLOR_LEDS, HAS_CASE_LIGHT, PRINTER_EVENT_LEDS, LED_BACKLIGHT_TIMEOUT, PCA9632_BUZZER, LED_CONTROL_MENU)
+ #define HAS_LED_FEATURE 1
+#endif
diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h
index 26204fc5c772..85cb26dadb51 100644
--- a/Marlin/src/inc/Conditionals_adv.h
+++ b/Marlin/src/inc/Conditionals_adv.h
@@ -208,7 +208,7 @@
#endif
#endif
-#if ENABLED(FYSETC_MINI_12864_2_1, FYSETC_242_OLED_12864)
+#if EITHER(FYSETC_MINI_12864_2_1, FYSETC_242_OLED_12864)
#define LED_CONTROL_MENU
#define LED_USER_PRESET_STARTUP
#define LED_COLOR_PRESETS
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 401a64d72d3d..e12310e07c51 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -50,6 +50,8 @@
#define USE_EMULATED_EEPROM 1
#elif ANY(I2C_EEPROM, SPI_EEPROM)
#define USE_WIRED_EEPROM 1
+ #elif ENABLED(IIC_BL24CXX_EEPROM)
+ // nothing
#else
#define USE_FALLBACK_EEPROM 1
#endif
@@ -60,6 +62,7 @@
#undef SDCARD_EEPROM_EMULATION
#undef SRAM_EEPROM_EMULATION
#undef FLASH_EEPROM_EMULATION
+ #undef IIC_BL24CXX_EEPROM
#endif
#ifdef TEENSYDUINO
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index f8e4dc669aee..2cba0fecf26d 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -449,6 +449,10 @@
#error "POWER_SUPPLY is now obsolete. Please remove it from Configuration.h."
#elif defined(MKS_ROBIN_TFT)
#error "MKS_ROBIN_TFT is now FSMC_GRAPHICAL_TFT. Please update your configuration."
+#elif defined(TFT_LVGL_UI)
+ #error "TFT_LVGL_UI is now TFT_LVGL_UI_FSMC. Please update your configuration."
+#elif defined(SPI_GRAPHICAL_TFT)
+ #error "SPI_GRAPHICAL_TFT is now TFT_LVGL_UI_SPI. Please update your configuration."
#elif defined(SDPOWER)
#error "SDPOWER is now SDPOWER_PIN. Please update your configuration and/or pins."
#elif defined(STRING_SPLASH_LINE1) || defined(STRING_SPLASH_LINE2)
@@ -2102,27 +2106,33 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
#endif
#undef _RGB_TEST
+#if DISABLED(NO_COMPILE_TIME_PWM)
+ #define _TEST_PWM(P) PWM_PIN(P)
+#else
+ #define _TEST_PWM(P) 1 // pass
+#endif
+
/**
* Auto Fan check for PWM pins
*/
-#if HAS_AUTO_FAN && EXTRUDER_AUTO_FAN_SPEED != 255 && DISABLED(NO_COMPILE_TIME_PWM)
+#if HAS_AUTO_FAN && EXTRUDER_AUTO_FAN_SPEED != 255
#define AF_ERR_SUFF "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255."
#if HAS_AUTO_FAN_0
- static_assert(PWM_PIN(E0_AUTO_FAN_PIN), "E0" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E0_AUTO_FAN_PIN), "E0" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_1
- static_assert(PWM_PIN(E1_AUTO_FAN_PIN), "E1" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E1_AUTO_FAN_PIN), "E1" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_2
- static_assert(PWM_PIN(E2_AUTO_FAN_PIN), "E2" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E2_AUTO_FAN_PIN), "E2" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_3
- static_assert(PWM_PIN(E3_AUTO_FAN_PIN), "E3" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E3_AUTO_FAN_PIN), "E3" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_4
- static_assert(PWM_PIN(E4_AUTO_FAN_PIN), "E4" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E4_AUTO_FAN_PIN), "E4" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_5
- static_assert(PWM_PIN(E5_AUTO_FAN_PIN), "E5" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E5_AUTO_FAN_PIN), "E5" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_6
- static_assert(PWM_PIN(E6_AUTO_FAN_PIN), "E6" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E6_AUTO_FAN_PIN), "E6" AF_ERR_SUFF);
#elif HAS_AUTO_FAN_7
- static_assert(PWM_PIN(E7_AUTO_FAN_PIN), "E7" AF_ERR_SUFF);
+ static_assert(_TEST_PWM(E7_AUTO_FAN_PIN), "E7" AF_ERR_SUFF);
#endif
#endif
@@ -2131,8 +2141,13 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
*/
#if ENABLED(EEPROM_SETTINGS)
#if 1 < 0 \
- + ENABLED(I2C_EEPROM) + ENABLED(SPI_EEPROM) + ENABLED(QSPI_EEPROM) \
- + ENABLED(SDCARD_EEPROM_EMULATION) + ENABLED(FLASH_EEPROM_EMULATION) + ENABLED(SRAM_EEPROM_EMULATION)
+ + ENABLED(I2C_EEPROM) \
+ + ENABLED(SPI_EEPROM) \
+ + ENABLED(QSPI_EEPROM) \
+ + ENABLED(SDCARD_EEPROM_EMULATION) \
+ + ENABLED(FLASH_EEPROM_EMULATION) \
+ + ENABLED(SRAM_EEPROM_EMULATION) \
+ + ENABLED(IIC_BL24CXX_EEPROM)
#error "Please select only one method of EEPROM Persistent Storage."
#endif
#endif
@@ -2212,8 +2227,8 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
+ ENABLED(MALYAN_LCD) \
+ ENABLED(TOUCH_UI_FTDI_EVE) \
+ ENABLED(FSMC_GRAPHICAL_TFT) \
- + ENABLED(TFT_LVGL_UI) \
- + ENABLED(SPI_GRAPHICAL_TFT)
+ + ENABLED(TFT_LVGL_UI_FSMC) \
+ + ENABLED(TFT_LVGL_UI_SPI)
#error "Please select no more than one LCD controller option."
#endif
@@ -2936,7 +2951,7 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
#elif ENABLED(SPINDLE_LASER_PWM)
#if !defined(SPINDLE_LASER_PWM_PIN) || SPINDLE_LASER_PWM_PIN < 0
#error "SPINDLE_LASER_PWM_PIN is required for SPINDLE_LASER_PWM."
- #elif !PWM_PIN(SPINDLE_LASER_PWM_PIN)
+ #elif !_TEST_PWM(SPINDLE_LASER_PWM_PIN)
#error "SPINDLE_LASER_PWM_PIN not assigned to a PWM pin."
#elif !defined(SPINDLE_LASER_PWM_INVERT)
#error "SPINDLE_LASER_PWM_INVERT is required for (SPINDLE|LASER)_FEATURE."
@@ -3028,3 +3043,13 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
#error "DIRECT_STEPPING is incompatible with LIN_ADVANCE. Enable in external planner if possible."
#endif
#endif
+
+/**
+ * Sanity check for WIFI
+ */
+#if ENABLED(ESP3D_WIFISUPPORT) && DISABLED(ARDUINO_ARCH_ESP32)
+ #error "ESP3D_WIFISUPPORT requires an ESP32 controller. Use WIFISUPPORT for standalone ESP3D modules."
+#endif
+
+// Misc. Cleanup
+#undef _TEST_PWM
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index ec64e054e065..4007997de8c3 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2020-07-23"
+ #define STRING_DISTRIBUTION_DATE "2020-07-27"
#endif
/**
diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
index dbd6f4c117b4..fc7a22b26143 100644
--- a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
+++ b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
@@ -597,7 +597,7 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u
case U8G_DEV_MSG_INIT:
dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, &lcd_id);
- switch(lcd_id & 0xFFFF) {
+ switch (lcd_id & 0xFFFF) {
case 0x8552: // ST7789V
#ifdef LCD_USE_DMA_FSMC
writeEscSequence(st7789v_init);
diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp
index 4f661ca9536d..f8c1819c5138 100644
--- a/Marlin/src/lcd/dwin/dwin.cpp
+++ b/Marlin/src/lcd/dwin/dwin.cpp
@@ -185,10 +185,11 @@ int temphot = 0, tempbed = 0;
float zprobe_zoffset = 0;
float last_zoffset = 0, last_probe_zoffset = 0;
-#define FONT_EEPROM_OFFSET 0
+#define DWIN_LANGUAGE_EEPROM_ADDRESS 0x01 // Between 0x01 and 0x63 (EEPROM_OFFSET-1)
+ // BL24CXX::check() uses 0x00
void lcd_select_language(void) {
- BL24CXX::read(FONT_EEPROM_OFFSET, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
+ BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
if (HMI_flag.language_flag)
DWIN_JPG_CacheTo1(Language_Chinese);
else
@@ -198,12 +199,12 @@ void lcd_select_language(void) {
void set_english_to_eeprom(void) {
HMI_flag.language_flag = 0;
DWIN_JPG_CacheTo1(Language_English);
- BL24CXX::write(FONT_EEPROM_OFFSET, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
+ BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
}
void set_chinese_to_eeprom(void) {
HMI_flag.language_flag = 1;
DWIN_JPG_CacheTo1(Language_Chinese);
- BL24CXX::write(FONT_EEPROM_OFFSET, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
+ BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language_flag, sizeof(HMI_flag.language_flag));
}
void show_plus_or_minus(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, long value) {
@@ -2374,7 +2375,7 @@ void HMI_Control(void) {
void HMI_Leveling(void) {
Popup_Window_Leveling();
DWIN_UpdateLCD();
- queue.inject_P(PSTR("G29"));
+ queue.inject_P(PSTR("G28O\nG29"));
}
/* Axis Move */
diff --git a/Marlin/src/lcd/dwin/dwin.h b/Marlin/src/lcd/dwin/dwin.h
index e834ef3e24e6..2d24d2504e7e 100644
--- a/Marlin/src/lcd/dwin/dwin.h
+++ b/Marlin/src/lcd/dwin/dwin.h
@@ -27,7 +27,7 @@
#include "dwin_lcd.h"
#include "rotary_encoder.h"
-#include "eeprom_BL24CXX.h"
+#include "../../libs/BL24CXX.h"
#include
diff --git a/Marlin/src/lcd/dwin/eeprom_BL24CXX.cpp b/Marlin/src/lcd/dwin/eeprom_BL24CXX.cpp
deleted file mode 100644
index 25356ab406a0..000000000000
--- a/Marlin/src/lcd/dwin/eeprom_BL24CXX.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/********************************************************************************
- * @file eeprom_BL24CXX.cpp
- * @brief i2c EEPROM for Ender 3 v2 board (4.2.2)
- ********************************************************************************/
-
-#include "../../inc/MarlinConfig.h"
-
-#if ENABLED(IIC_BL24CXX_EEPROM)
-
-#include "eeprom_BL24CXX.h"
-#include "../../MarlinCore.h"
-
-#include
-
-/******************** IIC ********************/
-
-// 初始化IIC
-void IIC::init() {
- SET_OUTPUT(IIC_EEPROM_SDA);
- SET_OUTPUT(IIC_EEPROM_SCL);
-
- IIC_SCL_1();
- IIC_SDA_1();
-}
-
-// 产生IIC起始信号
-void IIC::start() {
- SDA_OUT(); // sda线输出
- IIC_SDA_1();
- IIC_SCL_1();
- delay_us(4);
- IIC_SDA_0(); // START:when CLK is high, DATA change form high to low
- delay_us(4);
- IIC_SCL_0(); // 钳住I2C总线,准备发送或接收数据
-}
-
-// 产生IIC停止信号
-void IIC::stop() {
- SDA_OUT(); // sda线输出
- IIC_SCL_0();
- IIC_SDA_0(); // STOP:when CLK is high DATA change form low to high
- delay_us(4);
- IIC_SCL_1();
- IIC_SDA_1(); // 发送I2C总线结束信号
- delay_us(4);
-}
-
-// 等待应答信号到来
-// 返回值:1,接收应答失败
-// 0,接收应答成功
-uint8_t IIC::wait_ack() {
- uint8_t ucErrTime=0;
- SDA_IN(); // SDA设置为输入
- IIC_SDA_1();delay_us(1);
- IIC_SCL_1();delay_us(1);
- while (READ_SDA()) {
- ucErrTime++;
- if (ucErrTime>250) {
- stop();
- return 1;
- }
- }
- IIC_SCL_0(); // 时钟输出0
- return 0;
-}
-
-// 产生ACK应答
-void IIC::ack() {
- IIC_SCL_0();
- SDA_OUT();
- IIC_SDA_0();
- delay_us(2);
- IIC_SCL_1();
- delay_us(2);
- IIC_SCL_0();
-}
-
-// 不产生ACK应答
-void IIC::nAck() {
- IIC_SCL_0();
- SDA_OUT();
- IIC_SDA_1();
- delay_us(2);
- IIC_SCL_1();
- delay_us(2);
- IIC_SCL_0();
-}
-
-// IIC发送一个字节
-// 返回从机有无应答
-// 1,有应答
-// 0,无应答
-void IIC::send_byte(uint8_t txd) {
- SDA_OUT();
- IIC_SCL_0(); // 拉低时钟开始数据传输
- LOOP_L_N(t, 8) {
- // IIC_SDA = (txd & 0x80) >> 7;
- if (txd & 0x80) IIC_SDA_1(); else IIC_SDA_0();
- txd <<= 1;
- delay_us(2); // 对TEA5767这三个延时都是必须的
- IIC_SCL_1();
- delay_us(2);
- IIC_SCL_0();
- delay_us(2);
- }
-}
-
-// 读1个字节,ack=1时,发送ACK,ack=0,发送nACK
-uint8_t IIC::read_byte(unsigned char ack_chr) {
- unsigned char receive = 0;
- SDA_IN(); // SDA设置为输入
- LOOP_L_N(i, 8) {
- IIC_SCL_0();
- delay_us(2);
- IIC_SCL_1();
- receive <<= 1;
- if (READ_SDA()) receive++;
- delay_us(1);
- }
- ack_chr ? ack() : nAck(); // 发送ACK / 发送nACK
- return receive;
-}
-
-/******************** EEPROM ********************/
-
-// 初始化IIC接口
-void BL24CXX::init() { IIC::init(); }
-
-// 在BL24CXX指定地址读出一个数据
-// ReadAddr:开始读数的地址
-// 返回值 :读到的数据
-uint8_t BL24CXX::readOneByte(uint16_t ReadAddr) {
- uint8_t temp = 0;
- IIC::start();
- if (EE_TYPE > BL24C16) {
- IIC::send_byte(0xA0); // 发送写命令
- IIC::wait_ack();
- IIC::send_byte(ReadAddr >> 8); // 发送高地址
- IIC::wait_ack();
- }
- else
- IIC::send_byte(0xA0 + ((ReadAddr >> 8) << 1)); // 发送器件地址0xA0,写数据
-
- IIC::wait_ack();
- IIC::send_byte(ReadAddr & 0xFF); // 发送低地址
- IIC::wait_ack();
- IIC::start();
- IIC::send_byte(0xA1); // 进入接收模式
- IIC::wait_ack();
- temp = IIC::read_byte(0);
- IIC::stop(); // 产生一个停止条件
- return temp;
-}
-
-// 在BL24CXX指定地址写入一个数据
-// WriteAddr :写入数据的目的地址
-// DataToWrite:要写入的数据
-void BL24CXX::writeOneByte(uint16_t WriteAddr, uint8_t DataToWrite) {
- IIC::start();
- if (EE_TYPE > BL24C16) {
- IIC::send_byte(0xA0); // 发送写命令
- IIC::wait_ack();
- IIC::send_byte(WriteAddr >> 8); // 发送高地址
- }
- else {
- IIC::send_byte(0xA0 + ((WriteAddr >> 8) << 1)); // 发送器件地址0xA0,写数据
- }
- IIC::wait_ack();
- IIC::send_byte(WriteAddr & 0xFF); // 发送低地址
- IIC::wait_ack();
- IIC::send_byte(DataToWrite); // 发送字节
- IIC::wait_ack();
- IIC::stop(); // 产生一个停止条件
- delay(10);
-}
-
-// 在BL24CXX里面的指定地址开始写入长度为Len的数据
-// 该函数用于写入16bit或者32bit的数据.
-// WriteAddr :开始写入的地址
-// DataToWrite:数据数组首地址
-// Len :要写入数据的长度2,4
-void BL24CXX::writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len) {
- LOOP_L_N(t, Len)
- writeOneByte(WriteAddr + t, (DataToWrite >> (8 * t)) & 0xFF);
-}
-
-// 在BL24CXX里面的指定地址开始读出长度为Len的数据
-// 该函数用于读出16bit或者32bit的数据.
-// ReadAddr :开始读出的地址
-// 返回值 :数据
-// Len :要读出数据的长度2,4
-uint32_t BL24CXX::readLenByte(uint16_t ReadAddr, uint8_t Len) {
- uint32_t temp = 0;
- LOOP_L_N(t, Len) {
- temp <<= 8;
- temp += readOneByte(ReadAddr + Len - t - 1);
- }
- return temp;
-}
-
-// 检查BL24CXX是否正常
-// 这里用了24XX的最后一个地址(255)来存储标志字.
-// 如果用其他24C系列,这个地址要修改
-// 返回1:检测失败
-// 返回0:检测成功
-uint8_t BL24CXX::check() {
- uint8_t temp;
- temp = readOneByte(255); // 避免每次开机都写BL24CXX
- if (temp == 'U') return 0;
- else { // 排除第一次初始化的情况
- writeOneByte(255, 'U');
- temp = readOneByte(255);
- if (temp == 'U') return 0;
- }
- return 1;
-}
-
-// 在BL24CXX里面的指定地址开始读出指定个数的数据
-// ReadAddr :开始读出的地址 对24c02为0~255
-// pBuffer :数据数组首地址
-// NumToRead:要读出数据的个数
-void BL24CXX::read(uint16_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead) {
- while (NumToRead) {
- *pBuffer++ = readOneByte(ReadAddr++);
- NumToRead--;
- }
-}
-
-// 在BL24CXX里面的指定地址开始写入指定个数的数据
-// WriteAddr :开始写入的地址 对24c02为0~255
-// pBuffer :数据数组首地址
-// NumToWrite:要写入数据的个数
-void BL24CXX::write(uint16_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite) {
- while (NumToWrite--) {
- writeOneByte(WriteAddr, *pBuffer);
- WriteAddr++;
- pBuffer++;
- }
-}
-
-#endif // IIC_BL24CXX_EEPROM
diff --git a/Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/ftdi_eve_lib/basic/boards.h b/Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/ftdi_eve_lib/basic/boards.h
index e431cfde1ff5..c09d10f1488c 100644
--- a/Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/ftdi_eve_lib/basic/boards.h
+++ b/Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/ftdi_eve_lib/basic/boards.h
@@ -113,9 +113,9 @@
/**
* Settings for the 4D Systems, 4.3" Embedded SPI Display 480x272, SPI, FT800 (4DLCD-FT843)
- * http://www.4dsystems.com.au/product/4DLCD_FT843/
+ * https://4dsystems.com.au/4dlcd-ft843
* Datasheet:
- * http://www.4dsystems.com.au/productpages/4DLCD-FT843/downloads/FT843-4.3-Display_datasheet_R_1_2.pdf
+ * https://4dsystems.com.au/mwdownloads/download/link/id/52/
*/
#elif defined(LCD_4DSYSTEMS_4DLCD_FT843)
#if !HAS_RESOLUTION
@@ -136,9 +136,7 @@
/**
* Settings for the Aleph Objects Color LCD User Interface
- * https://code.alephobjects.com/source/aotctl/
- * Datasheet:
- * http://www.hantronix.com/files/data/s1501799605s500-gh7.pdf
+ * Datasheet https://www.hantronix.com/files/data/s1501799605s500-gh7.pdf
*/
#elif defined(LCD_ALEPHOBJECTS_CLCD_UI)
#if !HAS_RESOLUTION
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
index 3c6cffb20dcd..0febc4edbddd 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
@@ -22,69 +22,72 @@
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
- #include
- #include "../../../../inc/MarlinConfig.h"
- #include "SPI_TFT.h"
+#include "SPI_TFT.h"
+#include "pic_manager.h"
- TFT SPI_TFT;
+#include "../../../../inc/MarlinConfig.h"
- #ifndef SPI_TFT_MISO_PIN
- #define SPI_TFT_MISO_PIN PA6
- #endif
- #ifndef SPI_TFT_MOSI_PIN
- #define SPI_TFT_MOSI_PIN PA7
- #endif
- #ifndef SPI_TFT_SCK_PIN
- #define SPI_TFT_SCK_PIN PA5
- #endif
- #ifndef SPI_TFT_CS_PIN
- #define SPI_TFT_CS_PIN PD11
- #endif
- #ifndef SPI_TFT_DC_PIN
- #define SPI_TFT_DC_PIN PD10
- #endif
- #ifndef SPI_TFT_RST_PIN
- #define SPI_TFT_RST_PIN PC6
- #endif
+#include
+
+TFT SPI_TFT;
+
+#ifndef SPI_TFT_MISO_PIN
+ #define SPI_TFT_MISO_PIN PA6
+#endif
+#ifndef SPI_TFT_MOSI_PIN
+ #define SPI_TFT_MOSI_PIN PA7
+#endif
+#ifndef SPI_TFT_SCK_PIN
+ #define SPI_TFT_SCK_PIN PA5
+#endif
+#ifndef SPI_TFT_CS_PIN
+ #define SPI_TFT_CS_PIN PD11
+#endif
+#ifndef SPI_TFT_DC_PIN
+ #define SPI_TFT_DC_PIN PD10
+#endif
+#ifndef SPI_TFT_RST_PIN
+ #define SPI_TFT_RST_PIN PC6
+#endif
// use SPI1 for the spi tft.
- void TFT::spi_init(uint8_t spiRate) {
-
- SPI_TFT_CS_H;
-
- /**
- * STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz
- * STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1
- * so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2
- */
- uint8_t clock;
- switch (spiRate) {
- case SPI_FULL_SPEED: clock = SPI_CLOCK_DIV4; break;
- case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4; break;
- case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break;
- case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break;
- case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break;
- case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break;
- default: clock = SPI_CLOCK_DIV2; // Default from the SPI library
- }
- SPI.setModule(1);
- SPI.begin();
- SPI.setClockDivider(clock);
- SPI.setBitOrder(MSBFIRST);
- SPI.setDataMode(SPI_MODE0);
- }
+void TFT::spi_init(uint8_t spiRate) {
- uint8_t TFT::spi_Rec() {
- uint8_t returnByte = SPI.transfer(ff);
- return returnByte;
- }
+ SPI_TFT_CS_H;
- uint8_t TFT::spi_read_write_byte(uint8_t data) {
- uint8_t returnByte = SPI.transfer(data);
- return returnByte;
+ /**
+ * STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz
+ * STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1
+ * so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2
+ */
+ uint8_t clock;
+ switch (spiRate) {
+ case SPI_FULL_SPEED: clock = SPI_CLOCK_DIV4; break;
+ case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4; break;
+ case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break;
+ case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break;
+ case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break;
+ case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break;
+ default: clock = SPI_CLOCK_DIV2; // Default from the SPI library
}
+ SPI.setModule(1);
+ SPI.begin();
+ SPI.setClockDivider(clock);
+ SPI.setBitOrder(MSBFIRST);
+ SPI.setDataMode(SPI_MODE0);
+}
+
+uint8_t TFT::spi_Rec() {
+ uint8_t returnByte = SPI.transfer(ff);
+ return returnByte;
+}
+
+uint8_t TFT::spi_read_write_byte(uint8_t data) {
+ uint8_t returnByte = SPI.transfer(data);
+ return returnByte;
+}
/**
* @brief Receive a number of bytes from the SPI port to a buffer
@@ -95,7 +98,7 @@
*
* @details Uses DMA
*/
- void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast(buf), nbyte);}
+void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast(buf), nbyte);}
/**
* @brief Send a single byte on SPI port
@@ -104,7 +107,7 @@
*
* @details
*/
- void TFT::spi_Send(uint8_t b) {SPI.send(b);}
+void TFT::spi_Send(uint8_t b) {SPI.send(b);}
/**
* @brief Write token and then write from 512 byte buffer to SPI (for SD card)
@@ -114,158 +117,222 @@
*
* @details Use DMA
*/
- void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
- SPI.send(token);
- SPI.dmaSend(const_cast(buf), 512);
- }
+void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
+ SPI.send(token);
+ SPI.dmaSend(const_cast(buf), 512);
+}
- void TFT::LCD_WR_REG(uint8_t cmd) {
- SPI_TFT_CS_L;
- SPI_TFT_DC_L;
- spi_Send(cmd);
- SPI_TFT_CS_H;
- }
- void TFT::LCD_WR_DATA(uint8_t data) {
- SPI_TFT_CS_L;
- SPI_TFT_DC_H;
- spi_Send(data);
- SPI_TFT_CS_H;
- }
- void TFT::LCD_WriteRAM_Prepare() {LCD_WR_REG(0X2C);}
- void TFT::SetCursor(uint16_t x, uint16_t y) {
- LCD_WR_REG(0x2a);
- LCD_WR_DATA(x >> 8);
- LCD_WR_DATA(x);
- LCD_WR_DATA(x >> 8);
- LCD_WR_DATA(x);
-
- LCD_WR_REG(0x2b);
- LCD_WR_DATA(y >> 8);
- LCD_WR_DATA(y);
- LCD_WR_DATA(y >> 8);
- LCD_WR_DATA(y);
+void TFT::LCD_WR_REG(uint8_t cmd) {
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_L;
+ spi_Send(cmd);
+ SPI_TFT_CS_H;
+}
+void TFT::LCD_WR_DATA(uint8_t data) {
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ spi_Send(data);
+ SPI_TFT_CS_H;
+}
+void TFT::LCD_WriteRAM_Prepare() {LCD_WR_REG(0X2C);}
+void TFT::SetCursor(uint16_t x, uint16_t y) {
+ LCD_WR_REG(0x2A);
+ LCD_WR_DATA(x >> 8);
+ LCD_WR_DATA(x);
+ LCD_WR_DATA(x >> 8);
+ LCD_WR_DATA(x);
+
+ LCD_WR_REG(0x2B);
+ LCD_WR_DATA(y >> 8);
+ LCD_WR_DATA(y);
+ LCD_WR_DATA(y >> 8);
+ LCD_WR_DATA(y);
+}
+
+void TFT::SetPoint(uint16_t x, uint16_t y, uint16_t point) {
+ if ((x > 480) || (y > 320)) return;
+
+ SetCursor(x, y);
+
+ LCD_WriteRAM_Prepare();
+ LCD_WR_DATA((uint8_t)(point >> 8));
+ LCD_WR_DATA((uint8_t)point);
+}
+
+void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
+ LCD_WR_REG(0x2A);
+ LCD_WR_DATA(x >> 8);
+ LCD_WR_DATA(x);
+ LCD_WR_DATA((x + with - 1) >> 8);
+ LCD_WR_DATA((x + with - 1));
+
+ LCD_WR_REG(0x2B);
+ LCD_WR_DATA(y >> 8);
+ LCD_WR_DATA(y);
+ LCD_WR_DATA((y + height - 1) >> 8);
+ LCD_WR_DATA(y + height - 1);
+}
+
+void TFT::LCD_init() {
+ SPI_TFT_RST_H;
+ delay(150);
+ SPI_TFT_RST_L;
+ delay(150);
+ SPI_TFT_RST_H;
+
+ delay(120);
+ LCD_WR_REG(0x11);
+ delay(120);
+
+ LCD_WR_REG(0xF0);
+ LCD_WR_DATA(0xC3);
+ LCD_WR_REG(0xF0);
+ LCD_WR_DATA(0x96);
+
+ LCD_WR_REG(0x36);
+ LCD_WR_DATA(0x28);
+
+ LCD_WR_REG(0x3A);
+ LCD_WR_DATA(0x55);
+
+ LCD_WR_REG(0xB4);
+ LCD_WR_DATA(0x01);
+ LCD_WR_REG(0xB7);
+ LCD_WR_DATA(0xC6);
+ LCD_WR_REG(0xE8);
+ LCD_WR_DATA(0x40);
+ LCD_WR_DATA(0x8A);
+ LCD_WR_DATA(0x00);
+ LCD_WR_DATA(0x00);
+ LCD_WR_DATA(0x29);
+ LCD_WR_DATA(0x19);
+ LCD_WR_DATA(0xA5);
+ LCD_WR_DATA(0x33);
+ LCD_WR_REG(0xC1);
+ LCD_WR_DATA(0x06);
+ LCD_WR_REG(0xC2);
+ LCD_WR_DATA(0xA7);
+ LCD_WR_REG(0xC5);
+ LCD_WR_DATA(0x18);
+ LCD_WR_REG(0xE0); // Positive Voltage Gamma Control
+ LCD_WR_DATA(0xF0);
+ LCD_WR_DATA(0x09);
+ LCD_WR_DATA(0x0B);
+ LCD_WR_DATA(0x06);
+ LCD_WR_DATA(0x04);
+ LCD_WR_DATA(0x15);
+ LCD_WR_DATA(0x2F);
+ LCD_WR_DATA(0x54);
+ LCD_WR_DATA(0x42);
+ LCD_WR_DATA(0x3C);
+ LCD_WR_DATA(0x17);
+ LCD_WR_DATA(0x14);
+ LCD_WR_DATA(0x18);
+ LCD_WR_DATA(0x1B);
+ LCD_WR_REG(0xE1); // Negative Voltage Gamma Control
+ LCD_WR_DATA(0xF0);
+ LCD_WR_DATA(0x09);
+ LCD_WR_DATA(0x0B);
+ LCD_WR_DATA(0x06);
+ LCD_WR_DATA(0x04);
+ LCD_WR_DATA(0x03);
+ LCD_WR_DATA(0x2D);
+ LCD_WR_DATA(0x43);
+ LCD_WR_DATA(0x42);
+ LCD_WR_DATA(0x3B);
+ LCD_WR_DATA(0x16);
+ LCD_WR_DATA(0x14);
+ LCD_WR_DATA(0x17);
+ LCD_WR_DATA(0x1B);
+ LCD_WR_REG(0xF0);
+ LCD_WR_DATA(0x3C);
+ LCD_WR_REG(0xF0);
+ LCD_WR_DATA(0x69);
+ delay(120); // Delay 120ms
+ LCD_WR_REG(0x29); // Display ON
+
+ LCD_clear(0x0000); //
+ LCD_Draw_Logo();
+ SPI_TFT_BLK_H;
+ delay(2000);
+}
+
+void TFT::LCD_clear(uint16_t color) {
+ unsigned int i;
+ uint8_t tbuf[960];
+
+ SetCursor(0, 0);
+ SetWindows(0, 0, 480 - 1, 320 - 1);
+ LCD_WriteRAM_Prepare();
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ for (i = 0; i < 960;) {
+ tbuf[i] = color >> 8;
+ tbuf[i + 1] = color;
+ i += 2;
}
- void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
- LCD_WR_REG(0x2a);
- LCD_WR_DATA(x >> 8);
- LCD_WR_DATA(x);
- LCD_WR_DATA((x + with) >> 8);
- LCD_WR_DATA((x + with));
-
- LCD_WR_REG(0x2b);
- LCD_WR_DATA(y >> 8);
- LCD_WR_DATA(y);
- LCD_WR_DATA((y + height) >> 8);
- LCD_WR_DATA(y + height);
+ for (i = 0; i < 320; i++) {
+ // for (m=0;m<480;m++)
+ // {
+ // LCD_WR_DATA(color>>8);
+ // LCD_WR_DATA(color);
+ SPI.dmaSend(tbuf, 960, true);
+ // SPI_TFT_CS_H;
+ // }
}
- void TFT::LCD_init() {
- SPI_TFT_RST_H;
- delay(150);
- SPI_TFT_RST_L;
- delay(150);
- SPI_TFT_RST_H;
-
- delay(120);
- LCD_WR_REG(0x11);
- delay(120);
-
- LCD_WR_REG(0xf0);
- LCD_WR_DATA(0xc3);
- LCD_WR_REG(0xf0);
- LCD_WR_DATA(0x96);
-
- LCD_WR_REG(0x36);
- LCD_WR_DATA(0x28);
-
- LCD_WR_REG(0x3A);
- LCD_WR_DATA(0x55);
-
- LCD_WR_REG(0xB4);
- LCD_WR_DATA(0x01);
- LCD_WR_REG(0xB7);
- LCD_WR_DATA(0xC6);
- LCD_WR_REG(0xe8);
- LCD_WR_DATA(0x40);
- LCD_WR_DATA(0x8a);
- LCD_WR_DATA(0x00);
- LCD_WR_DATA(0x00);
- LCD_WR_DATA(0x29);
- LCD_WR_DATA(0x19);
- LCD_WR_DATA(0xa5);
- LCD_WR_DATA(0x33);
- LCD_WR_REG(0xc1);
- LCD_WR_DATA(0x06);
- LCD_WR_REG(0xc2);
- LCD_WR_DATA(0xa7);
- LCD_WR_REG(0xc5);
- LCD_WR_DATA(0x18);
- LCD_WR_REG(0xe0); // Positive Voltage Gamma Control
- LCD_WR_DATA(0xf0);
- LCD_WR_DATA(0x09);
- LCD_WR_DATA(0x0b);
- LCD_WR_DATA(0x06);
- LCD_WR_DATA(0x04);
- LCD_WR_DATA(0x15);
- LCD_WR_DATA(0x2f);
- LCD_WR_DATA(0x54);
- LCD_WR_DATA(0x42);
- LCD_WR_DATA(0x3c);
- LCD_WR_DATA(0x17);
- LCD_WR_DATA(0x14);
- LCD_WR_DATA(0x18);
- LCD_WR_DATA(0x1b);
- LCD_WR_REG(0xe1); // Negative Voltage Gamma Control
- LCD_WR_DATA(0xf0);
- LCD_WR_DATA(0x09);
- LCD_WR_DATA(0x0b);
- LCD_WR_DATA(0x06);
- LCD_WR_DATA(0x04);
- LCD_WR_DATA(0x03);
- LCD_WR_DATA(0x2d);
- LCD_WR_DATA(0x43);
- LCD_WR_DATA(0x42);
- LCD_WR_DATA(0x3b);
- LCD_WR_DATA(0x16);
- LCD_WR_DATA(0x14);
- LCD_WR_DATA(0x17);
- LCD_WR_DATA(0x1b);
- LCD_WR_REG(0xf0);
- LCD_WR_DATA(0x3c);
- LCD_WR_REG(0xf0);
- LCD_WR_DATA(0x69);
- delay(120); // Delay 120ms
- LCD_WR_REG(0x29); // Display ON
-
- LCD_clear(0x0000); //
- SPI_TFT_BLK_H;
+ SPI_TFT_CS_H;
+}
- }
- void TFT::LCD_clear(uint16_t color) {
- unsigned int i, m;
- uint32_t count;
- uint8_t tbuf[960];
-
- SetCursor(0, 0);
- SetWindows(0, 0, 480 - 1, 320 - 1);
- LCD_WriteRAM_Prepare();
- SPI_TFT_CS_L;
- SPI_TFT_DC_H;
- for (i = 0; i < 960;) {
- tbuf[i] = color >> 8;
- tbuf[i + 1] = color;
- i += 2;
+extern unsigned char bmp_public_buf[17 * 1024];
+
+void TFT::LCD_Draw_Logo() {
+ uint16_t i,y_off = 0;
+ uint16_t *p_index;
+ uint16_t Color;
+
+ #if 1
+ for (y_off = 0; y_off < 320; y_off ++) {
+ Pic_Logo_Read((uint8_t *)"", (uint8_t *)bmp_public_buf, 960);
+
+ SPI_TFT.spi_init(SPI_FULL_SPEED);
+ SetWindows(0, y_off, 480, 1);
+ LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
+ for (i = 0; i < 960;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xFF) << 8);
+ i+=2;
+ }
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ SPI.dmaSend(bmp_public_buf,960,true);
+ SPI_TFT_CS_H;
}
- for (i = 0; i < 320; i++) {
- // for(m=0;m<480;m++)
- // {
- // LCD_WR_DATA(color>>8);
- // LCD_WR_DATA(color);
-
- SPI.dmaSend(tbuf, 960, true);
- // SPI_TFT_CS_H;
- // }
+
+ #else
+
+ for (index = 0; index < 40; index ++) {
+ Pic_Logo_Read((uint8_t *)"", bmp_public_buf, 480*8*2);
+ i = 0;
+ SetCursor(0,0);
+ SetWindows(0, y_off * 8, 480, 8);
+ LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
+ for (i = 0; i < 480 * 8 * 2;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xFF) << 8);
+ i += 2;
+ }
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ SPI.dmaSend(bmp_public_buf,480*8*2,true);
+ SPI_TFT_CS_H;
+
+ y_off++;
}
- SPI_TFT_CS_H;
- }
+ #endif
+
+ SetWindows(0, 0, 479, 319);
+}
-#endif // SPI_GRAPHICAL_TFT
+#endif // HAS_TFT_LVGL_UI_SPI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
index 4466f4d33bef..9b676843139c 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
@@ -46,10 +46,12 @@ class TFT {
void LCD_WR_REG(uint8_t cmd);
void LCD_WR_DATA(uint8_t data);
void SetCursor(uint16_t x, uint16_t y);
+ void SetPoint(uint16_t x, uint16_t y, uint16_t point);
void SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height);
void LCD_init();
void LCD_clear(uint16_t color);
void LCD_WriteRAM_Prepare();
+ void LCD_Draw_Logo();
};
extern TFT SPI_TFT;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
index 5c56bdef43f8..60b4d0b7ea98 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
@@ -22,7 +22,7 @@
#include "../../../../inc/MarlinConfigPre.h"
#if 1 // ENABLED(SPI_FLASH)
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include
#include "../../../../inc/MarlinConfig.h"
@@ -131,7 +131,7 @@ void ext_FLASH::spi_flash_SendBlock(uint8_t token, const uint8_t* buf) {
uint16_t ext_FLASH::W25QXX_ReadID(void) {
uint16_t Temp = 0;
W25QXX_CS_L;
- spi_flash_Send(0x90);//���Ͷ�ȡID����
+ spi_flash_Send(0x90);
spi_flash_Send(0x00);
spi_flash_Send(0x00);
spi_flash_Send(0x00);
@@ -391,5 +391,5 @@ void ext_FLASH::SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16
void ext_FLASH::lv_pic_read(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) {SPI_FLASH_BufferRead((uint8_t *)P_Rbuff, addr, size);}
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
#endif // 1 ... SPI_FLASH
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
index c3e3fe74ad33..88d5d6c2f549 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
@@ -56,38 +56,35 @@
#define PIC_NAME_MAX_LEN 50
- #define LOGO_MAX_SIZE (300*1024)//logo���ֵ
- #define TITLELOGO_MAX_SIZE (150*1024)//logo���ֵ
+ #define LOGO_MAX_SIZE (300*1024)
+ #define TITLELOGO_MAX_SIZE (150*1024)
#define DEFAULT_VIEW_MAX_SIZE (200*200*2)
#define FLASH_VIEW_MAX_SIZE (200*200*2)
- //ͼƬ
- //Robin2�洢��ַ
- #define PIC_NAME_ADDR 0x003000 //ͼƬ��Ϣ�洢��ַ��ͼƬ����
- #define PIC_SIZE_ADDR 0x007000 //ͼƬ��Ϣ�洢��ַ��ͼƬ��Сֵ
- #define PIC_COUNTER_ADDR 0x008000 //ͼƬ������ֵ�洢��ַ
- #define PIC_LOGO_ADDR 0x009000 //ͼƬlogo�洢��ַ
- //#define PIC_DATA_ADDR 0x02f000 //ͼƬ���ݴ洢��ַ
+ //Robin 2
+ #define PIC_NAME_ADDR 0x003000
+ #define PIC_SIZE_ADDR 0x007000
+ #define PIC_COUNTER_ADDR 0x008000
+ #define PIC_LOGO_ADDR 0x009000
+ //#define PIC_DATA_ADDR 0x02f000
#define DEFAULT_VIEW_ADDR 0XC5800
#define BAK_VIEW_ADDR (DEFAULT_VIEW_ADDR+90*1024)
#define PIC_ICON_LOGO_ADDR (BAK_VIEW_ADDR+80*1024)
- #define PIC_DATA_ADDR (PIC_ICON_LOGO_ADDR+350*1024) //ͼƬ���ݴ洢��ַ//(800*240)
+ #define PIC_DATA_ADDR (PIC_ICON_LOGO_ADDR+350*1024)
- // �ֿ�
- #define FONTINFOADDR 0x600000 // 6M�Ժ��ַΪ�ֿ�
+ #define FONTINFOADDR 0x600000
#define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
#define GBK_FLASH_ADDR (UNIGBK_FLASH_ADDR+180224) // 176*1024
- #define PER_PIC_MAX_SPACE (32*1024) // Ϊ�˷�ֹ����Խ������⣬ÿ��СͼƬ�����仮��Ӧ��ȡ�ܹ�����4K��ֵ
+ #define PER_PIC_MAX_SPACE (32*1024)
- //
union union32 {
uint8_t bytes[4];
uint32_t dwords;
};
- // ͼƬ��Ϣ�ṹ��
+
struct pic_msg {
uint8_t name[PIC_NAME_MAX_LEN];
union union32 size;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
index ec92e1559cc7..94a865d04557 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -67,7 +67,7 @@ void lv_draw_about(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -79,14 +79,14 @@ void lv_draw_about(void) {
buttonBack = lv_imgbtn_create(scr, NULL);
#if 1
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
/*Create a label on the Image button*/
@@ -98,16 +98,16 @@ void lv_draw_about(void) {
}
fw_version = lv_label_create(scr, NULL);
- lv_obj_set_style(fw_version, &tft_style_lable_rel);
+ lv_obj_set_style(fw_version, &tft_style_label_rel);
lv_label_set_text(fw_version, SHORT_BUILD_VERSION);
lv_obj_align(fw_version, NULL, LV_ALIGN_CENTER, 0, -60);
fw_type = lv_label_create(scr, NULL);
- lv_obj_set_style(fw_type, &tft_style_lable_rel);
+ lv_obj_set_style(fw_type, &tft_style_label_rel);
lv_label_set_text(fw_type,
#if MB(MKS_ROBIN_PRO)
"Firmware: Robin_Pro35"
- #elif MB(MKS_ROBIN_NANO)
+ #elif MB(MKS_ROBIN_NANO, MKS_ROBIN_NANO_V2)
"Firmware: Robin_Nano35"
#else
CUSTOM_MACHINE_NAME
@@ -116,11 +116,11 @@ void lv_draw_about(void) {
lv_obj_align(fw_type, NULL, LV_ALIGN_CENTER, 0, -20);
board = lv_label_create(scr, NULL);
- lv_obj_set_style(board, &tft_style_lable_rel);
+ lv_obj_set_style(board, &tft_style_label_rel);
lv_label_set_text(board, "Board: " BOARD_INFO_NAME);
lv_obj_align(board, NULL, LV_ALIGN_CENTER, 0, 20);
}
void lv_clear_about() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp
new file mode 100644
index 000000000000..b6906a6dfec4
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp
@@ -0,0 +1,483 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_ACCE_RETURN 1
+#define ID_ACCE_PRINT 2
+#define ID_ACCE_RETRA 3
+#define ID_ACCE_TRAVEL 4
+#define ID_ACCE_X 5
+#define ID_ACCE_Y 6
+#define ID_ACCE_Z 7
+#define ID_ACCE_E0 8
+#define ID_ACCE_E1 9
+#define ID_ACCE_UP 10
+#define ID_ACCE_DOWN 11
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_ACCE_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_acceleration_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_ACCE_PRINT:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = PrintAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_RETRA:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = RetractAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_TRAVEL:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = TravelAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = XAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = YAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = ZAcceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_E0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E0Acceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_E1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E1Acceleration;
+ lv_clear_acceleration_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_ACCE_UP:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_acceleration_settings();
+ lv_draw_acceleration_settings();
+ }
+ break;
+ case ID_ACCE_DOWN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 1;
+ lv_clear_acceleration_settings();
+ lv_draw_acceleration_settings();
+ }
+ break;
+ }
+}
+
+void lv_draw_acceleration_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+ lv_obj_t *buttonPrintText = NULL, *labelPrintText = NULL, *buttonPrintValue = NULL, *labelPrintValue = NULL;
+ lv_obj_t *buttonRetraText = NULL, *labelRetraText = NULL, *buttonRetraValue = NULL, *labelRetraValue = NULL;
+ lv_obj_t *buttonTravelText = NULL, *labelTravelText = NULL, *buttonTravelValue = NULL, *labelTravelValue = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+ lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+ lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ACCELERATION_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = ACCELERATION_UI;
+ }
+ disp_state = ACCELERATION_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.AccelerationConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ if (uiCfg.para_ui_page != 1) {
+ buttonPrintText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonPrintText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonPrintText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonPrintText, event_handler);
+ lv_btn_set_style(buttonPrintText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonPrintText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonPrintText, LV_LAYOUT_OFF);
+ labelPrintText = lv_label_create(buttonPrintText, NULL); /*Add a label to the button*/
+
+ buttonPrintValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonPrintValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonPrintValue, event_handler, ID_ACCE_PRINT, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonPrintValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonPrintValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonPrintValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonPrintValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonPrintValue, LV_LAYOUT_OFF);
+ labelPrintValue = lv_label_create(buttonPrintValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonRetraText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonRetraText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonRetraText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonRetraText, event_handler);
+ lv_btn_set_style(buttonRetraText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonRetraText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonRetraText, LV_LAYOUT_OFF);
+ labelRetraText = lv_label_create(buttonRetraText, NULL); /*Add a label to the button*/
+
+ buttonRetraValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonRetraValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonRetraValue, event_handler, ID_ACCE_RETRA, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonRetraValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonRetraValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonRetraValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonRetraValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonRetraValue, LV_LAYOUT_OFF);
+ labelRetraValue = lv_label_create(buttonRetraValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonTravelText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonTravelText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonTravelText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonTravelText, event_handler);
+ lv_btn_set_style(buttonTravelText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonTravelText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonTravelText, LV_LAYOUT_OFF);
+ labelTravelText = lv_label_create(buttonTravelText, NULL); /*Add a label to the button*/
+
+ buttonTravelValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonTravelValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonTravelValue, event_handler, ID_ACCE_TRAVEL, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonTravelValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonTravelValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonTravelValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonTravelValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonTravelValue, LV_LAYOUT_OFF);
+ labelTravelValue = lv_label_create(buttonTravelValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_ACCE_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_ACCE_DOWN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+ else {
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_ACCE_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_ACCE_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonE0Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE0Text, event_handler);
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+ labelE0Text = lv_label_create(buttonE0Text, NULL); /*Add a label to the button*/
+
+ buttonE0Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_ACCE_E0, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+ labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonE1Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE1Text, event_handler);
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+ labelE1Text = lv_label_create(buttonE1Text, NULL); /*Add a label to the button*/
+
+ buttonE1Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_ACCE_E1, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+ labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_ACCE_UP, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+
+ lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+ lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+ labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_ACCE_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ if (uiCfg.para_ui_page != 1) {
+ lv_label_set_text(labelPrintText, machine_menu.PrintAcceleration);
+ lv_obj_align(labelPrintText, buttonPrintText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelRetraText, machine_menu.RetractAcceleration);
+ lv_obj_align(labelRetraText, buttonRetraText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTravelText, machine_menu.TravelAcceleration);
+ lv_obj_align(labelTravelText, buttonTravelText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelXText, machine_menu.X_Acceleration);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.next);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.acceleration);
+ lv_label_set_text(labelPrintValue, public_buf_l);
+ lv_obj_align(labelPrintValue, buttonPrintValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.retract_acceleration);
+ lv_label_set_text(labelRetraValue, public_buf_l);
+ lv_obj_align(labelRetraValue, buttonRetraValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.travel_acceleration);
+ lv_label_set_text(labelTravelValue, public_buf_l);
+ lv_obj_align(labelTravelValue, buttonTravelValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[X_AXIS]);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+ }
+ else {
+ lv_label_set_text(labelYText, machine_menu.Y_Acceleration);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.Z_Acceleration);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE0Text, machine_menu.E0_Acceleration);
+ lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE1Text, machine_menu.E1_Acceleration);
+ lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.previous);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Y_AXIS]);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Z_AXIS]);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS]);
+ lv_label_set_text(labelE0Value, public_buf_l);
+ lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)]);
+ lv_label_set_text(labelE1Value, public_buf_l);
+ lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+ }
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_acceleration_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h
new file mode 100644
index 000000000000..b5b62fdc4ca1
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_acceleration_settings(void);
+extern void lv_clear_acceleration_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp
new file mode 100644
index 000000000000..7d3eab436bd9
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp
@@ -0,0 +1,140 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_ADVANCE_RETURN 1
+#define ID_PAUSE_POS 2
+#define ID_PAUSE_POS_ARROW 3
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_ADVANCE_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_advance_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_PAUSE_POS:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_advance_settings();
+ lv_draw_pause_position();
+ }
+ break;
+ case ID_PAUSE_POS_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_advance_settings();
+ lv_draw_pause_position();
+ }
+ break;
+ }
+}
+
+void lv_draw_advance_settings(void) {
+ lv_obj_t *buttonBack, *label_Back;
+ lv_obj_t *buttonPausePos, *labelPausePos, *buttonPausePosNarrow;
+ lv_obj_t * line1;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ADVANCED_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = ADVANCED_UI;
+ }
+ disp_state = ADVANCED_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.AdvancedConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_arrow);
+
+ buttonPausePos = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonPausePos, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonPausePos, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonPausePos, event_handler, ID_PAUSE_POS, NULL, 0);
+ lv_btn_set_style(buttonPausePos, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonPausePos, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonPausePos, LV_LAYOUT_OFF);
+ labelPausePos = lv_label_create(buttonPausePos, NULL); /*Add a label to the button*/
+
+ buttonPausePosNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonPausePosNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonPausePosNarrow, event_handler, ID_PAUSE_POS_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonPausePosNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonPausePosNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonPausePosNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPausePosNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonPausePosNarrow, LV_LAYOUT_OFF);
+
+ line1 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_ADVANCE_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelPausePos, machine_menu.PausePosition);
+ lv_obj_align(labelPausePos, buttonPausePos, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ }
+
+}
+
+void lv_clear_advance_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h
new file mode 100644
index 000000000000..bfd76125bb8a
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_advance_settings(void);
+extern void lv_clear_advance_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
index a2b02826c77d..264d528c0311 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -44,7 +44,7 @@ static lv_obj_t * printSpeedText;
#define ID_C_MOVE 3
#define ID_C_EXT 4
#define ID_C_STEP 5
-#define ID_C_RETURN 6
+#define ID_C_RETURN 6
static uint8_t speedType;
@@ -169,7 +169,7 @@ void lv_draw_change_speed(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -178,56 +178,55 @@ void lv_draw_change_speed(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonAdd = lv_imgbtn_create(scr, NULL);
- buttonDec = lv_imgbtn_create(scr, NULL);
- buttonMov = lv_imgbtn_create(scr, NULL);
- buttonExt = lv_imgbtn_create(scr, NULL);
+ buttonAdd = lv_imgbtn_create(scr, NULL);
+ buttonDec = lv_imgbtn_create(scr, NULL);
+ buttonMov = lv_imgbtn_create(scr, NULL);
+ buttonExt = lv_imgbtn_create(scr, NULL);
buttonStep = lv_imgbtn_create(scr, NULL);
buttonBack = lv_imgbtn_create(scr, NULL);
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_C_ADD, "bmp_Add.bin", 0);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_C_DEC, "bmp_Dec.bin", 0);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_C_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_C_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttonMov, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonMov, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonExt, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonStep, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonStep, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -239,8 +238,8 @@ void lv_draw_change_speed(void) {
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL);
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
- labelMov = lv_label_create(buttonMov, NULL);
- labelExt = lv_label_create(buttonExt, NULL);
+ labelMov = lv_label_create(buttonMov, NULL);
+ labelExt = lv_label_create(buttonExt, NULL);
labelStep = lv_label_create(buttonStep, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
@@ -258,17 +257,17 @@ void lv_draw_change_speed(void) {
disp_speed_step();
printSpeedText = lv_label_create(scr, NULL);
- lv_obj_set_style(printSpeedText, &tft_style_lable_rel);
+ lv_obj_set_style(printSpeedText, &tft_style_label_rel);
disp_print_speed();
}
void disp_speed_step() {
if (uiCfg.stepPrintSpeed == 1)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step1_percent.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step1_percent.bin", 0);
else if (uiCfg.stepPrintSpeed == 5)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step5_percent.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step5_percent.bin", 0);
else if (uiCfg.stepPrintSpeed == 10)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step10_percent.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step10_percent.bin", 0);
if (gCfgItems.multiple_language != 0) {
if (uiCfg.stepPrintSpeed == 1) {
@@ -291,16 +290,16 @@ void disp_print_speed() {
public_buf_l[0] = '\0';
- if (speedType == 0) { //move
+ if (speedType == 0) { // move
strcat(public_buf_l, speed_menu.move_speed);
- strcat(public_buf_l, ": ");
- sprintf(buf, "%d%%", feedrate_percentage);
+ strcat_P(public_buf_l, PSTR(": "));
+ sprintf_P(buf, PSTR("%d%%"), feedrate_percentage);
strcat(public_buf_l, buf);
}
else if (speedType == 1) { // e1
strcat(public_buf_l, speed_menu.extrude_speed);
- strcat(public_buf_l, ": ");
- sprintf(buf, "%d%%", planner.flow_percentage[0]);
+ strcat_P(public_buf_l, PSTR(": "));
+ sprintf_P(buf, PSTR("%d%%"), planner.flow_percentage[0]);
strcat(public_buf_l, buf);
}
lv_label_set_text(printSpeedText, public_buf_l);
@@ -311,11 +310,11 @@ void disp_speed_type() {
switch (speedType) {
case 1:
lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_extruct_sel.bin", 0);
- lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_changespeed.bin", 0);
+ lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_changeSpeed.bin", 0);
break;
default:
- lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_Extruct.bin", 0);
+ lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_speed_extruct.bin", 0);
lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_sel.bin", 0);
break;
}
@@ -333,4 +332,4 @@ void disp_speed_type() {
void lv_clear_change_speed() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
index 19d2452142d9..9ef27afc9ba6 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
@@ -26,10 +26,11 @@
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
+
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
//#include "../lvgl/src/lv_objx/lv_img.h"
//#include "../lvgl/src/lv_core/lv_disp.h"
@@ -48,6 +49,7 @@
#if ENABLED(PARK_HEAD_ON_PAUSE)
#include "../../../../feature/pause.h"
#endif
+#include "../../../../gcode/gcode.h"
static lv_obj_t * scr;
extern uint8_t sel_id;
@@ -72,36 +74,36 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
lv_draw_printing();
#if ENABLED(SDSUPPORT)
- if (gcode_preview_over != 1) {
- char *cur_name;
- cur_name = strrchr(list_file.file_name[sel_id], '/');
-
- SdFile file, *curDir;
- card.endFilePrint();
- const char * const fname = card.diveToFile(true, curDir, cur_name);
- if (!fname) return;
- if (file.open(curDir, fname, O_READ)) {
- gCfgItems.curFilesize = file.fileSize();
- file.close();
- update_spi_flash();
- }
- card.openFileRead(cur_name);
- if (card.isFileOpen()) {
- feedrate_percentage = 100;
- //saved_feedrate_percentage = feedrate_percentage;
- planner.flow_percentage[0] = 100;
- planner.e_factor[0] = planner.flow_percentage[0] * 0.01f;
- #if EXTRUDERS == 2
- planner.flow_percentage[1] = 100;
- planner.e_factor[1] = planner.flow_percentage[1] * 0.01f;
- #endif
- card.startFileprint();
- #if ENABLED(POWER_LOSS_RECOVERY)
- recovery.prepare();
- #endif
- once_flag = 0;
+ if (gcode_preview_over != 1) {
+ char *cur_name;
+ cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+ SdFile file, *curDir;
+ card.endFilePrint();
+ const char * const fname = card.diveToFile(true, curDir, cur_name);
+ if (!fname) return;
+ if (file.open(curDir, fname, O_READ)) {
+ gCfgItems.curFilesize = file.fileSize();
+ file.close();
+ update_spi_flash();
+ }
+ card.openFileRead(cur_name);
+ if (card.isFileOpen()) {
+ feedrate_percentage = 100;
+ //saved_feedrate_percentage = feedrate_percentage;
+ planner.flow_percentage[0] = 100;
+ planner.e_factor[0] = planner.flow_percentage[0] * 0.01f;
+ #if EXTRUDERS == 2
+ planner.flow_percentage[1] = 100;
+ planner.e_factor[1] = planner.flow_percentage[1] * 0.01f;
+ #endif
+ card.startFileprint();
+ #if ENABLED(POWER_LOSS_RECOVERY)
+ recovery.prepare();
+ #endif
+ once_flag = 0;
+ }
}
- }
#endif
}
else if (DialogType == DIALOG_TYPE_STOP) {
@@ -112,7 +114,7 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
#if ENABLED(SDSUPPORT)
//card.endFilePrint();
//wait_for_heatup = false;
- uiCfg.print_state = IDLE;
+ uiCfg.print_state = IDLE;
card.flag.abort_sd_printing = true;
//queue.clear();
//quickstop_stepper();
@@ -120,12 +122,9 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
//thermalManager.disable_all_heaters();
//#if ENABLED(POWER_LOSS_RECOVERY)
- //recovery.purge();
+ // recovery.purge();
//#endif
- //queue.enqueue_one_now(PSTR("G91"));
- //queue.enqueue_one_now(PSTR("G1 Z10"));
- //queue.enqueue_one_now(PSTR("G90"));
- //queue.enqueue_one_now(PSTR("G28 X0 Y0"));
+ //queue.enqueue_now_P(PSTR("G91\nG1 Z10\nG90\nG28 X0 Y0"));
//queue.inject_P(PSTR("G91\nG1 Z10\nG90\nG28 X0 Y0\nM84\nM107"));
#endif
}
@@ -148,6 +147,21 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
draw_return_ui();
}
#endif
+ else if (DialogType == DIALOG_STORE_EEPROM_TIPS) {
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ clear_cur_ui();
+ draw_return_ui();
+ }
+ else if (DialogType == DIALOG_READ_EEPROM_TIPS) {
+ gcode.process_subcommands_now_P(PSTR("M501"));
+ clear_cur_ui();
+ draw_return_ui();
+ }
+ else if (DialogType == DIALOG_REVERT_EEPROM_TIPS) {
+ gcode.process_subcommands_now_P(PSTR("M502"));
+ clear_cur_ui();
+ draw_return_ui();
+ }
}
}
@@ -186,7 +200,7 @@ void lv_draw_dialog(uint8_t type) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -194,51 +208,52 @@ void lv_draw_dialog(uint8_t type) {
//LV_IMG_DECLARE(bmp_pic);
- static lv_style_t style_btn_rel; // A variable to store the released style
- lv_style_copy(&style_btn_rel, &lv_style_plain); // Initialize from a built-in style
+ static lv_style_t style_btn_rel; // A variable to store the released style
+ lv_style_copy(&style_btn_rel, &lv_style_plain); // Initialize from a built-in style
style_btn_rel.body.border.color = lv_color_hex3(0x269);
style_btn_rel.body.border.width = 1;
- style_btn_rel.body.main_color = lv_color_hex3(0xADF);
- style_btn_rel.body.grad_color = lv_color_hex3(0x46B);
+ style_btn_rel.body.main_color = lv_color_hex3(0xADF);
+ style_btn_rel.body.grad_color = lv_color_hex3(0x46B);
style_btn_rel.body.shadow.width = 4;
- style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
- style_btn_rel.body.radius = LV_RADIUS_CIRCLE;
- style_btn_rel.text.color = lv_color_hex3(0xDEF);
- style_btn_rel.text.font = &lv_font_roboto_22;
+ style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
+ style_btn_rel.body.radius = LV_RADIUS_CIRCLE;
+ style_btn_rel.text.color = lv_color_hex3(0xDEF);
+ style_btn_rel.text.font = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
- static lv_style_t style_btn_pr; // A variable to store the pressed style
- lv_style_copy(&style_btn_pr, &style_btn_rel); // Initialize from the released style
+ static lv_style_t style_btn_pr; // A variable to store the pressed style
+ lv_style_copy(&style_btn_pr, &style_btn_rel); // Initialize from the released style
style_btn_pr.body.border.color = lv_color_hex3(0x46B);
- style_btn_pr.body.main_color = lv_color_hex3(0x8BD);
- style_btn_pr.body.grad_color = lv_color_hex3(0x24A);
+ style_btn_pr.body.main_color = lv_color_hex3(0x8BD);
+ style_btn_pr.body.grad_color = lv_color_hex3(0x24A);
style_btn_pr.body.shadow.width = 2;
- style_btn_pr.text.color = lv_color_hex3(0xBCD);
- style_btn_pr.text.font = &lv_font_roboto_22;
+ style_btn_pr.text.color = lv_color_hex3(0xBCD);
+ style_btn_pr.text.font = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
lv_obj_t * labelDialog = lv_label_create(scr, NULL);
- lv_obj_set_style(labelDialog, &tft_style_lable_rel);
+ lv_obj_set_style(labelDialog, &tft_style_label_rel);
if (DialogType == DIALOG_TYPE_FINISH_PRINT || DialogType == DIALOG_PAUSE_MESSAGE_RESUME) {
- lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
- lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
- lv_obj_set_size(btnOk, 100, 50); // Set its size
+ lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
+ lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
+ lv_obj_set_size(btnOk, 100, 50); // Set its size
lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
- lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
- lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
- lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
- lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
+ lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
+ lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
}
else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING
- || DialogType == DIALOG_PAUSE_MESSAGE_INSERT
- || DialogType == DIALOG_PAUSE_MESSAGE_HEAT) {
- lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
- lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
- lv_obj_set_size(btnOk, 100, 50); // Set its size
+ || DialogType == DIALOG_PAUSE_MESSAGE_INSERT
+ || DialogType == DIALOG_PAUSE_MESSAGE_HEAT
+ ) {
+ lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
+ lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y); // Set its position
+ lv_obj_set_size(btnOk, 100, 50); // Set its size
lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
- lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
- lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
- lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
- lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
+ lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
+ lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
}
else if (DialogType == DIALOG_PAUSE_MESSAGE_PAUSING
|| DialogType == DIALOG_PAUSE_MESSAGE_CHANGING
@@ -251,28 +266,28 @@ void lv_draw_dialog(uint8_t type) {
// nothing to do
}
else {
- lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
- lv_obj_set_pos(btnOk, BTN_OK_X, BTN_OK_Y); // Set its position
- lv_obj_set_size(btnOk, 100, 50); // Set its size
+ lv_obj_t * btnOk = lv_btn_create(scr, NULL); // Add a button the current screen
+ lv_obj_set_pos(btnOk, BTN_OK_X, BTN_OK_Y); // Set its position
+ lv_obj_set_size(btnOk, 100, 50); // Set its size
lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
- lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
- lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
- lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
+ lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
+ lv_obj_t * labelOk = lv_label_create(btnOk, NULL); // Add a label to the button
- lv_obj_t * btnCancel = lv_btn_create(scr, NULL); // Add a button the current screen
- lv_obj_set_pos(btnCancel, BTN_CANCEL_X, BTN_CANCEL_Y); // Set its position
- lv_obj_set_size(btnCancel, 100, 50); // Set its size
+ lv_obj_t * btnCancel = lv_btn_create(scr, NULL); // Add a button the current screen
+ lv_obj_set_pos(btnCancel, BTN_CANCEL_X, BTN_CANCEL_Y); // Set its position
+ lv_obj_set_size(btnCancel, 100, 50); // Set its size
lv_obj_set_event_cb(btnCancel, btn_cancel_event_cb);
- lv_btn_set_style(btnCancel, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
- lv_btn_set_style(btnCancel, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
- lv_obj_t * labelCancel = lv_label_create(btnCancel, NULL); // Add a label to the button
+ lv_btn_set_style(btnCancel, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
+ lv_btn_set_style(btnCancel, LV_BTN_STYLE_PR, &style_btn_pr); // Set the button's pressed style
+ lv_obj_t * labelCancel = lv_label_create(btnCancel, NULL); // Add a label to the button
if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) {
- lv_label_set_text(labelOk, pause_msg_menu.purgeMore); // Set the labels text
+ lv_label_set_text(labelOk, pause_msg_menu.purgeMore); // Set the labels text
lv_label_set_text(labelCancel, pause_msg_menu.continuePrint);
}
else {
- lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
+ lv_label_set_text(labelOk, print_file_dialog_menu.confirm); // Set the labels text
lv_label_set_text(labelCancel, print_file_dialog_menu.cancle);
}
}
@@ -281,7 +296,7 @@ void lv_draw_dialog(uint8_t type) {
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
lv_obj_t * labelFile = lv_label_create(scr, NULL);
- lv_obj_set_style(labelFile, &tft_style_lable_rel);
+ lv_obj_set_style(labelFile, &tft_style_label_rel);
lv_label_set_text(labelFile, list_file.long_name[sel_id]);
lv_obj_align(labelFile, NULL, LV_ALIGN_CENTER, 0, -60);
@@ -338,8 +353,20 @@ void lv_draw_dialog(uint8_t type) {
lv_label_set_text(labelDialog, pause_msg_menu.option);
lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
}
+ else if (DialogType == DIALOG_STORE_EEPROM_TIPS) {
+ lv_label_set_text(labelDialog, eeprom_menu.storeTips);
+ lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+ }
+ else if (DialogType == DIALOG_READ_EEPROM_TIPS) {
+ lv_label_set_text(labelDialog, eeprom_menu.readTips);
+ lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+ }
+ else if (DialogType == DIALOG_REVERT_EEPROM_TIPS) {
+ lv_label_set_text(labelDialog, eeprom_menu.revertTips);
+ lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+ }
}
void lv_clear_dialog() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
index f68b0f8443fa..a5b829a2cf94 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
@@ -30,7 +30,7 @@ extern "C" { /* C-declarations for C++ */
#define DIALOG_TYPE_REPRINT_NO_FILE 2
#define DIALOG_TYPE_M80_FAIL 3 //**
-#define DIALOG_TYPE_MESSEGE_ERR1 4 //**
+#define DIALOG_TYPE_MESSAGE_ERR1 4 //**
#define DIALOG_TYPE_UPDATE_ESP_FIRMARE 5
#define DIALOG_TYPE_UPDATE_ESP_DATA 6
@@ -65,6 +65,10 @@ extern "C" { /* C-declarations for C++ */
#define DIALOG_PAUSE_MESSAGE_HEATING 30
#define DIALOG_PAUSE_MESSAGE_OPTION 31
+#define DIALOG_STORE_EEPROM_TIPS 32
+#define DIALOG_READ_EEPROM_TIPS 33
+#define DIALOG_REVERT_EEPROM_TIPS 34
+
#define BTN_OK_X 100
#define BTN_OK_Y 180
#define BTN_CANCEL_X 280
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp
new file mode 100644
index 000000000000..f340ca463223
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp
@@ -0,0 +1,237 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_EEPROM_RETURN 1
+#define ID_EEPROM_STORE 2
+#define ID_EEPROM_STORE_ARROW 3
+#define ID_EEPROM_READ 4
+#define ID_EEPROM_READ_ARROW 5
+#define ID_EEPROM_REVERT 6
+#define ID_EEPROM_REVERT_ARROW 7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_EEPROM_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ draw_return_ui();
+ }
+ break;
+
+ #if 0
+ case ID_EEPROM_STORE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_STORE_EEPROM_TIPS);
+ }
+ break;
+ case ID_EEPROM_STORE_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_STORE_EEPROM_TIPS);
+ }
+ break;
+ case ID_EEPROM_READ:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_READ_EEPROM_TIPS);
+ }
+ break;
+ case ID_EEPROM_READ_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_READ_EEPROM_TIPS);
+ }
+ break;
+ #endif
+
+ case ID_EEPROM_REVERT:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_REVERT_EEPROM_TIPS);
+ }
+ break;
+ case ID_EEPROM_REVERT_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_eeprom_settings();
+ lv_draw_dialog(DIALOG_REVERT_EEPROM_TIPS);
+ }
+ break;
+ }
+}
+
+void lv_draw_eeprom_settings(void) {
+ lv_obj_t *buttonBack, *label_Back;
+ //lv_obj_t *buttonStore,*labelStore,*buttonStoreNarrow;
+ //lv_obj_t *buttonRead,*labelRead,*buttonReadNarrow;
+ lv_obj_t *buttonRevert, *labelRevert, *buttonRevertNarrow;
+ lv_obj_t * line1; // * line2,* line3;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != EEPROM_SETTINGS_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = EEPROM_SETTINGS_UI;
+ }
+ disp_state = EEPROM_SETTINGS_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, creat_title_text());
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_arrow);
+ #if 0
+ buttonStore = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonStore, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonStore, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonStore, event_handler, ID_EEPROM_STORE, NULL, 0);
+ lv_btn_set_style(buttonStore, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonStore, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonStore, LV_LAYOUT_OFF);
+ labelStore = lv_label_create(buttonStore, NULL); /*Add a label to the button*/
+
+ buttonStoreNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonStoreNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonStoreNarrow, event_handler, ID_EEPROM_STORE_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonStoreNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonStoreNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonStoreNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStoreNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonStoreNarrow, LV_LAYOUT_OFF);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonRead = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonRead, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonRead, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMotor, event_handler);
+ lv_obj_set_event_cb_mks(buttonRead, event_handler, ID_EEPROM_READ, NULL, 0);
+ lv_btn_set_style(buttonRead, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonRead, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonRead, LV_LAYOUT_OFF);
+ labelRead = lv_label_create(buttonRead, NULL); /*Add a label to the button*/
+
+ buttonReadNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonReadNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonReadNarrow, event_handler, ID_EEPROM_READ_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonReadNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonReadNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonReadNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonReadNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonReadNarrow, LV_LAYOUT_OFF);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+ #endif // if 0
+ buttonRevert = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonRevert, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonRevert, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMotor, event_handler);
+ lv_obj_set_event_cb_mks(buttonRevert, event_handler, ID_EEPROM_REVERT, NULL, 0);
+ lv_btn_set_style(buttonRevert, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonRevert, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonRevert, LV_LAYOUT_OFF);
+ labelRevert = lv_label_create(buttonRevert, NULL); /*Add a label to the button*/
+
+ buttonRevertNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonRevertNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonRevertNarrow, event_handler, ID_EEPROM_REVERT_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonRevertNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonRevertNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonRevertNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonRevertNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonRevertNarrow, LV_LAYOUT_OFF);
+
+ //line3 = lv_line_create(scr, NULL);
+ //lv_ex_line(line3,line_points[2]);
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_EEPROM_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+ //lv_label_set_text(labelStore, eeprom_menu.store);
+ //lv_obj_align(labelStore, buttonStore, LV_ALIGN_IN_LEFT_MID,0, 0);
+
+ //lv_label_set_text(labelRead, eeprom_menu.read);
+ //lv_obj_align(labelRead, buttonRead, LV_ALIGN_IN_LEFT_MID,0, 0);
+
+ lv_label_set_text(labelRevert, eeprom_menu.revert);
+ lv_obj_align(labelRevert, buttonRevert, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ }
+
+}
+
+void lv_clear_eeprom_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h
new file mode 100644
index 000000000000..da699353babd
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_eeprom_settings(void);
+extern void lv_clear_eeprom_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
index f72cb2ab32fb..1bcdccda414a 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
@@ -21,7 +21,11 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+ #include "SPI_TFT.h"
+#endif
#include "lv_conf.h"
#include "draw_ui.h"
@@ -55,30 +59,30 @@ void lv_draw_error_message(PGM_P const msg) {
if (msg) {
message = lv_label_create(scr, NULL);
- lv_obj_set_style(message, &tft_style_lable_rel);
+ lv_obj_set_style(message, &tft_style_label_rel);
lv_label_set_text(message, msg);
lv_obj_align(message, NULL, LV_ALIGN_CENTER, 0, -50);
}
kill_message = lv_label_create(scr, NULL);
- lv_obj_set_style(kill_message, &tft_style_lable_rel);
+ lv_obj_set_style(kill_message, &tft_style_label_rel);
lv_label_set_text(kill_message, "PRINTER HALTED");
lv_obj_align(kill_message, NULL, LV_ALIGN_CENTER, 0, -10);
reset_tips = lv_label_create(scr, NULL);
- lv_obj_set_style(reset_tips, &tft_style_lable_rel);
+ lv_obj_set_style(reset_tips, &tft_style_label_rel);
lv_label_set_text(reset_tips, "Please Reset");
lv_obj_align(reset_tips, NULL, LV_ALIGN_CENTER, 0, 30);
lv_task_handler();
#endif
- LCD_Clear(0x0000);
+
+ TERN(TFT_LVGL_UI_SPI, SPI_TFT.LCD_clear, LCD_Clear)(0x0000);
if (msg) disp_string((TFT_WIDTH - strlen(msg) * 16) / 2, 100, msg, 0xFFFF, 0x0000);
disp_string((TFT_WIDTH - strlen("PRINTER HALTED") * 16) / 2, 140, "PRINTER HALTED", 0xFFFF, 0x0000);
disp_string((TFT_WIDTH - strlen("Please Reset") * 16) / 2, 180, "Please Reset", 0xFFFF, 0x0000);
-
}
void lv_clear_error_message() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
index 90a7ce64f6eb..ca84b4b5ecdd 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -59,11 +59,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) {
- queue.enqueue_one_now(PSTR("G91"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf((char *)public_buf_l, "G1 E%d F%d", uiCfg.extruStep, 60 * uiCfg.extruSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ queue.enqueue_now_P(PSTR("G91"));
+ ZERO(public_buf_l);
+ sprintf_P((char *)public_buf_l, PSTR("G1 E%d F%d"), uiCfg.extruStep, 60 * uiCfg.extruSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
extructAmount += uiCfg.extruStep;
disp_extru_amount();
}
@@ -75,11 +75,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) {
- queue.enqueue_one_now(PSTR("G91"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf((char *)public_buf_l, "G1 E%d F%d", 0 - uiCfg.extruStep, 60 * uiCfg.extruSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ queue.enqueue_now_P(PSTR("G91"));
+ ZERO(public_buf_l);
+ sprintf_P((char *)public_buf_l, PSTR("G1 E%d F%d"), 0 - uiCfg.extruStep, 60 * uiCfg.extruSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
extructAmount -= uiCfg.extruStep;
disp_extru_amount();
}
@@ -166,7 +166,7 @@ void lv_draw_extrusion(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -175,55 +175,54 @@ void lv_draw_extrusion(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonAdd = lv_imgbtn_create(scr, NULL);
- buttonDec = lv_imgbtn_create(scr, NULL);
- buttoType = lv_imgbtn_create(scr, NULL);
- buttonStep = lv_imgbtn_create(scr, NULL);
+ buttonAdd = lv_imgbtn_create(scr, NULL);
+ buttonDec = lv_imgbtn_create(scr, NULL);
+ buttoType = lv_imgbtn_create(scr, NULL);
+ buttonStep = lv_imgbtn_create(scr, NULL);
buttonSpeed = lv_imgbtn_create(scr, NULL);
- buttonBack = lv_imgbtn_create(scr, NULL);
+ buttonBack = lv_imgbtn_create(scr, NULL);
- lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_E_ADD, "bmp_In.bin", 0);
+ lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_E_ADD, "bmp_in.bin", 0);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
-
#if 1
- lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_E_DEC, "bmp_Out.bin", 0);
+ lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_E_DEC, "bmp_out.bin", 0);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_E_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_E_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -235,8 +234,8 @@ void lv_draw_extrusion(void) {
lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL);
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
- labelType = lv_label_create(buttoType, NULL);
- labelStep = lv_label_create(buttonStep, NULL);
+ labelType = lv_label_create(buttoType, NULL);
+ labelStep = lv_label_create(buttonStep, NULL);
labelSpeed = lv_label_create(buttonSpeed, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
@@ -256,24 +255,24 @@ void lv_draw_extrusion(void) {
disp_ext_speed();
tempText = lv_label_create(scr, NULL);
- lv_obj_set_style(tempText, &tft_style_lable_rel);
+ lv_obj_set_style(tempText, &tft_style_label_rel);
disp_hotend_temp();
ExtruText = lv_label_create(scr, NULL);
- lv_obj_set_style(ExtruText, &tft_style_lable_rel);
+ lv_obj_set_style(ExtruText, &tft_style_label_rel);
disp_extru_amount();
}
void disp_ext_type() {
if (uiCfg.curSprayerChoose == 1) {
- lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru2.bin", 0);
+ lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_extru2.bin", 0);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelType, extrude_menu.ext2);
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
}
}
else {
- lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru1.bin", 0);
+ lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_extru1.bin", 0);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelType, extrude_menu.ext1);
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -283,11 +282,11 @@ void disp_ext_type() {
void disp_ext_speed() {
if (uiCfg.extruSpeed == 20)
- lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_high.bin", 0);
+ lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_high.bin", 0);
else if (uiCfg.extruSpeed == 1)
- lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_slow.bin", 0);
+ lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_slow.bin", 0);
else
- lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_normal.bin", 0);
+ lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_normal.bin", 0);
if (gCfgItems.multiple_language != 0) {
if (uiCfg.extruSpeed == 20) {
@@ -351,11 +350,11 @@ void disp_extru_amount() {
void disp_ext_step() {
if (uiCfg.extruStep == 1)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step1_mm.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step1_mm.bin", 0);
else if (uiCfg.extruStep == 5)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step5_mm.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step5_mm.bin", 0);
else if (uiCfg.extruStep == 10)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step10_mm.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step10_mm.bin", 0);
if (gCfgItems.multiple_language != 0) {
if (uiCfg.extruStep == 1) {
@@ -375,4 +374,4 @@ void disp_ext_step() {
void lv_clear_extrusion() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
index 76c0e251e866..4dcac62aeefd 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "lv_conf.h"
@@ -33,6 +33,7 @@
#include "draw_ui.h"
#include "../../../../module/temperature.h"
#include "../../../../gcode/queue.h"
+#include "../../../../gcode/gcode.h"
static lv_obj_t * scr;
static lv_obj_t * fanText;
@@ -55,9 +56,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (fanSpeed + 1 <= 255) {
fanSpeed++;
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "M106 S%d", fanSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("M106 S%d"), fanSpeed);
+ gcode.process_subcommands_now(public_buf_l);
}
}
break;
@@ -68,9 +69,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (fanSpeed > 0) {
fanSpeed--;
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "M106 S%d", fanSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("M106 S%d"), fanSpeed);
+ gcode.process_subcommands_now(public_buf_l);
}
}
@@ -80,7 +81,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- queue.enqueue_one_now(PSTR("M106 S255"));
+ gcode.process_subcommands_now_P(PSTR("M106 S255"));
}
break;
case ID_F_MID:
@@ -88,7 +89,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- queue.enqueue_one_now(PSTR("M106 S127"));
+ gcode.process_subcommands_now_P(PSTR("M106 S127"));
}
break;
case ID_F_OFF:
@@ -96,7 +97,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- queue.enqueue_one_now(PSTR("M107"));
+ gcode.process_subcommands_now_P(PSTR("M107"));
}
break;
case ID_F_RETURN:
@@ -111,11 +112,13 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
-
void lv_draw_fan(void) {
lv_obj_t *buttonAdd, *buttonDec, *buttonHigh, *buttonMid;
lv_obj_t *buttonOff, *buttonBack;
+ #if HAS_FAN
+ fanSpeed = thermalManager.fan_speed[0];
+ #endif
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != FAN_UI) {
disp_state_stack._disp_index++;
disp_state_stack._disp_state[disp_state_stack._disp_index] = FAN_UI;
@@ -129,7 +132,7 @@ void lv_draw_fan(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -148,39 +151,39 @@ void lv_draw_fan(void) {
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_F_ADD, "bmp_Add.bin", 0);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_F_DEC, "bmp_Dec.bin", 0);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonHigh, event_handler, ID_F_HIGH, "bmp_Speed255.bin", 0);
+ lv_obj_set_event_cb_mks(buttonHigh, event_handler,ID_F_HIGH,"bmp_speed255.bin",0);
lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonMid, event_handler, ID_F_MID, "bmp_Speed127.bin", 0);
+ lv_obj_set_event_cb_mks(buttonMid, event_handler,ID_F_MID,"bmp_speed127.bin",0);
lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_F_OFF, "bmp_Speed0.bin", 0);
+ lv_obj_set_event_cb_mks(buttonOff, event_handler,ID_F_OFF,"bmp_speed0.bin",0);
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_F_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler,ID_F_RETURN,"bmp_return.bin",0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
@@ -227,7 +230,7 @@ void lv_draw_fan(void) {
}
fanText = lv_label_create(scr, NULL);
- lv_obj_set_style(fanText, &tft_style_lable_rel);
+ lv_obj_set_style(fanText, &tft_style_label_rel);
disp_fan_value();
}
@@ -235,8 +238,8 @@ void disp_fan_value() {
char buf1[10] = {0};
public_buf_l[0] = '\0';
strcat(public_buf_l, fan_menu.state);
- strcat(public_buf_l, ": ");
- sprintf(buf1, "%3d", thermalManager.fan_speed[0]);
+ strcat_P(public_buf_l, PSTR(": "));
+ sprintf_P(buf1, PSTR("%3d"), thermalManager.fan_speed[0]);
strcat(public_buf_l, buf1);
lv_label_set_text(fanText, public_buf_l);
lv_obj_align(fanText, NULL, LV_ALIGN_CENTER, 0, -65);
@@ -244,4 +247,4 @@ void disp_fan_value() {
void lv_clear_fan() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
index f6ad744b4180..35d442ebae76 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "draw_ready_print.h"
@@ -48,8 +48,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
switch (obj->mks_obj_id) {
case ID_H_ALL:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("G28"));
@@ -57,8 +55,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_X:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("G28 X0"));
@@ -66,8 +62,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_Y:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("G28 Y0"));
@@ -75,8 +69,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_Z:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("G28 Z0"));
@@ -84,8 +76,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_OFF_ALL:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("M84"));
@@ -93,8 +83,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_OFF_XY:
if (event == LV_EVENT_CLICKED) {
-
-
}
else if (event == LV_EVENT_RELEASED) {
queue.inject_P(PSTR("M84 X Y"));
@@ -102,7 +90,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
break;
case ID_H_RETURN:
if (event == LV_EVENT_CLICKED) {
-
}
else if (event == LV_EVENT_RELEASED) {
lv_obj_del(scr);
@@ -113,7 +100,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
-
void lv_draw_home(void) {
lv_obj_t *buttonHomeAll, *buttonHomeX, *buttonHomeY, *buttonHomeZ;
lv_obj_t *buttonBack;
@@ -134,7 +120,7 @@ void lv_draw_home(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -156,67 +142,68 @@ void lv_draw_home(void) {
//lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
#if 1
- lv_obj_set_event_cb_mks(buttonHomeAll, event_handler, ID_H_ALL, "bmp_Zero.bin", 0);
+ lv_obj_set_event_cb_mks(buttonHomeAll, event_handler,ID_H_ALL,"bmp_zero.bin",0);
lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonHomeX, event_handler, ID_H_X, "bmp_zeroX.bin", 0);
lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonHomeY, event_handler, ID_H_Y, "bmp_zeroY.bin", 0);
lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonHomeZ, event_handler, ID_H_Z, "bmp_zeroZ.bin", 0);
lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonOffAll, event_handler, ID_H_OFF_ALL, "bmp_manual_off.bin", 0);
+ lv_obj_set_event_cb_mks(buttonOffAll, event_handler,ID_H_OFF_ALL,"bmp_function1.bin",0);
lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonOffXY, event_handler, ID_H_OFF_XY, "bmp_manual_off.bin", 0);
+ lv_obj_set_event_cb_mks(buttonOffXY, event_handler,ID_H_OFF_XY,"bmp_function1.bin",0);
lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_H_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler,ID_H_RETURN,"bmp_return.bin",0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
- /*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
- lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight);
- lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight);
- lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
- lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
-
- //lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
+
+ /*lv_obj_set_pos(buttonWifi, INTERVAL_V, titleHeight);
+ lv_obj_set_pos(buttonFan, BTN_X_PIXEL+INTERVAL_V*2, titleHeight);
+ lv_obj_set_pos(buttonAbout, BTN_X_PIXEL*2+INTERVAL_V*3, titleHeight);
+ lv_obj_set_pos(buttonContinue, BTN_X_PIXEL*3+INTERVAL_V*4, titleHeight);
+ lv_obj_set_pos(buMotorOff, INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+ lv_obj_set_pos(buttonLanguage, BTN_X_PIXEL+INTERVAL_V*2, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
+
+ //lv_obj_set_pos(buttonWifi, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonHomeX, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
lv_obj_set_pos(buttonHomeY, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
//lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
@@ -280,4 +267,4 @@ void lv_draw_home(void) {
void lv_clear_home() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp
new file mode 100644
index 000000000000..a552762cf3eb
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp
@@ -0,0 +1,263 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_CLASSIC_JERK)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_JERK_RETURN 1
+#define ID_JERK_X 2
+#define ID_JERK_Y 3
+#define ID_JERK_Z 4
+#define ID_JERK_E 5
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_JERK_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_jerk_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_JERK_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = XJerk;
+ lv_clear_jerk_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_JERK_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = YJerk;
+ lv_clear_jerk_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_JERK_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = ZJerk;
+ lv_clear_jerk_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_JERK_E:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = EJerk;
+ lv_clear_jerk_settings();
+ lv_draw_number_key();
+ }
+ break;
+ }
+}
+
+void lv_draw_jerk_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+ lv_obj_t *buttonEText = NULL, *labelEText = NULL, *buttonEValue = NULL, *labelEValue = NULL;
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != JERK_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = JERK_UI;
+ }
+ disp_state = JERK_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.JerkConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_JERK_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_JERK_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_JERK_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonEText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonEText, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonEText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonEText, event_handler);
+ lv_btn_set_style(buttonEText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonEText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonEText, LV_LAYOUT_OFF);
+ labelEText = lv_label_create(buttonEText, NULL); /*Add a label to the button*/
+
+ buttonEValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonEValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonEValue, event_handler, ID_JERK_E, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonEValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonEValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonEValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonEValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonEValue, LV_LAYOUT_OFF);
+ labelEValue = lv_label_create(buttonEValue, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_JERK_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[X_AXIS]);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[Y_AXIS]);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[Z_AXIS]);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[E_AXIS]);
+ lv_label_set_text(labelEValue, public_buf_l);
+ lv_obj_align(labelEValue, buttonEValue, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelXText, machine_menu.X_Jerk);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.Y_Jerk);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.Z_Jerk);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelEText, machine_menu.E_Jerk);
+ lv_obj_align(labelEText, buttonEText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_jerk_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_CLASSIC_JERK
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h
new file mode 100644
index 000000000000..5badcde52932
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_jerk_settings(void);
+extern void lv_clear_jerk_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
index 75fbb4d91f9f..65d0961248ed 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -35,17 +35,17 @@
//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
-#define ID_CN 1
-#define ID_T_CN 2
-#define ID_EN 3
-#define ID_RU 4
-#define ID_ES 5
-#define ID_FR 6
-#define ID_IT 7
-#define ID_L_RETURN 8
+#define ID_CN 1
+#define ID_T_CN 2
+#define ID_EN 3
+#define ID_RU 4
+#define ID_ES 5
+#define ID_FR 6
+#define ID_IT 7
+#define ID_L_RETURN 8
-#define SELECTED 1
-#define UNSELECTED 0
+#define SELECTED 1
+#define UNSELECTED 0
static void disp_language(uint8_t language, uint8_t state);
@@ -85,7 +85,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
disp_language(gCfgItems.language, UNSELECTED);
- lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English_sel.bin", 0);
+ lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_english_sel.bin", 0);
gCfgItems.language = LANG_ENGLISH;
gCfg_to_spiFlah();
disp_language_init();
@@ -97,7 +97,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
disp_language(gCfgItems.language, UNSELECTED);
- lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian_sel.bin", 0);
+ lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_russian_sel.bin", 0);
gCfgItems.language = LANG_RUSSIAN;
gCfg_to_spiFlah();
disp_language_init();
@@ -109,7 +109,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
disp_language(gCfgItems.language, UNSELECTED);
- lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish_sel.bin", 0);
+ lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_spanish_sel.bin", 0);
gCfgItems.language = LANG_SPANISH;
gCfg_to_spiFlah();
disp_language_init();
@@ -121,7 +121,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
disp_language(gCfgItems.language, UNSELECTED);
- lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French_sel.bin", 0);
+ lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_french_sel.bin", 0);
gCfgItems.language = LANG_FRENCH;
gCfg_to_spiFlah();
disp_language_init();
@@ -133,7 +133,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
disp_language(gCfgItems.language, UNSELECTED);
- lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_FR, "bmp_Italy_sel.bin", 0);
+ lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_FR, "bmp_italy_sel.bin", 0);
gCfgItems.language = LANG_ITALY;
gCfg_to_spiFlah();
disp_language_init();
@@ -145,14 +145,14 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
- buttonCN = NULL;
+ buttonCN = NULL;
buttonT_CN = NULL;
- buttonEN = NULL;
- buttonRU = NULL;
- buttonES = NULL;
- buttonFR = NULL;
- buttonFR = NULL;
- buttonIT = NULL;
+ buttonEN = NULL;
+ buttonRU = NULL;
+ buttonES = NULL;
+ buttonFR = NULL;
+ buttonFR = NULL;
+ buttonIT = NULL;
buttonBack = NULL;
lv_obj_del(scr);
@@ -170,52 +170,51 @@ static void disp_language(uint8_t language, uint8_t state) {
public_buf_l[0] = '\0';
switch (language) {
-
case LANG_SIMPLE_CHINESE:
id = ID_CN;
- strcat(public_buf_l, "bmp_Simple_cn");
+ strcpy_P(public_buf_l, PSTR("bmp_simplified_cn"));
obj = buttonCN;
-
break;
case LANG_COMPLEX_CHINESE:
id = ID_T_CN;
- strcat(public_buf_l, "bmp_Tradition_cn");
+ strcpy_P(public_buf_l, PSTR("bmp_traditional_cn"));
obj = buttonT_CN;
break;
case LANG_ENGLISH:
id = ID_EN;
- strcat(public_buf_l, "bmp_English");
+ strcpy_P(public_buf_l, PSTR("bmp_english"));
obj = buttonEN;
break;
case LANG_RUSSIAN:
id = ID_RU;
- strcat(public_buf_l, "bmp_Russian");
+ strcpy_P(public_buf_l, PSTR("bmp_russian"));
obj = buttonRU;
break;
case LANG_SPANISH:
id = ID_ES;
- strcat(public_buf_l, "bmp_Spanish");
+ strcpy_P(public_buf_l, PSTR("bmp_spanish"));
obj = buttonES;
break;
case LANG_FRENCH:
id = ID_FR;
- strcat(public_buf_l, "bmp_French");
+ strcpy_P(public_buf_l, PSTR("bmp_french"));
obj = buttonFR;
break;
case LANG_ITALY:
id = ID_IT;
- strcat(public_buf_l, "bmp_Italy");
+ strcpy_P(public_buf_l, PSTR("bmp_italy"));
obj = buttonIT;
break;
default:
id = ID_CN;
- strcat(public_buf_l, "bmp_Simple_cn");
+ strcpy_P(public_buf_l, PSTR("bmp_simplified_cn"));
obj = buttonCN;
break;
}
- if (state == SELECTED) strcat(public_buf_l, "_sel.bin");
- else strcat(public_buf_l, ".bin");
+ if (state == SELECTED) strcat_P(public_buf_l, PSTR("_sel"));
+
+ strcat_P(public_buf_l, PSTR(".bin"));
lv_obj_set_event_cb_mks(obj, event_handler, id, public_buf_l, 0);
@@ -232,14 +231,14 @@ void lv_draw_language(void) {
scr = lv_obj_create(NULL, NULL);
- //static lv_style_t tool_style;
+ // static lv_style_t tool_style;
lv_obj_set_style(scr, &tft_style_scr);
lv_scr_load(scr);
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -248,74 +247,73 @@ void lv_draw_language(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonCN = lv_imgbtn_create(scr, NULL);
+ buttonCN = lv_imgbtn_create(scr, NULL);
buttonT_CN = lv_imgbtn_create(scr, NULL);
- buttonEN = lv_imgbtn_create(scr, NULL);
- buttonRU = lv_imgbtn_create(scr, NULL);
- buttonES = lv_imgbtn_create(scr, NULL);
- buttonFR = lv_imgbtn_create(scr, NULL);
- buttonIT = lv_imgbtn_create(scr, NULL);
+ buttonEN = lv_imgbtn_create(scr, NULL);
+ buttonRU = lv_imgbtn_create(scr, NULL);
+ buttonES = lv_imgbtn_create(scr, NULL);
+ buttonFR = lv_imgbtn_create(scr, NULL);
+ buttonIT = lv_imgbtn_create(scr, NULL);
buttonBack = lv_imgbtn_create(scr, NULL);
-
lv_obj_set_event_cb_mks(buttonCN, event_handler, ID_CN, "bmp_simplified_cn.bin", 0);
lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonCN, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonT_CN, event_handler, ID_T_CN, "bmp_traditional_cn.bin", 0);
lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English.bin", 0);
+ lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_english.bin", 0);
lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian.bin", 0);
+ lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_russian.bin", 0);
lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish.bin", 0);
+ lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_spanish.bin", 0);
lv_imgbtn_set_src(buttonES, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonES, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonES, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonES, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonES, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonES, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French.bin", 0);
+ lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_french.bin", 0);
lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_IT, "bmp_Italy.bin", 0);
+ lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_IT, "bmp_italy.bin", 0);
lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_L_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_L_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
lv_obj_set_pos(buttonCN, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonT_CN, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
lv_obj_set_pos(buttonEN, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
lv_obj_set_pos(buttonRU, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttonES, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonES, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonFR, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonIT, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonIT, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonCN, LV_LAYOUT_OFF);
@@ -327,13 +325,13 @@ void lv_draw_language(void) {
lv_btn_set_layout(buttonIT, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
- lv_obj_t * label_CN = lv_label_create(buttonCN, NULL);
+ lv_obj_t * label_CN = lv_label_create(buttonCN, NULL);
lv_obj_t * label_T_CN = lv_label_create(buttonT_CN, NULL);
- lv_obj_t * label_EN = lv_label_create(buttonEN, NULL);
- lv_obj_t * label_RU = lv_label_create(buttonRU, NULL);
- lv_obj_t * label_ES = lv_label_create(buttonES, NULL);
- lv_obj_t * label_FR = lv_label_create(buttonFR, NULL);
- lv_obj_t * label_IT = lv_label_create(buttonIT, NULL);
+ lv_obj_t * label_EN = lv_label_create(buttonEN, NULL);
+ lv_obj_t * label_RU = lv_label_create(buttonRU, NULL);
+ lv_obj_t * label_ES = lv_label_create(buttonES, NULL);
+ lv_obj_t * label_FR = lv_label_create(buttonFR, NULL);
+ lv_obj_t * label_IT = lv_label_create(buttonIT, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
disp_language(gCfgItems.language, SELECTED);
@@ -367,4 +365,4 @@ void lv_draw_language(void) {
void lv_clear_language() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp
new file mode 100644
index 000000000000..d441f2ac51b8
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp
@@ -0,0 +1,232 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_PARA_RETURN 1
+#define ID_PARA_MACHINE 2
+#define ID_PARA_MACHINE_ARROW 3
+#define ID_PARA_MOTOR 4
+#define ID_PARA_MOTOR_ARROW 5
+#define ID_PARA_ADVANCE 6
+#define ID_PARA_ADVANCE_ARROW 7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_PARA_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ draw_return_ui();
+ }
+ break;
+ case ID_PARA_MACHINE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_machine_settings();
+ }
+ break;
+ case ID_PARA_MACHINE_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_machine_settings();
+ }
+ break;
+ case ID_PARA_MOTOR:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_motor_settings();
+ }
+ break;
+ case ID_PARA_MOTOR_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_motor_settings();
+ }
+ break;
+ case ID_PARA_ADVANCE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_advance_settings();
+ }
+ break;
+ case ID_PARA_ADVANCE_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_para();
+ lv_draw_advance_settings();
+ }
+ break;
+ }
+}
+
+void lv_draw_machine_para(void) {
+ lv_obj_t *buttonBack, *label_Back;
+ lv_obj_t *buttonMachine, *labelMachine, *buttonMachineNarrow;
+ lv_obj_t *buttonMotor, *labelMotor, *buttonMotorNarrow;
+ lv_obj_t *buttonAdvance, *labelAdvance, *buttonAdvanceNarrow;
+ lv_obj_t * line1, * line2, * line3;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MACHINE_PARA_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = MACHINE_PARA_UI;
+ }
+ disp_state = MACHINE_PARA_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, creat_title_text());
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_arrow);
+
+ buttonMachine = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonMachine, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonMachine, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonMachine, event_handler, ID_PARA_MACHINE, NULL, 0);
+ lv_btn_set_style(buttonMachine, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonMachine, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonMachine, LV_LAYOUT_OFF);
+ labelMachine = lv_label_create(buttonMachine, NULL); /*Add a label to the button*/
+
+ buttonMachineNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonMachineNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonMachineNarrow, event_handler, ID_PARA_MACHINE_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonMachineNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonMachineNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonMachineNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMachineNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonMachineNarrow, LV_LAYOUT_OFF);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonMotor = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonMotor, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonMotor, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMotor, event_handler);
+ lv_obj_set_event_cb_mks(buttonMotor, event_handler, ID_PARA_MOTOR, NULL, 0);
+ lv_btn_set_style(buttonMotor, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonMotor, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonMotor, LV_LAYOUT_OFF);
+ labelMotor = lv_label_create(buttonMotor, NULL); /*Add a label to the button*/
+
+ buttonMotorNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonMotorNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonMotorNarrow, event_handler, ID_PARA_MOTOR_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonMotorNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonMotorNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonMotorNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMotorNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonMotorNarrow, LV_LAYOUT_OFF);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonAdvance = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonAdvance, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonAdvance, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMotor, event_handler);
+ lv_obj_set_event_cb_mks(buttonAdvance, event_handler, ID_PARA_ADVANCE, NULL, 0);
+ lv_btn_set_style(buttonAdvance, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonAdvance, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonAdvance, LV_LAYOUT_OFF);
+ labelAdvance = lv_label_create(buttonAdvance, NULL); /*Add a label to the button*/
+
+ buttonAdvanceNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonAdvanceNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonAdvanceNarrow, event_handler, ID_PARA_ADVANCE_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonAdvanceNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonAdvanceNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonAdvanceNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAdvanceNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonAdvanceNarrow, LV_LAYOUT_OFF);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_PARA_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelMachine, MachinePara_menu.MachineSetting);
+ lv_obj_align(labelMachine, buttonMachine, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelMotor, MachinePara_menu.MotorSetting);
+ lv_obj_align(labelMotor, buttonMotor, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelAdvance, MachinePara_menu.AdvanceSetting);
+ lv_obj_align(labelAdvance, buttonAdvance, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ }
+
+}
+
+void lv_clear_machine_para() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h
new file mode 100644
index 000000000000..d75df293b11c
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_machine_para(void);
+extern void lv_clear_machine_para();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp
new file mode 100644
index 000000000000..88a66c6599e1
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp
@@ -0,0 +1,241 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_MACHINE_RETURN 1
+#define ID_MACHINE_ACCELERATION 2
+#define ID_MACHINE_ACCELERATION_ARROW 3
+#define ID_MACHINE_FEEDRATE 4
+#define ID_MACHINE_FEEDRATE_ARROW 5
+#define ID_MACHINE_JERK 6
+#define ID_MACHINE_JERK_ARROW 7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_MACHINE_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_MACHINE_ACCELERATION:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_acceleration_settings();
+ }
+ break;
+ case ID_MACHINE_ACCELERATION_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_acceleration_settings();
+ }
+ break;
+ case ID_MACHINE_FEEDRATE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_max_feedrate_settings();
+ }
+ break;
+ case ID_MACHINE_FEEDRATE_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_max_feedrate_settings();
+ }
+ break;
+ #if HAS_CLASSIC_JERK
+ case ID_MACHINE_JERK:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_jerk_settings();
+ }
+ break;
+ case ID_MACHINE_JERK_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_machine_settings();
+ lv_draw_jerk_settings();
+ }
+ break;
+ #endif
+ }
+}
+
+void lv_draw_machine_settings(void) {
+ lv_obj_t *buttonBack, *label_Back;
+ lv_obj_t *buttonAcceleration, *labelAcceleration, *buttonAccelerationNarrow;
+ lv_obj_t *buttonMaxFeedrate, *labelMaxFeedrate, *buttonMaxFeedrateNarrow;
+ #if HAS_CLASSIC_JERK
+ lv_obj_t *buttonJerk, *labelJerk, *buttonJerkNarrow;
+ #endif
+ lv_obj_t * line1, * line2;
+ #if HAS_CLASSIC_JERK
+ lv_obj_t * line3;
+ #endif
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MACHINE_SETTINGS_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = MACHINE_SETTINGS_UI;
+ }
+ disp_state = MACHINE_SETTINGS_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.MachineConfigTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_arrow);
+
+ buttonAcceleration = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonAcceleration, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonAcceleration, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonAcceleration, event_handler, ID_MACHINE_ACCELERATION, NULL, 0);
+ lv_btn_set_style(buttonAcceleration, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonAcceleration, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonAcceleration, LV_LAYOUT_OFF);
+ labelAcceleration = lv_label_create(buttonAcceleration, NULL); /*Add a label to the button*/
+
+ buttonAccelerationNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonAccelerationNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonAccelerationNarrow, event_handler, ID_MACHINE_ACCELERATION_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonAccelerationNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonAccelerationNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonAccelerationNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAccelerationNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonAccelerationNarrow, LV_LAYOUT_OFF);
+
+ line1 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonMaxFeedrate = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonMaxFeedrate, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonMaxFeedrate, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonMaxFeedrate, event_handler, ID_MACHINE_FEEDRATE, NULL, 0);
+ lv_btn_set_style(buttonMaxFeedrate, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonMaxFeedrate, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonMaxFeedrate, LV_LAYOUT_OFF);
+ labelMaxFeedrate = lv_label_create(buttonMaxFeedrate, NULL); /*Add a label to the button*/
+
+ buttonMaxFeedrateNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonMaxFeedrateNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonMaxFeedrateNarrow, event_handler, ID_MACHINE_FEEDRATE_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonMaxFeedrateNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonMaxFeedrateNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonMaxFeedrateNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMaxFeedrateNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonMaxFeedrateNarrow, LV_LAYOUT_OFF);
+
+ line2 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ #if HAS_CLASSIC_JERK
+ buttonJerk = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonJerk, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonJerk, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMotor, event_handler);
+ lv_obj_set_event_cb_mks(buttonJerk, event_handler, ID_MACHINE_JERK, NULL, 0);
+ lv_btn_set_style(buttonJerk, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonJerk, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonJerk, LV_LAYOUT_OFF);
+ labelJerk = lv_label_create(buttonJerk, NULL); /*Add a label to the button*/
+
+ buttonJerkNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonJerkNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonJerkNarrow, event_handler, ID_MACHINE_JERK_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonJerkNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonJerkNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonJerkNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonJerkNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonJerkNarrow, LV_LAYOUT_OFF);
+
+ line3 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line3, line_points[2]);
+ #endif
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MACHINE_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelAcceleration, machine_menu.AccelerationConf);
+ lv_obj_align(labelAcceleration, buttonAcceleration, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelMaxFeedrate, machine_menu.MaxFeedRateConf);
+ lv_obj_align(labelMaxFeedrate, buttonMaxFeedrate, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #if HAS_CLASSIC_JERK
+ lv_label_set_text(labelJerk, machine_menu.JerkConf);
+ lv_obj_align(labelJerk, buttonJerk, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #endif
+ }
+}
+
+void lv_clear_machine_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h
new file mode 100644
index 000000000000..37029c85c43c
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_machine_settings(void);
+extern void lv_clear_machine_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
index 3a28ebde62d4..ab4d9eb881ee 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "lv_conf.h"
@@ -35,13 +35,12 @@
//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
static lv_obj_t * scr;
-#define ID_M_POINT1 1
-#define ID_M_POINT2 2
-#define ID_M_POINT3 3
-#define ID_M_POINT4 4
-#define ID_M_POINT5 5
-
-#define ID_MANUAL_RETURN 6
+#define ID_M_POINT1 1
+#define ID_M_POINT2 2
+#define ID_M_POINT3 3
+#define ID_M_POINT4 4
+#define ID_M_POINT5 5
+#define ID_MANUAL_RETURN 6
static void event_handler(lv_obj_t * obj, lv_event_t event) {
switch (obj->mks_obj_id) {
@@ -53,16 +52,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
if (queue.length == 0) {
if (uiCfg.leveling_first_time) {
- queue.enqueue_one_P(PSTR("G28"));
+ queue.enqueue_now_P(PSTR("G28"));
uiCfg.leveling_first_time = 0;
}
- queue.enqueue_one_P(PSTR("G1 Z10"));
+ queue.enqueue_now_P(PSTR("G1 Z10"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MIN_POS + 30);
- queue.enqueue_one_P(PSTR(public_buf_l));
- queue.enqueue_one_P(PSTR("G1 Z0"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MIN_POS + 30, Y_MIN_POS + 30);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G1 Z0"));
}
}
break;
@@ -73,16 +72,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (queue.length == 0) {
if (uiCfg.leveling_first_time) {
- queue.enqueue_one_P(PSTR("G28"));
+ queue.enqueue_now_P(PSTR("G28"));
uiCfg.leveling_first_time = 0;
}
- queue.enqueue_one_P(PSTR("G1 Z10"));
+ queue.enqueue_now_P(PSTR("G1 Z10"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MIN_POS + 30);
- queue.enqueue_one_P(PSTR(public_buf_l));
- queue.enqueue_one_P(PSTR("G1 Z0"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MAX_POS - 30, Y_MIN_POS + 30);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G1 Z0"));
}
}
break;
@@ -93,16 +92,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (queue.length == 0) {
if (uiCfg.leveling_first_time) {
- queue.enqueue_one_P(PSTR("G28"));
+ queue.enqueue_now_P(PSTR("G28"));
uiCfg.leveling_first_time = 0;
}
- queue.enqueue_one_P(PSTR("G1 Z10"));
+ queue.enqueue_now_P(PSTR("G1 Z10"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MAX_POS - 30);
- queue.enqueue_one_P(PSTR(public_buf_l));
- queue.enqueue_one_P(PSTR("G1 Z0"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MAX_POS - 30, Y_MAX_POS - 30);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G1 Z0"));
}
}
@@ -114,16 +113,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (queue.length == 0) {
if (uiCfg.leveling_first_time) {
- queue.enqueue_one_P(PSTR("G28"));
+ queue.enqueue_now_P(PSTR("G28"));
uiCfg.leveling_first_time = 0;
}
- queue.enqueue_one_P(PSTR("G1 Z10"));
+ queue.enqueue_now_P(PSTR("G1 Z10"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MAX_POS - 30);
- queue.enqueue_one_P(PSTR(public_buf_l));
- queue.enqueue_one_P(PSTR("G1 Z0"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MIN_POS + 30, Y_MAX_POS - 30);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G1 Z0"));
}
}
break;
@@ -134,16 +133,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (queue.length == 0) {
if (uiCfg.leveling_first_time) {
- queue.enqueue_one_P(PSTR("G28"));
+ queue.enqueue_now_P(PSTR("G28"));
uiCfg.leveling_first_time = 0;
}
- queue.enqueue_one_P(PSTR("G1 Z10"));
+ queue.enqueue_now_P(PSTR("G1 Z10"));
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "G1 X%d Y%d", X_BED_SIZE / 2, Y_BED_SIZE / 2);
- queue.enqueue_one_P(PSTR(public_buf_l));
- queue.enqueue_one_P(PSTR("G1 Z0"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_BED_SIZE / 2, Y_BED_SIZE / 2);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G1 Z0"));
}
}
@@ -157,7 +156,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
lv_draw_tool();
}
break;
-
}
}
@@ -174,14 +172,14 @@ void lv_draw_manualLevel(void) {
scr = lv_obj_create(NULL, NULL);
- //static lv_style_t tool_style;
+ // static lv_style_t tool_style;
lv_obj_set_style(scr, &tft_style_scr);
lv_scr_load(scr);
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -195,52 +193,52 @@ void lv_draw_manualLevel(void) {
buttonPoint3 = lv_imgbtn_create(scr, NULL);
buttonPoint4 = lv_imgbtn_create(scr, NULL);
buttonPoint5 = lv_imgbtn_create(scr, NULL);
- buttonBack = lv_imgbtn_create(scr, NULL);
+ buttonBack = lv_imgbtn_create(scr, NULL);
- lv_obj_set_event_cb_mks(buttonPoint1, event_handler, ID_M_POINT1, "bmp_Leveling1.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPoint1, event_handler, ID_M_POINT1, "bmp_leveling1.bin", 0);
lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonPoint1, LV_PROTECT_FOLLOW);
#if 1
- lv_obj_set_event_cb_mks(buttonPoint2, event_handler, ID_M_POINT2, "bmp_Leveling2.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPoint2, event_handler, ID_M_POINT2, "bmp_leveling2.bin", 0);
lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonPoint3, event_handler, ID_M_POINT3, "bmp_Leveling3.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPoint3, event_handler, ID_M_POINT3, "bmp_leveling3.bin", 0);
lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonPoint4, event_handler, ID_M_POINT4, "bmp_Leveling4.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPoint4, event_handler, ID_M_POINT4, "bmp_leveling4.bin", 0);
lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonPoint5, event_handler, ID_M_POINT5, "bmp_Leveling5.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPoint5, event_handler, ID_M_POINT5, "bmp_leveling5.bin", 0);
lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MANUAL_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MANUAL_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonPoint1, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonPoint2, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
lv_obj_set_pos(buttonPoint3, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
lv_obj_set_pos(buttonPoint4, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttonPoint5, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonPoint5, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonPoint1, LV_LAYOUT_OFF);
@@ -255,8 +253,7 @@ void lv_draw_manualLevel(void) {
lv_obj_t * label_Point3 = lv_label_create(buttonPoint3, NULL);
lv_obj_t * label_Point4 = lv_label_create(buttonPoint4, NULL);
lv_obj_t * label_Point5 = lv_label_create(buttonPoint5, NULL);
- lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
-
+ lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(label_Point1, leveling_menu.position1);
@@ -281,4 +278,4 @@ void lv_draw_manualLevel(void) {
void lv_clear_manualLevel() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp
new file mode 100644
index 000000000000..c78c6f5bb8d4
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp
@@ -0,0 +1,359 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_FEED_RETURN 1
+#define ID_FEED_X 2
+#define ID_FEED_Y 3
+#define ID_FEED_Z 4
+#define ID_FEED_E0 5
+#define ID_FEED_E1 6
+#define ID_FEED_DOWN 7
+#define ID_FEED_UP 8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_FEED_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_max_feedrate_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_FEED_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = XMaxFeedRate;
+ lv_clear_max_feedrate_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_FEED_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = YMaxFeedRate;
+ lv_clear_max_feedrate_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_FEED_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = ZMaxFeedRate;
+ lv_clear_max_feedrate_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_FEED_E0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E0MaxFeedRate;
+ lv_clear_max_feedrate_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_FEED_E1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E1MaxFeedRate;
+ lv_clear_max_feedrate_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_FEED_UP:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_max_feedrate_settings();
+ lv_draw_max_feedrate_settings();
+ }
+ break;
+ case ID_FEED_DOWN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 1;
+ lv_clear_max_feedrate_settings();
+ lv_draw_max_feedrate_settings();
+ }
+ break;
+ }
+}
+
+void lv_draw_max_feedrate_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+ lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+ lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MAXFEEDRATE_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = MAXFEEDRATE_UI;
+ }
+ disp_state = MAXFEEDRATE_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.MaxFeedRateConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ if (uiCfg.para_ui_page != 1) {
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_FEED_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_FEED_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_FEED_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonE0Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE0Text, event_handler);
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+ labelE0Text = lv_label_create(buttonE0Text, NULL); /*Add a label to the button*/
+
+ buttonE0Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_FEED_E0, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+ labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_FEED_DOWN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+ else {
+ buttonE1Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE1Text, event_handler);
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+ labelE1Text = lv_label_create(buttonE1Text, NULL); /*Add a label to the button*/
+
+ buttonE1Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_FEED_E1, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+ labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_FEED_UP, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+
+ lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+ lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+ labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_FEED_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ if (uiCfg.para_ui_page != 1) {
+ lv_label_set_text(labelXText, machine_menu.XMaxFeedRate);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.YMaxFeedRate);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.ZMaxFeedRate);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE0Text, machine_menu.E0MaxFeedRate);
+ lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.next);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[X_AXIS]);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Y_AXIS]);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Z_AXIS]);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS]);
+ lv_label_set_text(labelE0Value, public_buf_l);
+ lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+ }
+ else {
+ lv_label_set_text(labelE1Text, machine_menu.E1MaxFeedRate);
+ lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.previous);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS_N(1)]);
+ lv_label_set_text(labelE1Value, public_buf_l);
+ lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+ }
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_max_feedrate_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h
new file mode 100644
index 000000000000..24edae27e415
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_max_feedrate_settings(void);
+extern void lv_clear_max_feedrate_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp
new file mode 100644
index 000000000000..7da477bd51f3
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp
@@ -0,0 +1,247 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_MOTOR_RETURN 1
+#define ID_MOTOR_STEPS 2
+#define ID_MOTOR_STEPS_ARROW 3
+#define ID_MOTOR_TMC_CURRENT 4
+#define ID_MOTOR_TMC_CURRENT_ARROW 5
+#define ID_MOTOR_STEP_MODE 6
+#define ID_MOTOR_STEP_MODE_ARROW 7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_MOTOR_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_MOTOR_STEPS:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_step_settings();
+ }
+ break;
+ case ID_MOTOR_STEPS_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_step_settings();
+ }
+ break;
+ #if HAS_TRINAMIC_CONFIG
+ case ID_MOTOR_TMC_CURRENT:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_tmc_current_settings();
+ }
+ break;
+ case ID_MOTOR_TMC_CURRENT_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_tmc_current_settings();
+ }
+ break;
+ #if HAS_STEALTHCHOP
+ case ID_MOTOR_STEP_MODE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_tmc_step_mode_settings();
+ }
+ break;
+ case ID_MOTOR_STEP_MODE_ARROW:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_motor_settings();
+ lv_draw_tmc_step_mode_settings();
+ }
+ break;
+ #endif
+ #endif
+ }
+}
+
+void lv_draw_motor_settings(void) {
+ lv_obj_t *buttonBack, *label_Back;
+ lv_obj_t *buttonSteps, *labelSteps, *buttonStepsNarrow;
+ #if HAS_TRINAMIC_CONFIG
+ lv_obj_t *buttonTMCcurrent, *labelTMCcurrent, *buttonTMCcurrentNarrow;
+ lv_obj_t * line2;
+ #if HAS_STEALTHCHOP
+ lv_obj_t *buttonStepMode, *labelStepMode, *buttonStepModeNarrow;
+ lv_obj_t * line3;
+ #endif
+ #endif
+ lv_obj_t * line1;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MOTOR_SETTINGS_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = MOTOR_SETTINGS_UI;
+ }
+ disp_state = MOTOR_SETTINGS_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.MotorConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_arrow);
+
+ buttonSteps = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonSteps, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonSteps, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonSteps, event_handler, ID_MOTOR_STEPS, NULL, 0);
+ lv_btn_set_style(buttonSteps, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonSteps, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonSteps, LV_LAYOUT_OFF);
+ labelSteps = lv_label_create(buttonSteps, NULL); /*Add a label to the button*/
+
+ buttonStepsNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonStepsNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonStepsNarrow, event_handler, ID_MOTOR_STEPS_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonStepsNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonStepsNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonStepsNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStepsNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonStepsNarrow, LV_LAYOUT_OFF);
+
+ line1 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line1, line_points[0]);
+ #if HAS_TRINAMIC_CONFIG
+ buttonTMCcurrent = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonTMCcurrent, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonTMCcurrent, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonTMCcurrent, event_handler, ID_MOTOR_TMC_CURRENT, NULL, 0);
+ lv_btn_set_style(buttonTMCcurrent, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonTMCcurrent, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonTMCcurrent, LV_LAYOUT_OFF);
+ labelTMCcurrent = lv_label_create(buttonTMCcurrent, NULL); /*Add a label to the button*/
+
+ buttonTMCcurrentNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonTMCcurrentNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonTMCcurrentNarrow, event_handler, ID_MOTOR_TMC_CURRENT_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonTMCcurrentNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonTMCcurrentNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonTMCcurrentNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTMCcurrentNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonTMCcurrentNarrow, LV_LAYOUT_OFF);
+
+ line2 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ #if HAS_STEALTHCHOP
+ buttonStepMode = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonStepMode, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonStepMode, PARA_UI_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ //lv_obj_set_event_cb(buttonMachine, event_handler);
+ lv_obj_set_event_cb_mks(buttonStepMode, event_handler, ID_MOTOR_STEP_MODE, NULL, 0);
+ lv_btn_set_style(buttonStepMode, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonStepMode, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonStepMode, LV_LAYOUT_OFF);
+ labelStepMode = lv_label_create(buttonStepMode, NULL); /*Add a label to the button*/
+
+ buttonStepModeNarrow = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonStepModeNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+ lv_obj_set_event_cb_mks(buttonStepModeNarrow, event_handler, ID_MOTOR_STEP_MODE_ARROW, "bmp_arrow.bin", 0);
+ lv_imgbtn_set_src(buttonStepModeNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+ lv_imgbtn_set_src(buttonStepModeNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+ lv_imgbtn_set_style(buttonStepModeNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStepModeNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonStepModeNarrow, LV_LAYOUT_OFF);
+
+ line3 = lv_line_create(lv_scr_act(), NULL);
+ lv_ex_line(line3, line_points[2]);
+ #endif
+ #endif // HAS_TRINAMIC_CONFIG
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MOTOR_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelSteps, machine_menu.StepsConf);
+ lv_obj_align(labelSteps, buttonSteps, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #if HAS_TRINAMIC_CONFIG
+ lv_label_set_text(labelTMCcurrent, machine_menu.TMCcurrentConf);
+ lv_obj_align(labelTMCcurrent, buttonTMCcurrent, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #if HAS_STEALTHCHOP
+ lv_label_set_text(labelStepMode, machine_menu.TMCStepModeConf);
+ lv_obj_align(labelStepMode, buttonStepMode, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #endif
+ #endif
+ }
+
+}
+
+void lv_clear_motor_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h
new file mode 100644
index 000000000000..bae1918ad581
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_motor_settings(void);
+extern void lv_clear_motor_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
index 223ecf170338..e0d29467e616 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "lv_conf.h"
@@ -53,10 +53,10 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
queue.enqueue_one_P(PSTR("G91"));
- sprintf(public_buf_l, "G1 X%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_P(PSTR(public_buf_l));
+ sprintf_P(public_buf_l, PSTR("G1 X%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
queue.enqueue_one_P(PSTR("G90"));
}
}
@@ -67,11 +67,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- queue.enqueue_one_now(PSTR("G91"));
- sprintf(public_buf_l, "G1 X-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ ZERO(public_buf_l);
+ queue.enqueue_now_P(PSTR("G91"));
+ sprintf_P(public_buf_l, PSTR("G1 X-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
}
}
break;
@@ -81,11 +81,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- queue.enqueue_one_now(PSTR("G91"));
- sprintf(public_buf_l, "G1 Y%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ ZERO(public_buf_l);
+ queue.enqueue_now_P(PSTR("G91"));
+ sprintf_P(public_buf_l, PSTR("G1 Y%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
}
}
break;
@@ -95,11 +95,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- queue.enqueue_one_now(PSTR("G91"));
- sprintf(public_buf_l, "G1 Y-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ ZERO(public_buf_l);
+ queue.enqueue_now_P(PSTR("G91"));
+ sprintf_P(public_buf_l, PSTR("G1 Y-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
}
}
break;
@@ -109,11 +109,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- queue.enqueue_one_now(PSTR("G91"));
- sprintf(public_buf_l, "G1 Z%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ ZERO(public_buf_l);
+ queue.enqueue_now_P(PSTR("G91"));
+ sprintf_P(public_buf_l, PSTR("G1 Z%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
}
}
break;
@@ -123,11 +123,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (queue.length <= (BUFSIZE - 3)) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- queue.enqueue_one_now(PSTR("G91"));
- sprintf(public_buf_l, "G1 Z-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
- queue.enqueue_one_now(PSTR(public_buf_l));
- queue.enqueue_one_now(PSTR("G90"));
+ ZERO(public_buf_l);
+ queue.enqueue_now_P(PSTR("G91"));
+ sprintf_P(public_buf_l, PSTR("G1 Z-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+ queue.enqueue_one_now(public_buf_l);
+ queue.enqueue_now_P(PSTR("G90"));
}
}
break;
@@ -154,14 +154,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
draw_return_ui();
}
break;
-
}
}
-
void lv_draw_move_motor(void) {
- lv_obj_t *buttonXI, *buttonXD, *buttonYI, *buttonYD;
- lv_obj_t *buttonZI, *buttonZD, *buttonBack;
+ lv_obj_t *buttonXI, *buttonXD, *buttonYI, *buttonYD, *buttonZI, *buttonZD, *buttonBack;
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MOVE_MOTOR_UI) {
disp_state_stack._disp_index++;
@@ -176,7 +173,7 @@ void lv_draw_move_motor(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -184,74 +181,73 @@ void lv_draw_move_motor(void) {
LV_IMG_DECLARE(bmp_pic);
-
/*Create an Image button*/
- buttonXI = lv_imgbtn_create(scr, NULL);
- buttonXD = lv_imgbtn_create(scr, NULL);
- buttonYI = lv_imgbtn_create(scr, NULL);
- buttonYD = lv_imgbtn_create(scr, NULL);
- buttonZI = lv_imgbtn_create(scr, NULL);
- buttonZD = lv_imgbtn_create(scr, NULL);
- buttonV = lv_imgbtn_create(scr, NULL);
+ buttonXI = lv_imgbtn_create(scr, NULL);
+ buttonXD = lv_imgbtn_create(scr, NULL);
+ buttonYI = lv_imgbtn_create(scr, NULL);
+ buttonYD = lv_imgbtn_create(scr, NULL);
+ buttonZI = lv_imgbtn_create(scr, NULL);
+ buttonZD = lv_imgbtn_create(scr, NULL);
+ buttonV = lv_imgbtn_create(scr, NULL);
buttonBack = lv_imgbtn_create(scr, NULL);
lv_obj_set_event_cb_mks(buttonXI, event_handler, ID_M_X_P, "bmp_xAdd.bin", 0);
lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonXI, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonXD, event_handler, ID_M_X_N, "bmp_xDec.bin", 0);
lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonYI, event_handler, ID_M_Y_P, "bmp_yAdd.bin", 0);
lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonYD, event_handler, ID_M_Y_N, "bmp_yDec.bin", 0);
lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonZI, event_handler, ID_M_Z_P, "bmp_zAdd.bin", 0);
lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_set_event_cb_mks(buttonZD, event_handler, ID_M_Z_N, "bmp_zDec.bin", 0);
lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_set_event_cb_mks(buttonV, event_handler,ID_T_MORE,"bmp_More.bin",0);
lv_imgbtn_set_src(buttonV, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonV, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonV, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonV, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonV, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonV, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_M_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_M_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
lv_obj_set_pos(buttonXI, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonYI, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
lv_obj_set_pos(buttonZI, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
lv_obj_set_pos(buttonV, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttonXD, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonXD, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonYD, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonZD, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonZD, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonXI, LV_LAYOUT_OFF);
@@ -272,7 +268,6 @@ void lv_draw_move_motor(void) {
labelV = lv_label_create(buttonV, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
-
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelXI, move_menu.x_add);
lv_obj_align(labelXI, buttonXI, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -300,14 +295,14 @@ void lv_draw_move_motor(void) {
}
void disp_move_dist() {
- //char buf[30] = {0};
+ // char buf[30] = {0};
if ((int)(10 * uiCfg.move_dist) == 1)
- lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move0_1.bin", 0);
+ lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move0_1.bin", 0);
else if ((int)(10 * uiCfg.move_dist) == 10)
- lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move1.bin", 0);
+ lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move1.bin", 0);
else if ((int)(10 * uiCfg.move_dist) == 100)
- lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move10.bin", 0);
+ lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move10.bin", 0);
if (gCfgItems.multiple_language != 0) {
if ((int)(10 * uiCfg.move_dist) == 1) {
lv_label_set_text(labelV, move_menu.step_01mm);
@@ -326,4 +321,4 @@ void disp_move_dist() {
void lv_clear_move_motor() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp
new file mode 100644
index 000000000000..7a4e7257e203
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp
@@ -0,0 +1,799 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+//#include "../../lvgl/src/lv_objx/lv_imgbtn.h"
+//#include "../../lvgl/src/lv_objx/lv_img.h"
+//#include "../../lvgl/src/lv_core/lv_disp.h"
+//#include "../../lvgl/src/lv_core/lv_refr.h"
+//#include "../../MarlinCore.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/temperature.h"
+#include "../../../../gcode/queue.h"
+#if ENABLED(POWER_LOSS_RECOVERY)
+ #include "../../../../../feature/powerloss.h"
+#endif
+
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+#if HAS_TRINAMIC_CONFIG
+ #include "../../../../module/stepper/indirection.h"
+ #include "../../../../feature/tmc_util.h"
+#endif
+
+static lv_obj_t * scr;
+static lv_obj_t *buttonValue = NULL;
+static lv_obj_t *labelValue = NULL;
+
+static char key_value[11] = {0};
+static uint8_t cnt = 0;
+static char point_flg = 1;
+
+#define ID_NUM_KEY1 1
+#define ID_NUM_KEY2 2
+#define ID_NUM_KEY3 3
+#define ID_NUM_KEY4 4
+#define ID_NUM_KEY5 5
+#define ID_NUM_KEY6 6
+#define ID_NUM_KEY7 7
+#define ID_NUM_KEY8 8
+#define ID_NUM_KEY9 9
+#define ID_NUM_KEY0 10
+#define ID_NUM_BACK 11
+#define ID_NUM_RESET 12
+#define ID_NUM_CONFIRM 13
+#define ID_NUM_POINT 14
+#define ID_NUM_NAGETIVE 15
+
+static void disp_key_value() {
+ char *temp;
+ #if HAS_TRINAMIC_CONFIG
+ float milliamps;
+ #endif
+
+ switch (value) {
+ case PrintAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.acceleration);
+ break;
+ case RetractAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.retract_acceleration);
+ break;
+ case TravelAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.travel_acceleration);
+ break;
+ case XAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[X_AXIS]);
+ break;
+ case YAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Y_AXIS]);
+ break;
+ case ZAcceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Z_AXIS]);
+ break;
+ case E0Acceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS]);
+ break;
+ case E1Acceleration:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)]);
+ break;
+ case XMaxFeedRate:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[X_AXIS]);
+ break;
+ case YMaxFeedRate:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Y_AXIS]);
+ break;
+ case ZMaxFeedRate:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Z_AXIS]);
+ break;
+ case E0MaxFeedRate:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS]);
+ break;
+ case E1MaxFeedRate:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS_N(1)]);
+ break;
+
+ case XJerk:
+ #if HAS_CLASSIC_JERK
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[X_AXIS]);
+ #endif
+ break;
+ case YJerk:
+ #if HAS_CLASSIC_JERK
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[Y_AXIS]);
+ #endif
+ break;
+ case ZJerk:
+ #if HAS_CLASSIC_JERK
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[Z_AXIS]);
+ #endif
+ break;
+ case EJerk:
+ #if HAS_CLASSIC_JERK
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[E_AXIS]);
+ #endif
+ break;
+
+ case Xstep:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[X_AXIS]);
+
+ break;
+ case Ystep:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Y_AXIS]);
+
+ break;
+ case Zstep:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Z_AXIS]);
+
+ break;
+ case E0step:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS]);
+
+ break;
+ case E1step:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS_N(1)]);
+ break;
+
+ case Xcurrent:
+ #if AXIS_IS_TMC(X)
+ ZERO(public_buf_m);
+ milliamps = stepperX.getMilliamps();
+ sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+ #endif
+ break;
+
+ case Ycurrent:
+ #if AXIS_IS_TMC(Y)
+ ZERO(public_buf_m);
+ milliamps = stepperY.getMilliamps();
+ sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+ #endif
+ break;
+
+ case Zcurrent:
+ #if AXIS_IS_TMC(Z)
+ ZERO(public_buf_m);
+ milliamps = stepperZ.getMilliamps();
+ sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+ #endif
+ break;
+
+ case E0current:
+ #if AXIS_IS_TMC(E0)
+ ZERO(public_buf_m);
+ milliamps = stepperE0.getMilliamps();
+ sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+ #endif
+ break;
+
+ case E1current:
+ #if AXIS_IS_TMC(E1)
+ ZERO(public_buf_m);
+ milliamps = stepperE1.getMilliamps();
+ sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+ #endif
+ break;
+
+ case pause_pos_x:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosX);
+ break;
+ case pause_pos_y:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosY);
+ break;
+ case pause_pos_z:
+ ZERO(public_buf_m);
+ sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosZ);
+ break;
+ }
+ ZERO(key_value);
+ strcpy(key_value, public_buf_m);
+ cnt = strlen(key_value);
+ temp = strchr(key_value, '.');
+ if (temp)
+ point_flg = 0;
+ else
+ point_flg = 1;
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+
+}
+
+static void set_value_confirm() {
+ #if HAS_TRINAMIC_CONFIG
+ uint16_t current_mA;
+ #endif
+ switch (value) {
+ case PrintAcceleration:
+ planner.settings.acceleration = atof(key_value);
+
+ break;
+ case RetractAcceleration:
+ planner.settings.retract_acceleration = atof(key_value);
+
+ break;
+ case TravelAcceleration:
+ planner.settings.travel_acceleration = atof(key_value);
+
+ break;
+ case XAcceleration:
+ planner.settings.max_acceleration_mm_per_s2[X_AXIS] = atof(key_value);
+ break;
+ case YAcceleration:
+ planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = atof(key_value);
+ break;
+ case ZAcceleration:
+ planner.settings.max_acceleration_mm_per_s2[Z_AXIS] = atof(key_value);
+ break;
+ case E0Acceleration:
+ planner.settings.max_acceleration_mm_per_s2[E_AXIS] = atof(key_value);
+ break;
+ case E1Acceleration:
+ planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)] = atof(key_value);
+ break;
+ case XMaxFeedRate:
+ planner.settings.max_feedrate_mm_s[X_AXIS] = atof(key_value);
+ break;
+ case YMaxFeedRate:
+ planner.settings.max_feedrate_mm_s[Y_AXIS] = atof(key_value);
+ break;
+ case ZMaxFeedRate:
+ planner.settings.max_feedrate_mm_s[Z_AXIS] = atof(key_value);
+ break;
+ case E0MaxFeedRate:
+ planner.settings.max_feedrate_mm_s[E_AXIS] = atof(key_value);
+ break;
+ case E1MaxFeedRate:
+ planner.settings.max_feedrate_mm_s[E_AXIS_N(1)] = atof(key_value);
+ break;
+
+ case XJerk:
+ #if HAS_CLASSIC_JERK
+ planner.max_jerk[X_AXIS] = atof(key_value);
+ #endif
+ break;
+ case YJerk:
+ #if HAS_CLASSIC_JERK
+ planner.max_jerk[Y_AXIS] = atof(key_value);
+ #endif
+ break;
+ case ZJerk:
+ #if HAS_CLASSIC_JERK
+ planner.max_jerk[Z_AXIS] = atof(key_value);
+ #endif
+ break;
+ case EJerk:
+ #if HAS_CLASSIC_JERK
+ planner.max_jerk[E_AXIS] = atof(key_value);
+ #endif
+ break;
+
+ case Xstep:
+ planner.settings.axis_steps_per_mm[X_AXIS] = atof(key_value);
+ break;
+ case Ystep:
+ planner.settings.axis_steps_per_mm[Y_AXIS] = atof(key_value);
+ break;
+ case Zstep:
+ planner.settings.axis_steps_per_mm[Z_AXIS] = atof(key_value);
+ break;
+ case E0step:
+ planner.settings.axis_steps_per_mm[E_AXIS] = atof(key_value);
+ break;
+ case E1step:
+ planner.settings.axis_steps_per_mm[E_AXIS_N(1)] = atof(key_value);
+ break;
+
+ case Xcurrent:
+ #if AXIS_IS_TMC(X)
+ current_mA = atoi(key_value);
+ stepperX.rms_current(current_mA);
+ #endif
+ break;
+
+ case Ycurrent:
+ #if AXIS_IS_TMC(Y)
+ current_mA = atoi(key_value);
+ stepperY.rms_current(current_mA);
+ #endif
+ break;
+
+ case Zcurrent:
+ #if AXIS_IS_TMC(Z)
+ current_mA = atoi(key_value);
+ stepperZ.rms_current(current_mA);
+ #endif
+ break;
+
+ case E0current:
+ #if AXIS_IS_TMC(E0)
+ current_mA = atoi(key_value);
+ stepperE0.rms_current(current_mA);
+ #endif
+ break;
+
+ case E1current:
+ #if AXIS_IS_TMC(E1)
+ current_mA = atoi(key_value);
+ stepperE1.rms_current(current_mA);
+ #endif
+ break;
+
+ break;
+ case pause_pos_x:
+ gCfgItems.pausePosX = atof(key_value);
+ update_spi_flash();
+ break;
+ case pause_pos_y:
+ gCfgItems.pausePosY = atof(key_value);
+ update_spi_flash();
+ break;
+ case pause_pos_z:
+ gCfgItems.pausePosZ = atof(key_value);
+ update_spi_flash();
+ break;
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+}
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_NUM_KEY1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'1';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY2:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'2';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY3:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'3';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY4:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'4';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY5:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'5';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY6:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'6';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY7:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'7';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY8:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'8';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY9:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'9';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_KEY0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt <= 10) {
+ key_value[cnt] = (char)'0';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_BACK:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt > 0)
+ cnt--;
+ if (key_value[cnt] == (char)'.') point_flg = 1;
+ key_value[cnt] = (char)'\0';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ }
+ break;
+ case ID_NUM_RESET:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ ZERO(key_value);
+ cnt = 0;
+ key_value[cnt] = (char)'0';
+ point_flg = 1;
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ }
+ break;
+ case ID_NUM_POINT:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if ((cnt != 0) && (point_flg == 1)) {
+ point_flg = 0;
+ key_value[cnt] = (char)'.';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_NAGETIVE:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (cnt == 0) {
+ key_value[cnt] = (char)'-';
+ lv_label_set_text(labelValue, key_value);
+ lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+ cnt++;
+ }
+ }
+ break;
+ case ID_NUM_CONFIRM:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ last_disp_state = NUMBER_KEY_UI;
+ if (strlen(key_value) != 0)
+ set_value_confirm();
+ lv_clear_number_key();
+ draw_return_ui();
+ }
+ break;
+ }
+}
+
+void lv_draw_number_key(void) {
+ lv_obj_t *NumberKey_1 = NULL, *NumberKey_2 = NULL, *NumberKey_3 = NULL, *NumberKey_4 = NULL, *NumberKey_5 = NULL;
+ lv_obj_t *NumberKey_6 = NULL, *NumberKey_7 = NULL, *NumberKey_8 = NULL, *NumberKey_9 = NULL, *NumberKey_0 = NULL;
+ lv_obj_t *KeyPoint = NULL, *KeyConfirm = NULL, *KeyReset = NULL, *KeyBack = NULL;
+ lv_obj_t *Minus = NULL;
+ lv_obj_t *labelKey_1 = NULL, *labelKey_2 = NULL, *labelKey_3 = NULL, *labelKey_4 = NULL, *labelKey_5 = NULL;
+ lv_obj_t *labelKey_6 = NULL, *labelKey_7 = NULL, *labelKey_8 = NULL, *labelKey_9 = NULL, *labelKey_0 = NULL;
+ lv_obj_t *labelKeyPoint = NULL, *labelKeyConfirm = NULL, *labelKeyReset = NULL, *labelKeyBack = NULL;
+ lv_obj_t *labelMinus = NULL;
+
+ buttonValue = NULL;
+ labelValue = NULL;
+
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != NUMBER_KEY_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = NUMBER_KEY_UI;
+ }
+ disp_state = NUMBER_KEY_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ //lv_obj_t * title = lv_label_create(scr, NULL);
+ //lv_obj_set_style(title, &tft_style_label_rel);
+ //lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
+ //lv_label_set_text(title, creat_title_text());
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ //LV_IMG_DECLARE(bmp_pic);
+
+ buttonValue = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonValue, 92, 40); /*Set its position*/
+ lv_obj_set_size(buttonValue, 296, 40);
+ lv_obj_set_event_cb_mks(buttonValue, event_handler, ID_NUM_KEY1, NULL, 0);
+ lv_btn_set_style(buttonValue, LV_BTN_STYLE_REL, &style_num_text); /*Set the button's released style*/
+ lv_btn_set_style(buttonValue, LV_BTN_STYLE_PR, &style_num_text); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonValue, LV_LAYOUT_OFF);
+ labelValue = lv_label_create(buttonValue, NULL); /*Add a label to the button*/
+
+ NumberKey_1 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_1, 92, 90); /*Set its position*/
+ lv_obj_set_size(NumberKey_1, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_1, event_handler, ID_NUM_KEY1, NULL, 0);
+ lv_btn_set_style(NumberKey_1, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_1, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_1, LV_LAYOUT_OFF);
+ labelKey_1 = lv_label_create(NumberKey_1, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_1, machine_menu.key_1);
+ lv_obj_align(labelKey_1, NumberKey_1, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_2 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_2, 168, 90); /*Set its position*/
+ lv_obj_set_size(NumberKey_2, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_2, event_handler, ID_NUM_KEY2, NULL, 0);
+ lv_btn_set_style(NumberKey_2, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_2, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_2, LV_LAYOUT_OFF);
+ labelKey_2 = lv_label_create(NumberKey_2, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_2, machine_menu.key_2);
+ lv_obj_align(labelKey_2, NumberKey_2, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_3 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_3, 244, 90); /*Set its position*/
+ lv_obj_set_size(NumberKey_3, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_3, event_handler, ID_NUM_KEY3, NULL, 0);
+ lv_btn_set_style(NumberKey_3, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_3, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_3, LV_LAYOUT_OFF);
+ labelKey_3 = lv_label_create(NumberKey_3, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_3, machine_menu.key_3);
+ lv_obj_align(labelKey_3, NumberKey_3, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_4 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_4, 92, 140); /*Set its position*/
+ lv_obj_set_size(NumberKey_4, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_4, event_handler, ID_NUM_KEY4, NULL, 0);
+ lv_btn_set_style(NumberKey_4, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_4, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_4, LV_LAYOUT_OFF);
+ labelKey_4 = lv_label_create(NumberKey_4, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_4, machine_menu.key_4);
+ lv_obj_align(labelKey_4, NumberKey_4, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_5 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_5, 168, 140); /*Set its position*/
+ lv_obj_set_size(NumberKey_5, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_5, event_handler, ID_NUM_KEY5, NULL, 0);
+ lv_btn_set_style(NumberKey_5, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_5, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_5, LV_LAYOUT_OFF);
+ labelKey_5 = lv_label_create(NumberKey_5, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_5, machine_menu.key_5);
+ lv_obj_align(labelKey_5, NumberKey_5, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_6 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_6, 244, 140); /*Set its position*/
+ lv_obj_set_size(NumberKey_6, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_6, event_handler, ID_NUM_KEY6, NULL, 0);
+ lv_btn_set_style(NumberKey_6, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_6, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_6, LV_LAYOUT_OFF);
+ labelKey_6 = lv_label_create(NumberKey_6, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_6, machine_menu.key_6);
+ lv_obj_align(labelKey_6, NumberKey_6, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_7 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_7, 92, 190); /*Set its position*/
+ lv_obj_set_size(NumberKey_7, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_7, event_handler, ID_NUM_KEY7, NULL, 0);
+ lv_btn_set_style(NumberKey_7, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_7, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_7, LV_LAYOUT_OFF);
+ labelKey_7 = lv_label_create(NumberKey_7, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_7, machine_menu.key_7);
+ lv_obj_align(labelKey_7, NumberKey_7, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_8 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_8, 168, 190); /*Set its position*/
+ lv_obj_set_size(NumberKey_8, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_8, event_handler, ID_NUM_KEY8, NULL, 0);
+ lv_btn_set_style(NumberKey_8, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_8, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_8, LV_LAYOUT_OFF);
+ labelKey_8 = lv_label_create(NumberKey_8, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_8, machine_menu.key_8);
+ lv_obj_align(labelKey_8, NumberKey_8, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_9 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_9, 244, 190); /*Set its position*/
+ lv_obj_set_size(NumberKey_9, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_9, event_handler, ID_NUM_KEY9, NULL, 0);
+ lv_btn_set_style(NumberKey_9, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_9, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_9, LV_LAYOUT_OFF);
+ labelKey_9 = lv_label_create(NumberKey_9, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_9, machine_menu.key_9);
+ lv_obj_align(labelKey_9, NumberKey_9, LV_ALIGN_CENTER, 0, 0);
+
+ NumberKey_0 = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(NumberKey_0, 92, 240); /*Set its position*/
+ lv_obj_set_size(NumberKey_0, 68, 40);
+ lv_obj_set_event_cb_mks(NumberKey_0, event_handler, ID_NUM_KEY0, NULL, 0);
+ lv_btn_set_style(NumberKey_0, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(NumberKey_0, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(NumberKey_0, LV_LAYOUT_OFF);
+ labelKey_0 = lv_label_create(NumberKey_0, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKey_0, machine_menu.key_0);
+ lv_obj_align(labelKey_0, NumberKey_0, LV_ALIGN_CENTER, 0, 0);
+
+ KeyBack = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(KeyBack, 320, 90); /*Set its position*/
+ lv_obj_set_size(KeyBack, 68, 40);
+ lv_obj_set_event_cb_mks(KeyBack, event_handler, ID_NUM_BACK, NULL, 0);
+ lv_btn_set_style(KeyBack, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(KeyBack, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(KeyBack, LV_LAYOUT_OFF);
+ labelKeyBack = lv_label_create(KeyBack, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKeyBack, machine_menu.key_back);
+ lv_obj_align(labelKeyBack, KeyBack, LV_ALIGN_CENTER, 0, 0);
+
+ KeyReset = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(KeyReset, 320, 140); /*Set its position*/
+ lv_obj_set_size(KeyReset, 68, 40);
+ lv_obj_set_event_cb_mks(KeyReset, event_handler, ID_NUM_RESET, NULL, 0);
+ lv_btn_set_style(KeyReset, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(KeyReset, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(KeyReset, LV_LAYOUT_OFF);
+ labelKeyReset = lv_label_create(KeyReset, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKeyReset, machine_menu.key_reset);
+ lv_obj_align(labelKeyReset, KeyReset, LV_ALIGN_CENTER, 0, 0);
+
+ KeyConfirm = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(KeyConfirm, 320, 190); /*Set its position*/
+ lv_obj_set_size(KeyConfirm, 68, 90);
+ lv_obj_set_event_cb_mks(KeyConfirm, event_handler, ID_NUM_CONFIRM, NULL, 0);
+ lv_btn_set_style(KeyConfirm, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(KeyConfirm, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(KeyConfirm, LV_LAYOUT_OFF);
+ labelKeyConfirm = lv_label_create(KeyConfirm, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKeyConfirm, machine_menu.key_confirm);
+ lv_obj_align(labelKeyConfirm, KeyConfirm, LV_ALIGN_CENTER, 0, 0);
+
+ KeyPoint = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(KeyPoint, 244, 240); /*Set its position*/
+ lv_obj_set_size(KeyPoint, 68, 40);
+ lv_obj_set_event_cb_mks(KeyPoint, event_handler, ID_NUM_POINT, NULL, 0);
+ lv_btn_set_style(KeyPoint, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(KeyPoint, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(KeyPoint, LV_LAYOUT_OFF);
+ labelKeyPoint = lv_label_create(KeyPoint, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelKeyPoint, machine_menu.key_point);
+ lv_obj_align(labelKeyPoint, KeyPoint, LV_ALIGN_CENTER, 0, 0);
+
+ Minus = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(Minus, 168, 240); /*Set its position*/
+ lv_obj_set_size(Minus, 68, 40);
+ lv_obj_set_event_cb_mks(Minus, event_handler, ID_NUM_NAGETIVE, NULL, 0);
+ lv_btn_set_style(Minus, LV_BTN_STYLE_REL, &style_num_key_pre); /*Set the button's released style*/
+ lv_btn_set_style(Minus, LV_BTN_STYLE_PR, &style_num_key_rel); /*Set the button's pressed style*/
+ lv_btn_set_layout(Minus, LV_LAYOUT_OFF);
+ labelMinus = lv_label_create(Minus, NULL); /*Add a label to the button*/
+ lv_label_set_text(labelMinus, machine_menu.negative);
+ lv_obj_align(labelMinus, Minus, LV_ALIGN_CENTER, 0, 0);
+
+ disp_key_value();
+}
+
+void lv_clear_number_key() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h
new file mode 100644
index 000000000000..d35cee63439c
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_number_key(void);
+extern void lv_clear_number_key();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
similarity index 81%
rename from Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp
rename to Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
index 1a423efdaa81..ad8cad03e0c3 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -53,7 +53,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- lv_clear_opration();
+ lv_clear_operation();
lv_draw_preHeat();
}
break;
@@ -62,7 +62,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- lv_clear_opration();
+ lv_clear_operation();
lv_draw_extrusion();
}
break;
@@ -71,7 +71,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- lv_clear_opration();
+ lv_clear_operation();
lv_draw_move_motor();
}
break;
@@ -87,7 +87,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- lv_clear_opration();
+ lv_clear_operation();
lv_draw_fan();
}
break;
@@ -96,7 +96,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- lv_clear_opration();
+ lv_clear_operation();
lv_draw_change_speed();
}
break;
@@ -116,7 +116,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (gCfgItems.finish_power_off == 1) {
gCfgItems.finish_power_off = 0;
- lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0); //dindt find bmp_Mamual...
+ lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0); // didn't find bmp_Mamual...
lv_label_set_text(label_PowerOff, printing_more_menu.manual);
lv_obj_align(label_PowerOff, buttonPowerOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
lv_obj_refresh_ext_draw_pad(label_PowerOff);
@@ -136,7 +136,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
-void lv_draw_opration(void) {
+void lv_draw_operation(void) {
lv_obj_t *buttonPreHeat, *buttonExtrusion, *buttonSpeed;
lv_obj_t *buttonBack, *buttonFan;
lv_obj_t *labelPreHeat, *labelExtrusion;
@@ -156,7 +156,7 @@ void lv_draw_opration(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -165,57 +165,59 @@ void lv_draw_opration(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonPreHeat = lv_imgbtn_create(scr, NULL);
+ buttonPreHeat = lv_imgbtn_create(scr, NULL);
buttonExtrusion = lv_imgbtn_create(scr, NULL);
- buttonFan = lv_imgbtn_create(scr, NULL);
- buttonSpeed = lv_imgbtn_create(scr, NULL);
+ buttonFan = lv_imgbtn_create(scr, NULL);
+ buttonSpeed = lv_imgbtn_create(scr, NULL);
- if (uiCfg.print_state != WORKING)
+ if (uiCfg.print_state != WORKING) {
//buttonFilament = lv_imgbtn_create(scr, NULL);
- //else
+ //} else {
buttonMove = lv_imgbtn_create(scr, NULL);
+ }
+
buttonPowerOff = lv_imgbtn_create(scr, NULL);
- buttonBack = lv_imgbtn_create(scr, NULL);
+ buttonBack = lv_imgbtn_create(scr, NULL);
- lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_O_PRE_HEAT, "bmp_PreHeat.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_O_PRE_HEAT, "bmp_temp.bin", 0);
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW);
#if 1
- lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_O_EXTRUCT, "bmp_Extruct.bin", 0);
+ lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_O_EXTRUCT, "bmp_extrude_opr.bin", 0);
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_O_FAN, "bmp_Fan.bin", 0);
+ lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_O_FAN, "bmp_fan.bin", 0);
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_O_SPEED, "bmp_Speed.bin", 0);
+ lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_O_SPEED, "bmp_speed.bin", 0);
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_label_rel);
if (uiCfg.print_state != WORKING) {
- /*{
- lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_O_FILAMENT,"bmp_Filamentchange.bin",0);
- lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
- lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel);
- }
- else*/
- lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_O_MOV, "bmp_Mov.bin", 0);
+ /*
+ lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_O_FILAMENT,"bmp_Filamentchange.bin",0);
+ lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
+ lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
+ lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_label_rel);
+ } else {
+ */
+ lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_O_MOV, "bmp_move_opr.bin", 0);
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_label_rel);
}
if (gCfgItems.finish_power_off == 1)
lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_auto_off.bin", 0);
@@ -223,15 +225,15 @@ void lv_draw_opration(void) {
lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0);
lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_O_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_O_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
@@ -240,17 +242,17 @@ void lv_draw_opration(void) {
lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
if (uiCfg.print_state != WORKING) {
- /*{
- lv_obj_set_pos(buttonFilament,INTERVAL_V,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- }
- else*/
+ /*
+ lv_obj_set_pos(buttonFilament,INTERVAL_V,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+ } else {
+ */
lv_obj_set_pos(buttonMove, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonPowerOff, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
}
else {
lv_obj_set_pos(buttonPowerOff, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
}
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF);
@@ -258,27 +260,29 @@ void lv_draw_opration(void) {
lv_btn_set_layout(buttonFan, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonSpeed, LV_LAYOUT_OFF);
- if (uiCfg.print_state != WORKING)
- /*{
- lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
- }
- else*/
+ if (uiCfg.print_state != WORKING) {
+ /*
+ lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
+ } else {
+ */
lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF);
+ }
lv_btn_set_layout(buttonPowerOff, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
- labelPreHeat = lv_label_create(buttonPreHeat, NULL);
+ labelPreHeat = lv_label_create(buttonPreHeat, NULL);
labelExtrusion = lv_label_create(buttonExtrusion, NULL);
- label_Fan = lv_label_create(buttonFan, NULL);
+ label_Fan = lv_label_create(buttonFan, NULL);
label_Speed = lv_label_create(buttonSpeed, NULL);
- if (uiCfg.print_state != WORKING)
- /*{
- label_Filament = lv_label_create(buttonFilament, NULL);
+ if (uiCfg.print_state != WORKING) {
+ /*
+ label_Filament = lv_label_create(buttonFilament, NULL);
+ } else {
+ */
+ label_Move = lv_label_create(buttonMove, NULL);
}
- else*/
- label_Move = lv_label_create(buttonMove, NULL);
label_PowerOff = lv_label_create(buttonPowerOff, NULL);
label_Back = lv_label_create(buttonBack, NULL);
@@ -297,11 +301,11 @@ void lv_draw_opration(void) {
lv_obj_align(label_Speed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
if (uiCfg.print_state != WORKING) {
- /*{
- lv_label_set_text(label_Filament, operation_menu.filament);
- lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
- }
- else*/
+ /*
+ lv_label_set_text(label_Filament, operation_menu.filament);
+ lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
+ } else {
+ */
lv_label_set_text(label_Move, operation_menu.move);
lv_obj_align(label_Move, buttonMove, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
}
@@ -317,6 +321,6 @@ void lv_draw_opration(void) {
}
}
-void lv_clear_opration() { lv_obj_del(scr); }
+void lv_clear_operation() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
similarity index 93%
rename from Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h
rename to Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
index 8ca562f0cfe0..e2eaaf06a499 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
@@ -25,8 +25,8 @@
extern "C" { /* C-declarations for C++ */
#endif
-extern void lv_draw_opration(void);
-extern void lv_clear_opration();
+extern void lv_draw_operation(void);
+extern void lv_clear_operation();
//extern void disp_temp_ready_print();
#ifdef __cplusplus
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
index f66898b7925b..f7dd2060b8f6 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if BOTH(TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE)
+#if BOTH(HAS_TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE)
#include "draw_ui.h"
#include "lv_conf.h"
@@ -52,4 +52,4 @@ void lv_draw_pause_message(const PauseMessage msg) {
}
}
-#endif // TFT_LVGL_UI && ADVANCED_PAUSE_FEATURE
+#endif // HAS_TFT_LVGL_UI && ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp
new file mode 100644
index 000000000000..56caf812b1f9
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp
@@ -0,0 +1,222 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_PAUSE_RETURN 1
+#define ID_PAUSE_X 2
+#define ID_PAUSE_Y 3
+#define ID_PAUSE_Z 4
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_PAUSE_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_clear_pause_position();
+ draw_return_ui();
+ }
+ break;
+ case ID_PAUSE_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = pause_pos_x;
+ lv_clear_pause_position();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_PAUSE_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = pause_pos_y;
+ lv_clear_pause_position();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_PAUSE_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = pause_pos_z;
+ lv_clear_pause_position();
+ lv_draw_number_key();
+ }
+ break;
+ }
+}
+
+void lv_draw_pause_position(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != PAUSE_POS_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = PAUSE_POS_UI;
+ }
+ disp_state = PAUSE_POS_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.PausePosText);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_PAUSE_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_PAUSE_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_PAUSE_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_PAUSE_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosX);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosY);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosZ);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelXText, machine_menu.xPos);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.yPos);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.zPos);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_pause_position() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h
new file mode 100644
index 000000000000..5f1b4dc96091
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_pause_position(void);
+extern void lv_clear_pause_position();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
index 82defbebde82..801114e6b2ea 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -58,29 +58,24 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
if (uiCfg.curSprayerChoose == 0) {
if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
-
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
}
}
#if !defined(SINGLENOZZLE) && EXTRUDERS >= 2
- else if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
- thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
-
- thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
- }
+ else if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
+ thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
+ thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
+ }
#endif
}
#if HAS_HEATED_BED
- else {
-
- thermalManager.temp_bed.target += uiCfg.stepHeat;
-
- if ((int)thermalManager.temp_bed.target > BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) {
- thermalManager.temp_bed.target = (float)BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1);
- thermalManager.start_watching_bed();
+ else {
+ thermalManager.temp_bed.target += uiCfg.stepHeat;
+ if ((int)thermalManager.temp_bed.target > BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) {
+ thermalManager.temp_bed.target = (float)BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1);
+ thermalManager.start_watching_bed();
+ }
}
-
- }
#endif
disp_desire_temp();
}
@@ -101,16 +96,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
#if HAS_HEATED_BED
- else {
- if ((int)thermalManager.temp_bed.target > uiCfg.stepHeat) {
- thermalManager.temp_bed.target -= uiCfg.stepHeat;
- thermalManager.start_watching_bed();
- }
else {
- thermalManager.temp_bed.target = (float)0;
- thermalManager.start_watching_bed();
+ if ((int)thermalManager.temp_bed.target > uiCfg.stepHeat) {
+ thermalManager.temp_bed.target -= uiCfg.stepHeat;
+ thermalManager.start_watching_bed();
+ }
+ else {
+ thermalManager.temp_bed.target = (float)0;
+ thermalManager.start_watching_bed();
+ }
}
- }
#endif
disp_desire_temp();
}
@@ -131,12 +126,12 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
uiCfg.curTempType = 1;
}
else {
- uiCfg.curTempType = 0;
+ uiCfg.curTempType = 0;
uiCfg.curSprayerChoose = 0;
}
}
}
- else if (uiCfg.curSprayerChoose == 0) {
+ else if (uiCfg.curSprayerChoose == 0) {
if (TEMP_SENSOR_BED != 0)
uiCfg.curTempType = 1;
else
@@ -145,7 +140,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (uiCfg.curTempType == 1) {
uiCfg.curSprayerChoose = 0;
- uiCfg.curTempType = 0;
+ uiCfg.curTempType = 0;
}
disp_temp_type();
}
@@ -174,10 +169,10 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
}
#if HAS_HEATED_BED
- else {
- thermalManager.temp_bed.target = (float)0;
- thermalManager.start_watching_bed();
- }
+ else {
+ thermalManager.temp_bed.target = (float)0;
+ thermalManager.start_watching_bed();
+ }
#endif
disp_desire_temp();
}
@@ -211,7 +206,7 @@ void lv_draw_preHeat(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -220,57 +215,57 @@ void lv_draw_preHeat(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonAdd = lv_imgbtn_create(scr, NULL);
- buttonDec = lv_imgbtn_create(scr, NULL);
- buttoType = lv_imgbtn_create(scr, NULL);
+ buttonAdd = lv_imgbtn_create(scr, NULL);
+ buttonDec = lv_imgbtn_create(scr, NULL);
+ buttoType = lv_imgbtn_create(scr, NULL);
buttonStep = lv_imgbtn_create(scr, NULL);
- buttonOff = lv_imgbtn_create(scr, NULL);
+ buttonOff = lv_imgbtn_create(scr, NULL);
buttonBack = lv_imgbtn_create(scr, NULL);
lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_P_ADD, "bmp_Add.bin", 0);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_P_DEC, "bmp_Dec.bin", 0);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_P_OFF, "bmp_Speed0.bin", 0);
+ lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_P_OFF, "bmp_speed0.bin", 0);
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -284,7 +279,7 @@ void lv_draw_preHeat(void) {
lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
labelType = lv_label_create(buttoType, NULL);
labelStep = lv_label_create(buttonStep, NULL);
- lv_obj_t * labelOff = lv_label_create(buttonOff, NULL);
+ lv_obj_t * labelOff = lv_label_create(buttonOff, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
@@ -306,7 +301,7 @@ void lv_draw_preHeat(void) {
disp_step_heat();
tempText1 = lv_label_create(scr, NULL);
- lv_obj_set_style(tempText1, &tft_style_lable_rel);
+ lv_obj_set_style(tempText1, &tft_style_label_rel);
disp_desire_temp();
}
@@ -314,14 +309,14 @@ void disp_temp_type() {
if (uiCfg.curTempType == 0) {
if (uiCfg.curSprayerChoose == 1) {
- lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru2.bin", 0);
+ lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_extru2.bin", 0);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelType, preheat_menu.ext2);
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
}
}
else {
- lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru1.bin", 0);
+ lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_extru1.bin", 0);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelType, preheat_menu.ext1);
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -330,7 +325,7 @@ void disp_temp_type() {
}
else {
- lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Bed.bin", 0);
+ lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_bed.bin", 0);
if (gCfgItems.multiple_language != 0) {
lv_label_set_text(labelType, preheat_menu.hotbed);
lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -352,12 +347,12 @@ void disp_desire_temp() {
sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target);
}
#if HAS_HEATED_BED
- else {
- strcat(public_buf_l, preheat_menu.hotbed);
- sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target);
- }
+ else {
+ strcat(public_buf_l, preheat_menu.hotbed);
+ sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target);
+ }
#endif
- strcat(public_buf_l, ": ");
+ strcat_P(public_buf_l, PSTR(": "));
strcat(public_buf_l, buf);
lv_label_set_text(tempText1, public_buf_l);
lv_obj_align(tempText1, NULL, LV_ALIGN_CENTER, 0, -50);
@@ -365,11 +360,11 @@ void disp_desire_temp() {
void disp_step_heat() {
if (uiCfg.stepHeat == 1)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step1_degree.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step1_degree.bin", 0);
else if (uiCfg.stepHeat == 5)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step5_degree.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step5_degree.bin", 0);
else if (uiCfg.stepHeat == 10)
- lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step10_degree.bin", 0);
+ lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step10_degree.bin", 0);
if (gCfgItems.multiple_language != 0) {
if (uiCfg.stepHeat == 1) {
@@ -389,4 +384,4 @@ void disp_step_heat() {
void lv_clear_preHeat() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
index 345b15882ba0..33405a905fe4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "lv_conf.h"
@@ -34,9 +34,8 @@
static lv_obj_t * scr;
-static lv_obj_t *buttonPageUp, *buttonPageDown, *buttonBack, *buttonGcode[FILE_BTN_CNT];
-static lv_obj_t * labelPageUp[FILE_BTN_CNT];
-static lv_obj_t *buttonText[FILE_BTN_CNT];
+static lv_obj_t *buttonPageUp, *buttonPageDown, *buttonBack,
+ *buttonGcode[FILE_BTN_CNT], *labelPageUp[FILE_BTN_CNT], *buttonText[FILE_BTN_CNT];
#define ID_P_UP 7
#define ID_P_DOWN 8
@@ -53,64 +52,64 @@ uint8_t sel_id = 0;
#if ENABLED(SDSUPPORT)
-static uint8_t search_file() {
- int valid_name_cnt = 0;
- //char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
+ static uint8_t search_file() {
+ int valid_name_cnt = 0;
+ //char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
- list_file.Sd_file_cnt = 0;
- //list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
+ list_file.Sd_file_cnt = 0;
+ //list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
- //root2.rewind();
- //SERIAL_ECHOLN(list_file.curDirPath);
+ //root2.rewind();
+ //SERIAL_ECHOLN(list_file.curDirPath);
- if (curDirLever != 0) card.cd(list_file.curDirPath);
- else card.cdroot(); //while(card.cdup());
+ if (curDirLever != 0) card.cd(list_file.curDirPath);
+ else card.cdroot(); // while(card.cdup());
- const uint16_t fileCnt = card.get_num_Files();
+ const uint16_t fileCnt = card.get_num_Files();
- for (uint16_t i = 0; i < fileCnt; i++) {
- if (list_file.Sd_file_cnt == list_file.Sd_file_offset) {
- const uint16_t nr = SD_ORDER(i, fileCnt);
- card.getfilename_sorted(nr);
+ for (uint16_t i = 0; i < fileCnt; i++) {
+ if (list_file.Sd_file_cnt == list_file.Sd_file_offset) {
+ const uint16_t nr = SD_ORDER(i, fileCnt);
+ card.getfilename_sorted(nr);
- if (card.flag.filenameIsDir)
- /*
- SERIAL_ECHOLN(card.longest_filename);
- */
- list_file.IsFolder[valid_name_cnt] = 1;
- else
- //SERIAL_ECHOLN(card.longFilename);
- list_file.IsFolder[valid_name_cnt] = 0;
-
- #if 1
- //
- memset(list_file.file_name[valid_name_cnt], 0, strlen(list_file.file_name[valid_name_cnt]));
- strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath);
- strcat(list_file.file_name[valid_name_cnt], "/");
- strcat(list_file.file_name[valid_name_cnt], card.filename);
- //
- memset(list_file.long_name[valid_name_cnt], 0, strlen(list_file.long_name[valid_name_cnt]));
- if (card.longFilename[0] == 0)
- strncpy(list_file.long_name[valid_name_cnt], card.filename, strlen(card.filename));
- else
- strncpy(list_file.long_name[valid_name_cnt], card.longFilename, strlen(card.longFilename));
+ if (card.flag.filenameIsDir) {
+ //SERIAL_ECHOLN(card.longest_filename);
+ list_file.IsFolder[valid_name_cnt] = 1;
+ }
+ else {
+ //SERIAL_ECHOLN(card.longFilename);
+ list_file.IsFolder[valid_name_cnt] = 0;
+ }
- valid_name_cnt++;
- if (valid_name_cnt == 1)
- dir_offset[curDirLever].cur_page_first_offset = list_file.Sd_file_offset;
- if (valid_name_cnt >= FILE_NUM) {
- dir_offset[curDirLever].cur_page_last_offset = list_file.Sd_file_offset;
+ #if 1
+ //
+ memset(list_file.file_name[valid_name_cnt], 0, strlen(list_file.file_name[valid_name_cnt]));
+ strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath);
+ strcat_P(list_file.file_name[valid_name_cnt], PSTR("/"));
+ strcat(list_file.file_name[valid_name_cnt], card.filename);
+ //
+ memset(list_file.long_name[valid_name_cnt], 0, strlen(list_file.long_name[valid_name_cnt]));
+ if (card.longFilename[0] == 0)
+ strncpy(list_file.long_name[valid_name_cnt], card.filename, strlen(card.filename));
+ else
+ strncpy(list_file.long_name[valid_name_cnt], card.longFilename, strlen(card.longFilename));
+
+ valid_name_cnt++;
+ if (valid_name_cnt == 1)
+ dir_offset[curDirLever].cur_page_first_offset = list_file.Sd_file_offset;
+ if (valid_name_cnt >= FILE_NUM) {
+ dir_offset[curDirLever].cur_page_last_offset = list_file.Sd_file_offset;
+ list_file.Sd_file_offset++;
+ break;
+ }
list_file.Sd_file_offset++;
- break;
- }
- list_file.Sd_file_offset++;
- #endif
+ #endif
+ }
+ list_file.Sd_file_cnt++;
}
- list_file.Sd_file_cnt++;
+ //card.closefile(false);
+ return valid_name_cnt;
}
- //card.closefile(false);
- return valid_name_cnt;
-}
#endif // SDSUPPORT
@@ -147,7 +146,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (dir_offset[curDirLever].curPage > 0) {
- //2015.05.19
+ // 2015.05.19
list_file.Sd_file_cnt = 0;
if (dir_offset[curDirLever].cur_page_first_offset >= FILE_NUM)
@@ -169,7 +168,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
else if (event == LV_EVENT_RELEASED) {
if (dir_offset[curDirLever].cur_page_last_offset > 0) {
- list_file.Sd_file_cnt = 0;
+ list_file.Sd_file_cnt = 0;
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_last_offset + 1;
#if ENABLED(SDSUPPORT)
file_count = search_file();
@@ -195,9 +194,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
#if ENABLED(SDSUPPORT)
card.cdup();
#endif
- dir_offset[curDirLever].curPage = 0;
+ dir_offset[curDirLever].curPage = 0;
dir_offset[curDirLever].cur_page_first_offset = 0;
- dir_offset[curDirLever].cur_page_last_offset = 0;
+ dir_offset[curDirLever].cur_page_last_offset = 0;
curDirLever--;
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
#if ENABLED(SDSUPPORT)
@@ -221,7 +220,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (list_file.file_name[i][0] != 0) {
if (list_file.IsFolder[i] == 1) {
- memset(list_file.curDirPath, 0, sizeof(list_file.curDirPath));
+ ZERO(list_file.curDirPath);
strcpy(list_file.curDirPath, list_file.file_name[i]);
curDirLever++;
list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
@@ -253,11 +252,11 @@ void lv_draw_print_file(void) {
}
disp_state = PRINT_FILE_UI;
- curDirLever = 0;
+ curDirLever = 0;
dir_offset[curDirLever].curPage = 0;
list_file.Sd_file_offset = 0;
- list_file.Sd_file_cnt = 0;
+ list_file.Sd_file_cnt = 0;
ZERO(dir_offset);
ZERO(list_file.IsFolder);
@@ -300,35 +299,35 @@ void disp_gcode_icon(uint8_t file_num) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
lv_refr_now(lv_refr_get_disp_refreshing());
- buttonPageUp = lv_imgbtn_create(scr, NULL);
+ buttonPageUp = lv_imgbtn_create(scr, NULL);
buttonPageDown = lv_imgbtn_create(scr, NULL);
- buttonBack = lv_imgbtn_create(scr, NULL);
+ buttonBack = lv_imgbtn_create(scr, NULL);
lv_obj_set_event_cb_mks(buttonPageUp, event_handler, ID_P_UP, "bmp_pageUp.bin", 0);
lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_REL, &bmp_pic_117x92);
lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_PR, &bmp_pic_117x92);
- lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonPageUp, LV_PROTECT_FOLLOW);
#if 1
lv_obj_set_event_cb_mks(buttonPageDown, event_handler, ID_P_DOWN, "bmp_pageDown.bin", 0);
lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_REL, &bmp_pic_117x92);
lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_PR, &bmp_pic_117x92);
- lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_back.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic_117x92);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic_117x92);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
lv_obj_set_pos(buttonPageUp, OTHER_BTN_XPIEL * 3 + INTERVAL_V * 4, titleHeight);
@@ -343,7 +342,7 @@ void disp_gcode_icon(uint8_t file_num) {
for (i = 0; i < FILE_BTN_CNT; i++) {
/*
- if(seq) {
+ if (seq) {
j = (FILE_BTN_CNT-1) - i;
back_flg = 1;
}
@@ -357,8 +356,8 @@ void disp_gcode_icon(uint8_t file_num) {
#ifdef TFT35
buttonGcode[i] = lv_imgbtn_create(scr, NULL);
- lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonGcode[i], LV_PROTECT_FOLLOW);
lv_btn_set_layout(buttonGcode[i], LV_LAYOUT_OFF);
@@ -366,7 +365,7 @@ void disp_gcode_icon(uint8_t file_num) {
cutFileName((char *)list_file.long_name[i], 16, 8, (char *)public_buf_m);
if (list_file.IsFolder[i] == 1) {
- lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_Dir.bin", 0);
+ lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_dir.bin", 0);
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic);
if (i < 3)
@@ -375,7 +374,7 @@ void disp_gcode_icon(uint8_t file_num) {
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight);
labelPageUp[i] = lv_label_create(buttonGcode[i], NULL);
- lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+ lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
lv_label_set_text(labelPageUp[i], public_buf_m);
lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5);
}
@@ -389,10 +388,10 @@ void disp_gcode_icon(uint8_t file_num) {
buttonText[i] = lv_btn_create(scr, NULL);
//lv_obj_set_event_cb(buttonText[i], event_handler);
- lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
- //lv_obj_set_style(buttonText[i], &tft_style_lable_pre);
- //lv_obj_set_style(buttonText[i], &tft_style_lable_rel);
+ lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
+ //lv_obj_set_style(buttonText[i], &tft_style_label_pre);
+ //lv_obj_set_style(buttonText[i], &tft_style_label_rel);
lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW);
lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF);
//lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
@@ -406,10 +405,10 @@ void disp_gcode_icon(uint8_t file_num) {
buttonText[i] = lv_btn_create(scr, NULL);
//lv_obj_set_event_cb(buttonText[i], event_handler);
- lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
- //lv_imgbtn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW);
lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF);
//lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
@@ -419,12 +418,12 @@ void disp_gcode_icon(uint8_t file_num) {
lv_obj_set_size(buttonText[i], 100, 40);
}
labelPageUp[i] = lv_label_create(buttonText[i], NULL);
- lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+ lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
lv_label_set_text(labelPageUp[i], public_buf_m);
lv_obj_align(labelPageUp[i], buttonText[i], LV_ALIGN_IN_BOTTOM_MID, 0, 0);
}
else {
- lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_File.bin", 0);
+ lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_file.bin", 0);
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic);
if (i < 3)
@@ -433,27 +432,38 @@ void disp_gcode_icon(uint8_t file_num) {
lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight);
labelPageUp[i] = lv_label_create(buttonGcode[i], NULL);
- lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+ lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
lv_label_set_text(labelPageUp[i], public_buf_m);
lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5);
}
}
- #else // ifdef TFT35
- #endif // ifdef TFT35
+ #else // !TFT35
+ #endif // !TFT35
}
}
void lv_open_gcode_file(char *path) {
#if ENABLED(SDSUPPORT)
+ uint32_t *ps4;
+ int pre_sread_cnt;
char *cur_name;
+
cur_name = strrchr(path, '/');
+
card.openFileRead(cur_name);
- #endif
+ card.read(public_buf, 512);
+ ps4 = (uint32_t *)strstr((char *)public_buf, ";simage:");
+ // Ignore the beginning message of gcode file
+ if (ps4) {
+ pre_sread_cnt = (uint32_t)ps4 - (uint32_t)((uint32_t *)(&public_buf[0]));
+ card.setIndex(pre_sread_cnt);
+ }
+ #endif // SDSUPPORT
}
+
int ascii2dec_test(char *ascii) {
int result = 0;
-
if (ascii == 0) return 0;
if (*(ascii) >= '0' && *(ascii) <= '9')
@@ -468,64 +478,58 @@ int ascii2dec_test(char *ascii) {
return result;
}
-void lv_gcode_file_read(uint8_t *data_buf)
-{
- #if ENABLED (SDSUPPORT)
- uint16_t i=0,j=0,k=0;
- uint16_t row_1=0;
+void lv_gcode_file_read(uint8_t *data_buf) {
+ #if ENABLED(SDSUPPORT)
+ uint16_t i = 0, j = 0, k = 0;
+ uint16_t row_1 = 0;
bool ignore_start = true;
char temp_test[200];
volatile uint16_t *p_index;
memset(public_buf, 0, 200);
- while(card.isFileOpen())
- {
- if (ignore_start) card.read(temp_test, 8); //line start -> ignore
- card.read(temp_test, 200); //data
- //\r;;gimage: we got the bit img, so stop here
+ while (card.isFileOpen()) {
+ if (ignore_start) card.read(temp_test, 8); // line start -> ignore
+ card.read(temp_test, 200); // data
+ // \r;;gimage: we got the bit img, so stop here
if (temp_test[1] == ';') {
card.closefile();
break;
}
- for(i=0;i<200;) {
- public_buf[row_1*200+100*k+j] = (char)(ascii2dec_test(&temp_test[i])<<4|ascii2dec_test(&temp_test[i+1]));
+ for (i = 0; i < 200;) {
+ public_buf[row_1 * 200 + 100 * k + j] = (char)(ascii2dec_test(&temp_test[i]) << 4 | ascii2dec_test(&temp_test[i + 1]));
j++;
- i+=2;
+ i += 2;
}
uint16_t c = card.get();
- //check if we have more data or finished the line (CR)
- if (c == '\r') {
- break;
- }
+ // check if we have more data or finished the line (CR)
+ if (c == '\r') break;
card.setIndex(card.getIndex());
k++;
- j=0;
+ j = 0;
ignore_start = false;
}
- #if ENABLED(SPI_GRAPHICAL_TFT)
- for(i=0;i<200;)
- {
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ for (i = 0; i < 200;) {
p_index = (uint16_t *)(&public_buf[i]);
- //Color = (*p_index >> 8);
+ //Color = (*p_index >> 8);
//*p_index = Color | ((*p_index & 0xff) << 8);
- i+=2;
- if(*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full;
+ i += 2;
+ if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full;
}
#else
- for(i=0;i<200;)
- {
+ for (i = 0; i < 200;) {
p_index = (uint16_t *)(&public_buf[i]);
//Color = (*p_index >> 8);
//*p_index = Color | ((*p_index & 0xff) << 8);
- i+=2;
- if(*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; // 0x18C3; //
+ i += 2;
+ if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // 0x18C3;
}
- #endif
- memcpy(data_buf,public_buf,200);
- #endif
+ #endif // TFT_LVGL_UI_SPI
+ memcpy(data_buf, public_buf, 200);
+ #endif // SDSUPPORT
}
void lv_close_gcode_file() {TERN_(SDSUPPORT, card.closefile());}
@@ -534,7 +538,7 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
#if _LFN_UNICODE
TCHAR *tmpFile;
TCHAR *strIndex1 = 0, *strIndex2 = 0, *beginIndex;
- TCHAR secSeg[10] = {0};
+ TCHAR secSeg[10] = {0};
TCHAR gFileTail[4] = {'~', '.', 'g', '\0'};
#else
char *tmpFile;
@@ -554,7 +558,7 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
#endif
beginIndex = (strIndex1 != 0
- // && (strIndex2 != 0) && (strIndex1 < strIndex2)
+ //&& (strIndex2 != 0) && (strIndex1 < strIndex2)
) ? strIndex1 + 1 : tmpFile;
if (strIndex2 == 0 || (strIndex1 > strIndex2)) { // not gcode file
@@ -570,7 +574,7 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
strcpy(outStr, beginIndex);
#endif
}
- else { //gcode file
+ else { // gcode file
if (strIndex2 - beginIndex > (len - 2)) {
#if _LFN_UNICODE
wcsncpy(outStr, (const WCHAR *)beginIndex, len - 3);
@@ -578,7 +582,7 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
#else
//strncpy(outStr, beginIndex, len - 3);
strncpy(outStr, beginIndex, len - 4);
- strcat(outStr, "~.g");
+ strcat_P(outStr, PSTR("~.g"));
#endif
}
else {
@@ -587,7 +591,7 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
wcscat(outStr, (const WCHAR *)&gFileTail[3]);
#else
strncpy(outStr, beginIndex, strIndex2 - beginIndex + 1);
- strcat(outStr, "g");
+ strcat_P(outStr, PSTR("g"));
#endif
}
}
@@ -595,23 +599,23 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
#if _LFN_UNICODE
if (wcslen(outStr) > bytePerLine) {
wcscpy(secSeg, (const WCHAR *)&outStr[bytePerLine]);
- outStr[bytePerLine] = '\n';
+ outStr[bytePerLine] = '\n';
outStr[bytePerLine + 1] = '\0';
wcscat(outStr, (const WCHAR *)secSeg);
}
#else
if ((int)strlen(outStr) > bytePerLine) {
strcpy(secSeg, &outStr[bytePerLine]);
- outStr[bytePerLine] = '\n';
+ outStr[bytePerLine] = '\n';
outStr[bytePerLine + 1] = '\0';
strcat(outStr, secSeg);
}
else {
- strcat(outStr, "\n");
+ strcat_P(outStr, PSTR("\n"));
}
#endif
}
void lv_clear_print_file() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
index daf950703104..2079ed824560 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -53,7 +53,7 @@ static lv_obj_t * buttonPause, *buttonOperat, *buttonStop;
static lv_obj_t* labelBed;
#endif
-#define ID_PAUSE 1
+#define ID_PAUSE 1
#define ID_STOP 2
#define ID_OPTION 3
@@ -74,36 +74,36 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (gcode_preview_over != 1) {
if (uiCfg.print_state == WORKING) {
- //#if ENABLED(PARK_HEAD_ON_PAUSE)
- //queue.inject_P(PSTR("M25 P\nM24"));
+ // #if ENABLED(PARK_HEAD_ON_PAUSE)
+ // queue.inject_P(PSTR("M25 P\nM24"));
#if ENABLED(SDSUPPORT)
- //queue.inject_P(PSTR("M25\nG91\nG1 Z10\nG90"));
+ // queue.inject_P(PSTR("M25\nG91\nG1 Z10\nG90"));
card.pauseSDPrint();
stop_print_time();
uiCfg.print_state = PAUSING;
#endif
- lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_resume.bin", 0);
lv_label_set_text(labelPause, printing_menu.resume);
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
}
else if (uiCfg.print_state == PAUSED) {
uiCfg.print_state = RESUMING;
- //if (IS_SD_PAUSED())queue.inject_P(PSTR("M24"));// queue.inject_P(M24_STR);
- lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
+ // if (IS_SD_PAUSED())queue.inject_P(PSTR("M24"));// queue.inject_P(M24_STR);
+ lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
lv_label_set_text(labelPause, printing_menu.pause);
lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
}
#if ENABLED(POWER_LOSS_RECOVERY)
- else if (uiCfg.print_state == REPRINTING) {
- uiCfg.print_state = REPRINTED;
- lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
- lv_label_set_text(labelPause, printing_menu.pause);
- lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
- //recovery.resume();
- print_time.minutes = recovery.info.print_job_elapsed / 60;
- print_time.seconds = recovery.info.print_job_elapsed % 60;
- print_time.hours = print_time.minutes / 60;
- }
+ else if (uiCfg.print_state == REPRINTING) {
+ uiCfg.print_state = REPRINTED;
+ lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
+ lv_label_set_text(labelPause, printing_menu.pause);
+ lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
+ // recovery.resume();
+ print_time.minutes = recovery.info.print_job_elapsed / 60;
+ print_time.seconds = recovery.info.print_job_elapsed % 60;
+ print_time.hours = print_time.minutes / 60;
+ }
#endif
}
}
@@ -127,7 +127,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
else if (event == LV_EVENT_RELEASED) {
if (gcode_preview_over != 1) {
lv_obj_del(scr);
- lv_draw_opration();
+ lv_draw_operation();
}
}
break;
@@ -146,14 +146,14 @@ void lv_draw_printing(void) {
scr = lv_obj_create(NULL, NULL);
- //static lv_style_t tool_style;
+ // static lv_style_t tool_style;
lv_obj_set_style(scr, &tft_style_scr);
lv_scr_load(scr);
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -172,74 +172,74 @@ void lv_draw_printing(void) {
#endif
buttonFanstate = lv_imgbtn_create(scr, NULL);
- buttonZpos = lv_imgbtn_create(scr, NULL);
- buttonPause = lv_imgbtn_create(scr, NULL);
- buttonStop = lv_imgbtn_create(scr, NULL);
- buttonOperat = lv_imgbtn_create(scr, NULL);
- buttonTime = lv_imgbtn_create(scr, NULL);
+ buttonZpos = lv_imgbtn_create(scr, NULL);
+ buttonPause = lv_imgbtn_create(scr, NULL);
+ buttonStop = lv_imgbtn_create(scr, NULL);
+ buttonOperat = lv_imgbtn_create(scr, NULL);
+ buttonTime = lv_imgbtn_create(scr, NULL);
- lv_obj_set_event_cb_mks(buttonExt1, event_handler, 0, "bmp_Ext1_state.bin", 0);
+ lv_obj_set_event_cb_mks(buttonExt1, event_handler, 0, "bmp_ext1_state.bin", 0);
lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_REL, &bmp_pic_45x45);
lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonExt1, LV_PROTECT_FOLLOW);
#if 1
- if (EXTRUDERS == 2) {
- lv_obj_set_event_cb_mks(buttonExt2, event_handler, 0, "bmp_Ext2_state.bin", 0);
- lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_REL, &bmp_pic_45x45);
- lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_REL, &tft_style_lable_rel);
- }
- #if HAS_HEATED_BED
- lv_obj_set_event_cb_mks(buttonBedstate, event_handler, 0, "bmp_Bed_state.bin", 0);
- lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
- lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ if (EXTRUDERS == 2) {
+ lv_obj_set_event_cb_mks(buttonExt2, event_handler, 0, "bmp_ext2_state.bin", 0);
+ lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_REL, &bmp_pic_45x45);
+ lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_PR, &bmp_pic_45x45);
+ lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+ #if HAS_HEATED_BED
+ lv_obj_set_event_cb_mks(buttonBedstate, event_handler, 0, "bmp_bed_state.bin", 0);
+ lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
+ lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
+ lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
- lv_obj_set_event_cb_mks(buttonFanstate, event_handler, 0, "bmp_Fan_state.bin", 0);
- lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
- lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
- lv_obj_set_event_cb_mks(buttonTime, event_handler, 0, "bmp_Time_state.bin", 0);
- lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_REL, &bmp_pic_45x45);
- lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
- lv_obj_set_event_cb_mks(buttonZpos, event_handler, 0, "bmp_Zpos_state.bin", 0);
- lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_REL, &bmp_pic_45x45);
- lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_PR, &bmp_pic_45x45);
- lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
- if (uiCfg.print_state == WORKING)
- lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
- else
- lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0);
-
- lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_REL, &bmp_pic_150x80);
- lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_PR, &bmp_pic_150x80);
- lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
- lv_obj_set_event_cb_mks(buttonStop, event_handler, ID_STOP, "bmp_Stop.bin", 0);
- lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_REL, &bmp_pic_150x80);
- lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_PR, &bmp_pic_150x80);
- lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
- lv_obj_set_event_cb_mks(buttonOperat, event_handler, ID_OPTION, "bmp_Operate.bin", 0);
- lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_REL, &bmp_pic_150x80);
- lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_PR, &bmp_pic_150x80);
- lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_obj_set_event_cb_mks(buttonFanstate, event_handler, 0, "bmp_fan_state.bin", 0);
+ lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
+ lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
+ lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_event_cb_mks(buttonTime, event_handler, 0, "bmp_time_state.bin", 0);
+ lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_REL, &bmp_pic_45x45);
+ lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_PR, &bmp_pic_45x45);
+ lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_event_cb_mks(buttonZpos, event_handler, 0, "bmp_zpos_state.bin", 0);
+ lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_REL, &bmp_pic_45x45);
+ lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_PR, &bmp_pic_45x45);
+ lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ if (uiCfg.print_state == WORKING)
+ lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_resume.bin", 0);
+
+ lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_REL, &bmp_pic_150x80);
+ lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_PR, &bmp_pic_150x80);
+ lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_event_cb_mks(buttonStop, event_handler, ID_STOP, "bmp_stop.bin", 0);
+ lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_REL, &bmp_pic_150x80);
+ lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_PR, &bmp_pic_150x80);
+ lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_event_cb_mks(buttonOperat, event_handler, ID_OPTION, "bmp_operate.bin", 0);
+ lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_REL, &bmp_pic_150x80);
+ lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_PR, &bmp_pic_150x80);
+ lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
lv_obj_set_pos(buttonExt1, 205, 136);
if (EXTRUDERS == 2)
@@ -272,35 +272,35 @@ void lv_draw_printing(void) {
lv_btn_set_layout(buttonOperat, LV_LAYOUT_OFF);
labelExt1 = lv_label_create(scr, NULL);
- lv_obj_set_style(labelExt1, &tft_style_lable_rel);
+ lv_obj_set_style(labelExt1, &tft_style_label_rel);
lv_obj_set_pos(labelExt1, 250, 146);
if (EXTRUDERS == 2) {
labelExt2 = lv_label_create(scr, NULL);
- lv_obj_set_style(labelExt2, &tft_style_lable_rel);
+ lv_obj_set_style(labelExt2, &tft_style_label_rel);
lv_obj_set_pos(labelExt2, 395, 146);
}
#if HAS_HEATED_BED
labelBed = lv_label_create(scr, NULL);
- lv_obj_set_style(labelBed, &tft_style_lable_rel);
+ lv_obj_set_style(labelBed, &tft_style_label_rel);
lv_obj_set_pos(labelBed, 250, 196);
#endif
labelFan = lv_label_create(scr, NULL);
- lv_obj_set_style(labelFan, &tft_style_lable_rel);
+ lv_obj_set_style(labelFan, &tft_style_label_rel);
lv_obj_set_pos(labelFan, 395, 196);
labelZpos = lv_label_create(scr, NULL);
- lv_obj_set_style(labelZpos, &tft_style_lable_rel);
+ lv_obj_set_style(labelZpos, &tft_style_label_rel);
lv_obj_set_pos(labelZpos, 395, 96);
labelTime = lv_label_create(scr, NULL);
- lv_obj_set_style(labelTime, &tft_style_lable_rel);
+ lv_obj_set_style(labelTime, &tft_style_label_rel);
lv_obj_set_pos(labelTime, 250, 96);
- labelPause = lv_label_create(buttonPause, NULL);
- labelStop = lv_label_create(buttonStop, NULL);
+ labelPause = lv_label_create(buttonPause, NULL);
+ labelStop = lv_label_create(buttonStop, NULL);
labelOperat = lv_label_create(buttonOperat, NULL);
if (gCfgItems.multiple_language != 0) {
@@ -318,11 +318,11 @@ void lv_draw_printing(void) {
}
lv_style_copy(&lv_bar_style_indic, &lv_style_pretty_color);
- lv_bar_style_indic.text.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.image.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.line.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.body.main_color = lv_color_hex3(0xADF);
- lv_bar_style_indic.body.grad_color = lv_color_hex3(0xADF);
+ lv_bar_style_indic.text.color = lv_color_hex3(0xADF);
+ lv_bar_style_indic.image.color = lv_color_hex3(0xADF);
+ lv_bar_style_indic.line.color = lv_color_hex3(0xADF);
+ lv_bar_style_indic.body.main_color = lv_color_hex3(0xADF);
+ lv_bar_style_indic.body.grad_color = lv_color_hex3(0xADF);
lv_bar_style_indic.body.border.color = lv_color_hex3(0xADF);
bar1 = lv_bar_create(scr, NULL);
@@ -340,12 +340,12 @@ void lv_draw_printing(void) {
}
void disp_ext_temp() {
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[0].celsius, (int)thermalManager.temp_hotend[0].target);
lv_label_set_text(labelExt1, public_buf_l);
if (EXTRUDERS == 2) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[1].celsius, (int)thermalManager.temp_hotend[1].target);
lv_label_set_text(labelExt2, public_buf_l);
}
@@ -353,42 +353,42 @@ void disp_ext_temp() {
void disp_bed_temp() {
#if HAS_HEATED_BED
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
sprintf(public_buf_l, printing_menu.bed_temp, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target);
lv_label_set_text(labelBed, public_buf_l);
#endif
}
void disp_fan_speed() {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "%3d", thermalManager.fan_speed[0]);
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%3d"), thermalManager.fan_speed[0]);
lv_label_set_text(labelFan, public_buf_l);
}
void disp_print_time() {
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
#if BOTH(LCD_SET_PROGRESS_MANUALLY, USE_M73_REMAINING_TIME)
const uint32_t r = ui.get_remaining_time();
- sprintf(public_buf_l, "%02d:%02d R", r / 3600, (r % 3600) / 60);
+ sprintf_P(public_buf_l, PSTR("%02d:%02d R"), r / 3600, (r % 3600) / 60);
#else
- sprintf(public_buf_l, "%d%d:%d%d:%d%d", print_time.hours / 10, print_time.hours % 10, print_time.minutes / 10, print_time.minutes % 10, print_time.seconds / 10, print_time.seconds % 10);
+ sprintf_P(public_buf_l, PSTR("%d%d:%d%d:%d%d"), print_time.hours / 10, print_time.hours % 10, print_time.minutes / 10, print_time.minutes % 10, print_time.seconds / 10, print_time.seconds % 10);
#endif
lv_label_set_text(labelTime, public_buf_l);
}
void disp_fan_Zpos() {
- memset(public_buf_l, 0, sizeof(public_buf_l));
- sprintf(public_buf_l, "%.3f", current_position[Z_AXIS]);
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.3f"), current_position[Z_AXIS]);
lv_label_set_text(labelZpos, public_buf_l);
}
void reset_print_time() {
- //print_time.days = 0;
- print_time.hours = 0;
+ // print_time.days = 0;
+ print_time.hours = 0;
print_time.minutes = 0;
print_time.seconds = 0;
- print_time.ms_10 = 0;
- //print_time.start = 1;
+ print_time.ms_10 = 0;
+ // print_time.start = 1;
}
void start_print_time() { print_time.start = 1; }
@@ -411,7 +411,7 @@ void setProBarRate() {
#endif
rate = (rate_tmp_r - (PREVIEW_SIZE + To_pre_view)) * 100 / (gCfgItems.curFilesize - (PREVIEW_SIZE + To_pre_view));
}
- //gCurFileState.totalSend = rate;
+ // gCurFileState.totalSend = rate;
if (rate <= 0) return;
@@ -440,4 +440,4 @@ void setProBarRate() {
void lv_clear_printing() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
index 31ea1f6d82b7..c987ddb0846b 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
@@ -21,12 +21,11 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "draw_ready_print.h"
#include "draw_tool.h"
#include "lv_conf.h"
-#include "lvgl.h"
//#include "../lvgl/src/lv_objx/lv_imgbtn.h"
//#include "../lvgl/src/lv_objx/lv_img.h"
//#include "../lvgl/src/lv_core/lv_disp.h"
@@ -35,11 +34,13 @@
#include "mks_hardware_test.h"
#include "draw_ui.h"
-#include
+#include
#include "../../../../MarlinCore.h"
#include "../../../../module/temperature.h"
+#include
+
//static lv_obj_t *buttonPrint,*buttonTool,*buttonSet;
static lv_obj_t * scr;
#if ENABLED(MKS_TEST)
@@ -57,9 +58,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
// nothing to do
}
else if (event == LV_EVENT_RELEASED) {
- #if ENABLED(MKS_TEST)
- curent_disp_ui = 2;
- #endif
+
lv_obj_del(scr);
lv_draw_tool();
}
@@ -85,203 +84,222 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
+lv_obj_t *limit_info, *det_info;
+lv_style_t limit_style, det_style;
+void disp_Limit_ok() {
+ limit_style.text.color.full = 0xFFFF;
+ lv_obj_set_style(limit_info, &limit_style);
+ lv_label_set_text(limit_info, "Limit:ok");
+}
+void disp_Limit_error() {
+ limit_style.text.color.full = 0xF800;
+ lv_obj_set_style(limit_info, &limit_style);
+ lv_label_set_text(limit_info, "Limit:error");
+}
-#if ENABLED(MKS_TEST)
-
- lv_obj_t *limit_info, *det_info;
- lv_style_t limit_style, det_style;
- void disp_Limit_ok() {
- limit_style.text.color.full = 0xFFFF;
- lv_obj_set_style(limit_info, &limit_style);
- lv_label_set_text(limit_info, "Limit:ok");
- }
- void disp_Limit_error() {
- limit_style.text.color.full = 0xF800;
- lv_obj_set_style(limit_info, &limit_style);
- lv_label_set_text(limit_info, "Limit:error");
- }
-
- void disp_det_ok() {
- det_style.text.color.full = 0xFFFF;
- lv_obj_set_style(det_info, &det_style);
- lv_label_set_text(det_info, "det:ok");
- }
- void disp_det_error() {
- det_style.text.color.full = 0xF800;
- lv_obj_set_style(det_info, &det_style);
- lv_label_set_text(det_info, "det:error");
- }
+void disp_det_ok() {
+ det_style.text.color.full = 0xFFFF;
+ lv_obj_set_style(det_info, &det_style);
+ lv_label_set_text(det_info, "det:ok");
+}
+void disp_det_error() {
+ det_style.text.color.full = 0xF800;
+ lv_obj_set_style(det_info, &det_style);
+ lv_label_set_text(det_info, "det:error");
+}
- lv_obj_t *e1, *e2, *e3, *bed;
- void disp_test() {
- char buf[30] = {0};
- //lv_obj_t * label_tool2 = lv_label_create(scr, NULL);
- //lv_obj_set_pos(label_tool,20,50);
- memset(buf, 0, sizeof(buf));
- sprintf(buf, "e1:%d", (int)thermalManager.temp_hotend[0].celsius);
- lv_label_set_text(e1, buf);
-
- memset(buf, 0, sizeof(buf));
- sprintf(buf, "e2:%d", (int)thermalManager.temp_hotend[1].celsius);
+lv_obj_t *e1, *e2, *e3, *bed;
+void mks_disp_test() {
+ char buf[30] = {0};
+ //lv_obj_t * label_tool2 = lv_label_create(scr, NULL);
+ //lv_obj_set_pos(label_tool,20,50);
+ ZERO(buf);
+ sprintf_P(buf, PSTR("e1:%d"), (int)thermalManager.temp_hotend[0].celsius);
+ lv_label_set_text(e1, buf);
+ #if HAS_MULTI_HOTEND
+ ZERO(buf);
+ sprintf_P(buf, PSTR("e2:%d"), (int)thermalManager.temp_hotend[1].celsius);
lv_label_set_text(e2, buf);
-
- memset(buf, 0, sizeof(buf));
- sprintf(buf, "e3:%d", (int)thermalManager.temp_hotend[2].celsius);
- lv_label_set_text(e3, buf);
-
- memset(buf, 0, sizeof(buf));
- sprintf(buf, "bed:%d", (int)thermalManager.temp_bed.celsius);
+ #endif
+
+ //ZERO(buf);
+ //sprintf_P(buf, PSTR("e3:%d"), (int)thermalManager.temp_hotend[2].celsius);
+ //lv_label_set_text(e3, buf);
+ #if HAS_HEATED_BED
+ ZERO(buf);
+ sprintf_P(buf, PSTR("bed:%d"), (int)thermalManager.temp_bed.celsius);
lv_label_set_text(bed, buf);
- }
-
-#endif // MKS_TEST
+ #endif
+}
+extern unsigned char bmp_public_buf[17 * 1024];
void lv_draw_ready_print(void) {
- #if ENABLED(MKS_TEST)
- char buf[30] = {0};
- lv_obj_t *buttonTool;
+ char buf[30] = {0};
+ lv_obj_t *buttonPrint, *buttonTool, *buttonSet;
- static lv_style_t style_pr, style_rel;
+ disp_state_stack._disp_index = 0;
+ ZERO(disp_state_stack._disp_state);
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_READY_UI;
- curent_disp_ui = 1;
+ disp_state = PRINT_READY_UI;
- scr = lv_obj_create(NULL, NULL);
+ scr = lv_obj_create(NULL, NULL);
- static lv_style_t ready_style;
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+ //lv_obj_set_hidden(scr,true);
+ lv_refr_now(lv_refr_get_disp_refreshing());
- lv_style_copy(&ready_style, &lv_style_scr);
- //ready_style.body.main_color.full = 0X18C3;
- //ready_style.body.grad_color.full = 0X18C3;
- ready_style.body.main_color.full = 0X0000;
- ready_style.body.grad_color.full = 0X0000;
- ready_style.text.color.full = 0Xffff;
- lv_obj_set_style(scr, &ready_style);
- lv_scr_load(scr);
- lv_obj_clean(scr);
- //lv_obj_set_hidden(scr,true);
- lv_refr_now(lv_refr_get_disp_refreshing());
+ LV_IMG_DECLARE(bmp_pic);
- LV_IMG_DECLARE(bmp_pic);
- //LV_IMG_DECLARE(bmp_pic2);
- //LV_IMG_DECLARE(bmp_pic3);
-
- //scr = lv_obj_create(NULL, NULL);
- //lv_scr_load(scr);
+ if (mks_test_flag == 0x1e) {
+ //lv_obj_t * title = lv_label_create(scr, NULL);
+ //lv_obj_set_style(title, &tft_style_label_rel);
+ //lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
+ //lv_label_set_text(title, creat_title_text());
/*Create an Image button*/
+ //buttonPrint = lv_imgbtn_create(scr, NULL);
buttonTool = lv_imgbtn_create(scr, NULL);
+ //buttonSet = lv_imgbtn_create(scr, NULL);
- //lv_btn_setting(&style_pr,0x5d8f16,0x5d8f16);
- //lv_btn_setting(&style_rel,0x5d8f16,0x5d8f16);
+ //lv_obj_set_event_cb_mks(buttonPrint, event_handler,ID_PRINT,"bmp_printing.bin",0);
+ //lv_imgbtn_set_src_mks(buttonPrint, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_printing.bin");
+ //lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_REL, &bmp_pic);
+ //lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_PR, &bmp_pic);
+ //lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_label_rel);
+ //lv_obj_clear_protect(buttonPrint, LV_PROTECT_FOLLOW);
+
+ #if 1
+ //lv_obj_set_event_cb_mks(buttonSet, event_handler,ID_SET,"bmp_set.bin",0);
+ //lv_imgbtn_set_src_mks(buttonSet, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_set.bin");
+ //lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_REL, &bmp_pic);
+ //lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_PR, &bmp_pic);
+ //lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonTool, event_handler, 3, "bmp_Tool.bin", 0);
- //lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
- lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
- lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &style_pr);
- lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &style_rel);
+ lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_tool.bin", 0);
+ //lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
+ lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
+ lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
+ lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
lv_obj_set_pos(buttonTool, 360, 180);
+ //lv_obj_set_pos(buttonSet,180,90);
+ //lv_obj_set_pos(buttonPrint,340,90);
+ //lv_obj_set_pos(buttonTool,SIMPLE_FIRST_PAGE_GRAP+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+ //lv_obj_set_pos(buttonSet,BTN_X_PIXEL+SIMPLE_FIRST_PAGE_GRAP*2+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+ //lv_obj_set_pos(buttonPrint,BTN_X_PIXEL*2+SIMPLE_FIRST_PAGE_GRAP*3+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+
+ /*Create a label on the Image button*/
+ //lv_btn_set_layout(buttonPrint, LV_LAYOUT_OFF);
+ //lv_btn_set_layout(buttonSet, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF);
+ //lv_obj_t * label_print = lv_label_create(buttonPrint, NULL);
+ //lv_obj_t * label_set = lv_label_create(buttonSet, NULL);
lv_obj_t * label_tool = lv_label_create(buttonTool, NULL);
+ if (gCfgItems.multiple_language != 0) {
+ //lv_label_set_text(label_print, main_menu.print);
+ //lv_obj_align(label_print, buttonPrint, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
- lv_obj_set_pos(label_tool, 30, 100);
- lv_label_set_text(label_tool, "Back");
-
- e1 = lv_label_create(scr, NULL);
- lv_obj_set_pos(e1, 20, 20);
- sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[0].celsius);
- lv_label_set_text(e1, buf);
-
- e2 = lv_label_create(scr, NULL);
- lv_obj_set_pos(e2, 20, 45);
- sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[1].celsius);
- lv_label_set_text(e2, buf);
-
- e3 = lv_label_create(scr, NULL);
- lv_obj_set_pos(e3, 20, 70);
- sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[2].celsius);
- lv_label_set_text(e3, buf);
-
- bed = lv_label_create(scr, NULL);
- lv_obj_set_pos(bed, 20, 95);
- sprintf(buf, "bed: %d", (int)thermalManager.temp_bed.celsius);
- lv_label_set_text(bed, buf);
-
- limit_info = lv_label_create(scr, NULL);
-
- lv_style_copy(&limit_style, &lv_style_scr);
- limit_style.body.main_color.full = 0X0000;
- limit_style.body.grad_color.full = 0X0000;
- limit_style.text.color.full = 0Xffff;
- lv_obj_set_style(limit_info, &limit_style);
-
- lv_obj_set_pos(limit_info, 20, 120);
- lv_label_set_text(limit_info, " ");
-
- det_info = lv_label_create(scr, NULL);
-
- lv_style_copy(&det_style, &lv_style_scr);
- det_style.body.main_color.full = 0X0000;
- det_style.body.grad_color.full = 0X0000;
- det_style.text.color.full = 0Xffff;
- lv_obj_set_style(det_info, &det_style);
-
- lv_obj_set_pos(det_info, 20, 145);
- lv_label_set_text(det_info, " ");
- #else // !MKS_TEST
- lv_obj_t *buttonPrint, *buttonTool, *buttonSet;
-
- disp_state_stack._disp_index = 0;
- memset(disp_state_stack._disp_state, 0, sizeof(disp_state_stack._disp_state));
- disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_READY_UI;
-
- disp_state = PRINT_READY_UI;
-
- scr = lv_obj_create(NULL, NULL);
+ //lv_label_set_text(label_set, main_menu.set);
+ //lv_obj_align(label_set, buttonSet, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
- lv_obj_set_style(scr, &tft_style_scr);
- lv_scr_load(scr);
- lv_obj_clean(scr);
- //lv_obj_set_hidden(scr,true);
- lv_refr_now(lv_refr_get_disp_refreshing());
+ //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_label_pre);
+ //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_label_rel);
+ lv_label_set_text(label_tool, main_menu.tool);
+ lv_obj_align(label_tool, buttonTool, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+ }
- LV_IMG_DECLARE(bmp_pic);
+ #if 1
+ e1 = lv_label_create(scr, NULL);
+ lv_obj_set_pos(e1, 20, 20);
+ sprintf_P(buf, PSTR("e1: %d"), (int)thermalManager.temp_hotend[0].celsius);
+ lv_label_set_text(e1, buf);
+ #if HAS_MULTI_HOTEND
+ e2 = lv_label_create(scr, NULL);
+ lv_obj_set_pos(e2, 20, 45);
+ sprintf_P(buf, PSTR("e1: %d"), (int)thermalManager.temp_hotend[1].celsius);
+ lv_label_set_text(e2, buf);
+ #endif
+
+ //e3 = lv_label_create(scr, NULL);
+ //lv_obj_set_pos(e3,20,70);
+ //sprintf_P(buf, PSTR("e1: %d"), (int)thermalManager.temp_hotend[2].celsius);
+ //lv_label_set_text(e3, buf);
+
+ #if HAS_HEATED_BED
+ bed = lv_label_create(scr, NULL);
+ lv_obj_set_pos(bed, 20, 95);
+ sprintf_P(buf, PSTR("bed: %d"), (int)thermalManager.temp_bed.celsius);
+ lv_label_set_text(bed, buf);
+ #endif
+
+ limit_info = lv_label_create(scr, NULL);
+
+ lv_style_copy(&limit_style, &lv_style_scr);
+ limit_style.body.main_color.full = 0X0000;
+ limit_style.body.grad_color.full = 0X0000;
+ limit_style.text.color.full = 0Xffff;
+ lv_obj_set_style(limit_info, &limit_style);
+
+ lv_obj_set_pos(limit_info, 20, 120);
+ lv_label_set_text(limit_info, " ");
+
+ det_info = lv_label_create(scr, NULL);
+
+ lv_style_copy(&det_style, &lv_style_scr);
+ det_style.body.main_color.full = 0X0000;
+ det_style.body.grad_color.full = 0X0000;
+ det_style.text.color.full = 0Xffff;
+ lv_obj_set_style(det_info, &det_style);
+
+ lv_obj_set_pos(det_info, 20, 145);
+ lv_label_set_text(det_info, " ");
+ #endif // if 1
+ }
+ else {
//lv_obj_t * title = lv_label_create(scr, NULL);
- //lv_obj_set_style(title, &tft_style_lable_rel);
+ //lv_obj_set_style(title, &tft_style_label_rel);
//lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
//lv_label_set_text(title, creat_title_text());
/*Create an Image button*/
buttonPrint = lv_imgbtn_create(scr, NULL);
- buttonTool = lv_imgbtn_create(scr, NULL);
- buttonSet = lv_imgbtn_create(scr, NULL);
+ buttonTool = lv_imgbtn_create(scr, NULL);
+ buttonSet = lv_imgbtn_create(scr, NULL);
lv_obj_set_event_cb_mks(buttonPrint, event_handler, ID_PRINT, "bmp_printing.bin", 0);
//lv_imgbtn_set_src_mks(buttonPrint, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_printing.bin");
lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonPrint, LV_PROTECT_FOLLOW);
+
#if 1
- lv_obj_set_event_cb_mks(buttonSet, event_handler, ID_SET, "bmp_Set.bin", 0);
+ lv_obj_set_event_cb_mks(buttonSet, event_handler, ID_SET, "bmp_set.bin", 0);
//lv_imgbtn_set_src_mks(buttonSet, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_set.bin");
lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_Tool.bin", 0);
+ lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_tool.bin", 0);
//lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
+
lv_obj_set_pos(buttonTool, 20, 90);
lv_obj_set_pos(buttonSet, 180, 90);
lv_obj_set_pos(buttonPrint, 340, 90);
@@ -296,24 +314,23 @@ void lv_draw_ready_print(void) {
lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF);
lv_obj_t * label_print = lv_label_create(buttonPrint, NULL);
- lv_obj_t * label_set = lv_label_create(buttonSet, NULL);
- lv_obj_t * label_tool = lv_label_create(buttonTool, NULL);
+ lv_obj_t * label_set = lv_label_create(buttonSet, NULL);
+ lv_obj_t * label_tool = lv_label_create(buttonTool, NULL);
if (gCfgItems.multiple_language != 0) {
-
lv_label_set_text(label_print, main_menu.print);
lv_obj_align(label_print, buttonPrint, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
lv_label_set_text(label_set, main_menu.set);
lv_obj_align(label_set, buttonSet, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
- //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_lable_pre);
- //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_lable_rel);
+ //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_label_pre);
+ //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_label_rel);
lv_label_set_text(label_tool, main_menu.tool);
lv_obj_align(label_tool, buttonTool, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
}
- #endif // !MKS_TEST
+ }
}
void lv_clear_ready_print() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
index 742fffe331c5..9951beaa4172 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
@@ -26,7 +26,7 @@ extern "C" { /* C-declarations for C++ */
#endif
extern void lv_draw_ready_print(void);
-extern void disp_test();
+extern void mks_disp_test();
extern void disp_Limit_ok();
extern void disp_Limit_error();
extern void disp_det_error();
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
index 6c7f83405b59..eebb9fcf1c43 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "draw_ready_print.h"
@@ -37,13 +37,15 @@
static lv_obj_t * scr;
-#define ID_S_WIFI 1
-#define ID_S_FAN 2
-#define ID_S_ABOUT 3
-#define ID_S_CONTINUE 4
-#define ID_S_MOTOR_OFF 5
-#define ID_S_LANGUAGE 6
-#define ID_S_RETURN 7
+#define ID_S_WIFI 1
+#define ID_S_FAN 2
+#define ID_S_ABOUT 3
+#define ID_S_CONTINUE 4
+#define ID_S_MOTOR_OFF 5
+#define ID_S_LANGUAGE 6
+#define ID_S_MACHINE_PARA 7
+#define ID_S_EEPROM_SET 8
+#define ID_S_RETURN 9
static void event_handler(lv_obj_t * obj, lv_event_t event) {
switch (obj->mks_obj_id) {
@@ -83,7 +85,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
#if HAS_SUICIDE
suicide();
#else
- queue.enqueue_one_now(PSTR("M84"));
+ queue.enqueue_now_P(PSTR("M84"));
#endif
}
break;
@@ -96,6 +98,24 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
lv_draw_language();
}
break;
+ case ID_S_MACHINE_PARA:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_obj_del(scr);
+ lv_draw_machine_para();
+ }
+ break;
+ case ID_S_EEPROM_SET:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ lv_obj_del(scr);
+ lv_draw_eeprom_settings();
+ }
+ break;
case ID_S_RETURN:
if (event == LV_EVENT_CLICKED) {
// nothing to do
@@ -115,6 +135,8 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
lv_obj_t *buttonLanguage;
#endif
+ lv_obj_t *buttonMachinePara;
+ lv_obj_t *buttonEepromSet;
if (disp_state_stack._disp_state[disp_state_stack._disp_index] != SET_UI) {
disp_state_stack._disp_index++;
@@ -131,7 +153,7 @@ void lv_draw_set(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -141,72 +163,84 @@ void lv_draw_set(void) {
/*Create an Image button*/
//buttonWifi = lv_imgbtn_create(scr, NULL);
- buttonFan = lv_imgbtn_create(scr, NULL);
+ buttonFan = lv_imgbtn_create(scr, NULL);
buttonAbout = lv_imgbtn_create(scr, NULL);
//buttonContinue = lv_imgbtn_create(scr, NULL);
buMotorOff = lv_imgbtn_create(scr, NULL);
#if HAS_LANG_SELECT_SCREEN
buttonLanguage = lv_imgbtn_create(scr, NULL);
#endif
- buttonBack = lv_imgbtn_create(scr, NULL);
+ buttonMachinePara = lv_imgbtn_create(scr, NULL);
+ buttonEepromSet = lv_imgbtn_create(scr, NULL);
+ buttonBack = lv_imgbtn_create(scr, NULL);
//lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
#if 1
- lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_S_FAN, "bmp_Fan.bin", 0);
+ lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_S_FAN, "bmp_fan.bin", 0);
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonAbout, event_handler, ID_S_ABOUT, "bmp_About.bin", 0);
+ lv_obj_set_event_cb_mks(buttonAbout, event_handler, ID_S_ABOUT, "bmp_about.bin", 0);
lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_label_rel);
#if HAS_SUICIDE
- lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_manual_off.bin", 0);
+ lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_Mamual.bin", 0);
#else
- lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_manual_off.bin", 0);
+ lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_function1.bin", 0);
#endif
lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_REL, &tft_style_label_rel);
#if HAS_LANG_SELECT_SCREEN
- lv_obj_set_event_cb_mks(buttonLanguage, event_handler, ID_S_LANGUAGE, "bmp_Language.bin", 0);
+ lv_obj_set_event_cb_mks(buttonLanguage, event_handler, ID_S_LANGUAGE, "bmp_language.bin", 0);
lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_REL, &tft_style_label_rel);
#endif
-
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_S_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonMachinePara, event_handler, ID_S_MACHINE_PARA, "bmp_machine_para.bin", 0);
+ lv_imgbtn_set_src(buttonMachinePara, LV_BTN_STATE_REL, &bmp_pic);
+ lv_imgbtn_set_src(buttonMachinePara, LV_BTN_STATE_PR, &bmp_pic);
+ lv_imgbtn_set_style(buttonMachinePara, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMachinePara, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_event_cb_mks(buttonEepromSet, event_handler, ID_S_EEPROM_SET, "bmp_eeprom_settings.bin", 0);
+ lv_imgbtn_set_src(buttonEepromSet, LV_BTN_STATE_REL, &bmp_pic);
+ lv_imgbtn_set_src(buttonEepromSet, LV_BTN_STATE_PR, &bmp_pic);
+ lv_imgbtn_set_style(buttonEepromSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonEepromSet, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_S_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
/*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight);
lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight);
lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
- lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+ lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
+ lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
//lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
lv_obj_set_pos(buttonFan, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
@@ -216,7 +250,9 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
lv_obj_set_pos(buttonLanguage, INTERVAL_V, titleHeight);
#endif
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonMachinePara, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonEepromSet, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
//lv_btn_set_layout(buttonWifi, LV_LAYOUT_OFF);
@@ -227,18 +263,21 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
lv_btn_set_layout(buttonLanguage, LV_LAYOUT_OFF);
#endif
+ lv_btn_set_layout(buttonMachinePara, LV_LAYOUT_OFF);
+ lv_btn_set_layout(buttonEepromSet, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
//lv_obj_t * labelWifi= lv_label_create(buttonWifi, NULL);
- lv_obj_t * labelFan = lv_label_create(buttonFan, NULL);
+ lv_obj_t * labelFan = lv_label_create(buttonFan, NULL);
lv_obj_t * label_About = lv_label_create(buttonAbout, NULL);
//lv_obj_t * label_Continue = lv_label_create(buttonContinue, NULL);
lv_obj_t * label_MotorOff = lv_label_create(buMotorOff, NULL);
#if HAS_LANG_SELECT_SCREEN
lv_obj_t * label_Language = lv_label_create(buttonLanguage, NULL);
#endif
- lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
-
+ lv_obj_t * label_MachinePara = lv_label_create(buttonMachinePara, NULL);
+ lv_obj_t * label_EepromSet = lv_label_create(buttonEepromSet, NULL);
+ lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
if (gCfgItems.multiple_language != 0) {
//lv_label_set_text(labelWifi, set_menu.wifi);
@@ -263,6 +302,11 @@ void lv_draw_set(void) {
lv_label_set_text(label_Language, set_menu.language);
lv_obj_align(label_Language, buttonLanguage, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
#endif
+ lv_label_set_text(label_MachinePara, set_menu.machine_para);
+ lv_obj_align(label_MachinePara, buttonMachinePara, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+
+ lv_label_set_text(label_EepromSet, set_menu.eepromSet);
+ lv_obj_align(label_EepromSet, buttonEepromSet, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
lv_label_set_text(label_Back, common_menu.text_back);
lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -271,4 +315,4 @@ void lv_draw_set(void) {
void lv_clear_set() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp
new file mode 100644
index 000000000000..434c2f85795a
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp
@@ -0,0 +1,358 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_STEP_RETURN 1
+#define ID_STEP_X 2
+#define ID_STEP_Y 3
+#define ID_STEP_Z 4
+#define ID_STEP_E0 5
+#define ID_STEP_E1 6
+#define ID_STEP_DOWN 7
+#define ID_STEP_UP 8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_STEP_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_step_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_STEP_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Xstep;
+ lv_clear_step_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_STEP_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Ystep;
+ lv_clear_step_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_STEP_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Zstep;
+ lv_clear_step_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_STEP_E0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E0step;
+ lv_clear_step_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_STEP_E1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E1step;
+ lv_clear_step_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_STEP_UP:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_step_settings();
+ lv_draw_step_settings();
+ }
+ break;
+ case ID_STEP_DOWN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 1;
+ lv_clear_step_settings();
+ lv_draw_step_settings();
+ }
+ break;
+ }
+}
+
+void lv_draw_step_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+ lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+ lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != STEPS_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = STEPS_UI;
+ }
+ disp_state = STEPS_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.StepsConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ if (uiCfg.para_ui_page != 1) {
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_STEP_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_STEP_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_STEP_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonE0Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE0Text, event_handler);
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+ labelE0Text = lv_label_create(buttonE0Text, NULL); /*Add a label to the button*/
+
+ buttonE0Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_STEP_E0, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+ labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_STEP_DOWN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+ else {
+ buttonE1Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE1Text, event_handler);
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+ labelE1Text = lv_label_create(buttonE1Text, NULL); /*Add a label to the button*/
+
+ buttonE1Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_STEP_E1, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+ labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_STEP_UP, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ }
+
+ lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+ lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+ labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_STEP_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ if (uiCfg.para_ui_page != 1) {
+ lv_label_set_text(labelXText, machine_menu.X_Steps);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.Y_Steps);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.Z_Steps);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE0Text, machine_menu.E0_Steps);
+ lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.next);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[X_AXIS]);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Y_AXIS]);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Z_AXIS]);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS]);
+ lv_label_set_text(labelE0Value, public_buf_l);
+ lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+ }
+ else {
+ lv_label_set_text(labelE1Text, machine_menu.E1_Steps);
+ lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.previous);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS_N(1)]);
+ lv_label_set_text(labelE1Value, public_buf_l);
+ lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+ }
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_step_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h
new file mode 100644
index 000000000000..1a5efda40825
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_step_settings(void);
+extern void lv_clear_step_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp
new file mode 100644
index 000000000000..f1559e0f553e
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp
@@ -0,0 +1,385 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_TRINAMIC_CONFIG)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+#include "../../../../module/stepper/indirection.h"
+#include "../../../../feature/tmc_util.h"
+
+static lv_obj_t * scr;
+
+#define ID_TMC_CURRENT_RETURN 1
+#define ID_TMC_CURRENT_X 2
+#define ID_TMC_CURRENT_Y 3
+#define ID_TMC_CURRENT_Z 4
+#define ID_TMC_CURRENT_E0 5
+#define ID_TMC_CURRENT_E1 6
+#define ID_TMC_CURRENT_DOWN 7
+#define ID_TMC_CURRENT_UP 8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_TMC_CURRENT_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_tmc_current_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_TMC_CURRENT_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Xcurrent;
+ lv_clear_tmc_current_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_TMC_CURRENT_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Ycurrent;
+ lv_clear_tmc_current_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_TMC_CURRENT_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = Zcurrent;
+ lv_clear_tmc_current_settings();
+ lv_draw_number_key();
+ }
+ break;
+ case ID_TMC_CURRENT_E0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E0current;
+ lv_clear_tmc_current_settings();
+ lv_draw_number_key();
+ }
+ break;
+ #if AXIS_IS_TMC(E1)
+ case ID_TMC_CURRENT_E1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ value = E1current;
+ lv_clear_tmc_current_settings();
+ lv_draw_number_key();
+ }
+ break;
+
+ case ID_TMC_CURRENT_UP:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_tmc_current_settings();
+ lv_draw_tmc_current_settings();
+ }
+ break;
+ case ID_TMC_CURRENT_DOWN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 1;
+ lv_clear_tmc_current_settings();
+ lv_draw_tmc_current_settings();
+ }
+ break;
+ #endif
+ }
+}
+
+void lv_draw_tmc_current_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+ lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ #if AXIS_IS_TMC(E1)
+ lv_obj_t *buttonTurnPage = NULL, *labelTurnPage = NULL;
+ lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+ #endif
+ float milliamps;
+
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != TMC_CURRENT_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = TMC_CURRENT_UI;
+ }
+ disp_state = TMC_CURRENT_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.TmcCurrentConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ // LV_IMG_DECLARE(bmp_para_arrow);
+ LV_IMG_DECLARE(bmp_para_bank);
+
+ if (uiCfg.para_ui_page != 1) {
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_TMC_CURRENT_X, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+ labelXValue = lv_label_create(buttonXValue, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_TMC_CURRENT_Y, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+ labelYValue = lv_label_create(buttonYValue, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZValue = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_TMC_CURRENT_Z, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+ labelZValue = lv_label_create(buttonZValue, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonE0Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE0Text, event_handler);
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+ labelE0Text = lv_label_create(buttonE0Text, NULL); /*Add a label to the button*/
+
+ buttonE0Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_TMC_CURRENT_E0, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+ labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ #if AXIS_IS_TMC(E1)
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_CURRENT_DOWN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
+ }
+ else {
+ #if AXIS_IS_TMC(E1)
+ buttonE1Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE1Text, event_handler);
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+ labelE1Text = lv_label_create(buttonE1Text, NULL); /*Add a label to the button*/
+
+ buttonE1Value = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+ lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_TMC_CURRENT_E1, "bmp_value_blank.bin", 0);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+ lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+ lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+ lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+ labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_CURRENT_UP, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
+ }
+ #if AXIS_IS_TMC(E1)
+ lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+ lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+ labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+ #endif
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_TMC_CURRENT_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ if (uiCfg.para_ui_page != 1) {
+ lv_label_set_text(labelXText, machine_menu.X_Current);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.Y_Current);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.Z_Current);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE0Text, machine_menu.E0_Current);
+ lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #if AXIS_IS_TMC(E1)
+ lv_label_set_text(labelTurnPage, machine_menu.next);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ #if AXIS_IS_TMC(X)
+ milliamps = stepperX.getMilliamps();
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+ lv_label_set_text(labelXValue, public_buf_l);
+ lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ #if AXIS_IS_TMC(Y)
+ milliamps = stepperY.getMilliamps();
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+ lv_label_set_text(labelYValue, public_buf_l);
+ lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ #if AXIS_IS_TMC(Z)
+ milliamps = stepperZ.getMilliamps();
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+ lv_label_set_text(labelZValue, public_buf_l);
+ lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ #if AXIS_IS_TMC(E0)
+ milliamps = stepperE0.getMilliamps();
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+ lv_label_set_text(labelE0Value, public_buf_l);
+ lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ }
+ else {
+ #if AXIS_IS_TMC(E1)
+ lv_label_set_text(labelE1Text, machine_menu.E1_Current);
+ lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.previous);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ milliamps = stepperE1.getMilliamps();
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+ lv_label_set_text(labelE1Value, public_buf_l);
+ lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ }
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_tmc_current_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_TRINAMIC_CONFIG
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h
new file mode 100644
index 000000000000..46463dd3c6d1
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h
@@ -0,0 +1,34 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_tmc_current_settings(void);
+extern void lv_clear_tmc_current_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
+
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp
new file mode 100644
index 000000000000..b0d40fde28db
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp
@@ -0,0 +1,478 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_STEALTHCHOP)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+#include "../../../../module/stepper/indirection.h"
+#include "../../../../feature/tmc_util.h"
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_TMC_MODE_RETURN 1
+#define ID_TMC_MODE_X 2
+#define ID_TMC_MODE_Y 3
+#define ID_TMC_MODE_Z 4
+#define ID_TMC_MODE_E0 5
+#define ID_TMC_MODE_E1 6
+#define ID_TMC_MODE_DOWN 7
+#define ID_TMC_MODE_UP 8
+
+static lv_obj_t *labelXState = NULL, *labelYState = NULL, *labelZState = NULL, *labelE0State = NULL;
+static lv_obj_t *buttonXState = NULL, *buttonYState = NULL, *buttonZState = NULL, *buttonE0State = NULL;
+
+#if AXIS_HAS_STEALTHCHOP(E1)
+ static lv_obj_t *labelE1State = NULL, *buttonE1State = NULL;
+#endif
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+ switch (obj->mks_obj_id) {
+ case ID_TMC_MODE_RETURN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_tmc_step_mode_settings();
+ draw_return_ui();
+ }
+ break;
+ case ID_TMC_MODE_X:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (stepperX.stored.stealthChop_enabled == true) {
+ stepperX.stored.stealthChop_enabled = false;
+ stepperX.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_disable.bin", 0);
+ lv_label_set_text(labelXState, machine_menu.disable);
+ //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+ // gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ else {
+ stepperX.stored.stealthChop_enabled = true;
+ stepperX.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_enable.bin", 0);
+ lv_label_set_text(labelXState, machine_menu.enable);
+ // gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ break;
+ case ID_TMC_MODE_Y:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (stepperY.stored.stealthChop_enabled == true) {
+ stepperY.stored.stealthChop_enabled = false;
+ stepperY.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_disable.bin", 0);
+ lv_label_set_text(labelYState, machine_menu.disable);
+ //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+ }
+ else {
+ stepperY.stored.stealthChop_enabled = true;
+ stepperY.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_enable.bin", 0);
+ lv_label_set_text(labelYState, machine_menu.enable);
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ break;
+ case ID_TMC_MODE_Z:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (stepperZ.stored.stealthChop_enabled == true) {
+ stepperZ.stored.stealthChop_enabled = false;
+ stepperZ.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_disable.bin", 0);
+ lv_label_set_text(labelZState, machine_menu.disable);
+ //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+ }
+ else {
+ stepperZ.stored.stealthChop_enabled = true;
+ stepperZ.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_enable.bin", 0);
+ lv_label_set_text(labelZState, machine_menu.enable);
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ break;
+ case ID_TMC_MODE_E0:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (stepperE0.stored.stealthChop_enabled == true) {
+ stepperE0.stored.stealthChop_enabled = false;
+ stepperE0.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_disable.bin", 0);
+ lv_label_set_text(labelE0State, machine_menu.disable);
+ //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+ }
+ else {
+ stepperE0.stored.stealthChop_enabled = true;
+ stepperE0.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_enable.bin", 0);
+ lv_label_set_text(labelE0State, machine_menu.enable);
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ break;
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ case ID_TMC_MODE_E1:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ if (stepperE1.stored.stealthChop_enabled == true) {
+ stepperE1.stored.stealthChop_enabled = false;
+ stepperE1.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_disable.bin", 0);
+ lv_label_set_text(labelE1State, machine_menu.disable);
+ //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+ }
+ else {
+ stepperE1.stored.stealthChop_enabled = true;
+ stepperE1.refresh_stepping_mode();
+ lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_enable.bin", 0);
+ lv_label_set_text(labelE1State, machine_menu.enable);
+ }
+ gcode.process_subcommands_now_P(PSTR("M500"));
+ }
+ break;
+
+ case ID_TMC_MODE_UP:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 0;
+ lv_clear_tmc_step_mode_settings();
+ lv_draw_tmc_step_mode_settings();
+ }
+ break;
+ case ID_TMC_MODE_DOWN:
+ if (event == LV_EVENT_CLICKED) {
+
+ }
+ else if (event == LV_EVENT_RELEASED) {
+ uiCfg.para_ui_page = 1;
+ lv_clear_tmc_step_mode_settings();
+ lv_draw_tmc_step_mode_settings();
+ }
+ break;
+ #endif // if AXIS_HAS_STEALTHCHOP(E1)
+ }
+}
+
+void lv_draw_tmc_step_mode_settings(void) {
+ lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+ lv_obj_t *buttonXText = NULL, *labelXText = NULL;
+ lv_obj_t *buttonYText = NULL, *labelYText = NULL;
+ lv_obj_t *buttonZText = NULL, *labelZText = NULL;
+ lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL;
+
+ lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ lv_obj_t *buttonTurnPage = NULL, *labelTurnPage = NULL;
+ lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL;
+ #endif
+
+
+ labelXState = NULL;
+ buttonXState = NULL;
+ labelYState = NULL;
+ buttonYState = NULL;
+ labelZState = NULL;
+ buttonZState = NULL;
+ labelE0State = NULL;
+ buttonE0State = NULL;
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ labelE1State = NULL;
+ buttonE1State = NULL;
+ #endif
+
+ if (disp_state_stack._disp_state[disp_state_stack._disp_index] != TMC_MODE_UI) {
+ disp_state_stack._disp_index++;
+ disp_state_stack._disp_state[disp_state_stack._disp_index] = TMC_MODE_UI;
+ }
+ disp_state = TMC_MODE_UI;
+
+ scr = lv_obj_create(NULL, NULL);
+
+ lv_obj_set_style(scr, &tft_style_scr);
+ lv_scr_load(scr);
+ lv_obj_clean(scr);
+
+ lv_obj_t * title = lv_label_create(scr, NULL);
+ lv_obj_set_style(title, &tft_style_label_rel);
+ lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+ lv_label_set_text(title, machine_menu.TmcStepModeConfTitle);
+
+ lv_refr_now(lv_refr_get_disp_refreshing());
+
+ LV_IMG_DECLARE(bmp_para_back);
+ LV_IMG_DECLARE(bmp_para_state);
+ // LV_IMG_DECLARE(bmp_para_bank);
+
+ if (uiCfg.para_ui_page != 1) {
+ buttonXText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonXText, event_handler);
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+ labelXText = lv_label_create(buttonXText, NULL); /*Add a label to the button*/
+
+ buttonXState = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonXState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y + PARA_UI_STATE_V);
+ if (stepperX.get_stealthChop_status())
+ lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_enable.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_disable.bin", 0);
+ lv_imgbtn_set_src(buttonXState, LV_BTN_STATE_REL, &bmp_para_state);
+ lv_imgbtn_set_src(buttonXState, LV_BTN_STATE_PR, &bmp_para_state);
+ lv_imgbtn_set_style(buttonXState, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonXState, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonXState, LV_LAYOUT_OFF);
+ labelXState = lv_label_create(buttonXState, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonYText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2); /*Set its position*/
+ lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonYText, event_handler);
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+ labelYText = lv_label_create(buttonYText, NULL); /*Add a label to the button*/
+
+ buttonYState = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonYState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_STATE_V);
+ if (stepperY.get_stealthChop_status())
+ lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_enable.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_disable.bin", 0);
+ lv_imgbtn_set_src(buttonYState, LV_BTN_STATE_REL, &bmp_para_state);
+ lv_imgbtn_set_src(buttonYState, LV_BTN_STATE_PR, &bmp_para_state);
+ lv_imgbtn_set_style(buttonYState, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonYState, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonYState, LV_LAYOUT_OFF);
+ labelYState = lv_label_create(buttonYState, NULL);
+
+ line2 = lv_line_create(scr, NULL);
+ lv_ex_line(line2, line_points[1]);
+
+ buttonZText = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3); /*Set its position*/
+ lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonZText, event_handler);
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+ labelZText = lv_label_create(buttonZText, NULL); /*Add a label to the button*/
+
+ buttonZState = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonZState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_STATE_V);
+ if (stepperZ.get_stealthChop_status())
+ lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_enable.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_disable.bin", 0);
+ lv_imgbtn_set_src(buttonZState, LV_BTN_STATE_REL, &bmp_para_state);
+ lv_imgbtn_set_src(buttonZState, LV_BTN_STATE_PR, &bmp_para_state);
+ lv_imgbtn_set_style(buttonZState, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonZState, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonZState, LV_LAYOUT_OFF);
+ labelZState = lv_label_create(buttonZState, NULL);
+
+ line3 = lv_line_create(scr, NULL);
+ lv_ex_line(line3, line_points[2]);
+
+ buttonE0Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4); /*Set its position*/
+ lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE0Text, event_handler);
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+ labelE0Text = lv_label_create(buttonE0Text, NULL); /*Add a label to the button*/
+
+ buttonE0State = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE0State, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_STATE_V);
+ if (stepperE0.get_stealthChop_status())
+ lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_enable.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_disable.bin", 0);
+ lv_imgbtn_set_src(buttonE0State, LV_BTN_STATE_REL, &bmp_para_state);
+ lv_imgbtn_set_src(buttonE0State, LV_BTN_STATE_PR, &bmp_para_state);
+ lv_imgbtn_set_style(buttonE0State, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonE0State, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonE0State, LV_LAYOUT_OFF);
+ labelE0State = lv_label_create(buttonE0State, NULL);
+
+ line4 = lv_line_create(scr, NULL);
+ lv_ex_line(line4, line_points[3]);
+
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_MODE_DOWN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
+ }
+ else {
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ buttonE1Text = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+ lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y); /*Set its position*/
+ lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y); /*Set its size*/
+ lv_obj_set_event_cb(buttonE1Text, event_handler);
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+ lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre); /*Set the button's pressed style*/
+ lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+ labelE1Text = lv_label_create(buttonE1Text, NULL); /*Add a label to the button*/
+
+ buttonE1State = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_pos(buttonE1State, PARA_UI_STATE_POS_X, PARA_UI_POS_Y + PARA_UI_STATE_V);
+ if (stepperE1.get_stealthChop_status())
+ lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_enable.bin", 0);
+ else
+ lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_disable.bin", 0);
+ lv_imgbtn_set_src(buttonE1State, LV_BTN_STATE_REL, &bmp_para_state);
+ lv_imgbtn_set_src(buttonE1State, LV_BTN_STATE_PR, &bmp_para_state);
+ lv_imgbtn_set_style(buttonE1State, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonE1State, LV_BTN_STATE_REL, &tft_style_label_rel);
+ lv_btn_set_layout(buttonE1State, LV_LAYOUT_OFF);
+ labelE1State = lv_label_create(buttonE1State, NULL);
+
+ line1 = lv_line_create(scr, NULL);
+ lv_ex_line(line1, line_points[0]);
+
+ buttonTurnPage = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_MODE_UP, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif
+ }
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+ lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+ labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+ #endif
+
+ buttonBack = lv_imgbtn_create(scr, NULL);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_TMC_MODE_RETURN, "bmp_back70x40.bin", 0);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+ lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+ lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+ lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+ label_Back = lv_label_create(buttonBack, NULL);
+
+ if (gCfgItems.multiple_language != 0) {
+ if (uiCfg.para_ui_page != 1) {
+ lv_label_set_text(labelXText, machine_menu.X_StepMode);
+ lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelYText, machine_menu.Y_StepMode);
+ lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelZText, machine_menu.Z_StepMode);
+ lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ lv_label_set_text(labelE0Text, machine_menu.E0_StepMode);
+ lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ if (stepperX.get_stealthChop_status())
+ lv_label_set_text(labelXState, machine_menu.enable);
+ else
+ lv_label_set_text(labelXState, machine_menu.disable);
+ lv_obj_align(labelXState, buttonXState, LV_ALIGN_CENTER, 0, 0);
+
+ if (stepperY.get_stealthChop_status())
+ lv_label_set_text(labelYState, machine_menu.enable);
+ else
+ lv_label_set_text(labelYState, machine_menu.disable);
+ lv_obj_align(labelYState, buttonYState, LV_ALIGN_CENTER, 0, 0);
+
+ if (stepperZ.get_stealthChop_status())
+ lv_label_set_text(labelZState, machine_menu.enable);
+ else
+ lv_label_set_text(labelZState, machine_menu.disable);
+ lv_obj_align(labelZState, buttonZState, LV_ALIGN_CENTER, 0, 0);
+
+ if (stepperE0.get_stealthChop_status())
+ lv_label_set_text(labelE0State, machine_menu.enable);
+ else
+ lv_label_set_text(labelE0State, machine_menu.disable);
+ lv_obj_align(labelE0State, buttonE0State, LV_ALIGN_CENTER, 0, 0);
+
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ lv_label_set_text(labelTurnPage, machine_menu.next);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+ #endif
+ }
+ else {
+ #if AXIS_HAS_STEALTHCHOP(E1)
+ lv_label_set_text(labelE1Text, machine_menu.E1_StepMode);
+ lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+ if (stepperE1.get_stealthChop_status())
+ lv_label_set_text(labelE1State, machine_menu.enable);
+ else
+ lv_label_set_text(labelE1State, machine_menu.disable);
+ lv_obj_align(labelE1State, buttonE1State, LV_ALIGN_CENTER, 0, 0);
+
+ lv_label_set_text(labelTurnPage, machine_menu.previous);
+ lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+ #endif
+ }
+
+ lv_label_set_text(label_Back, common_menu.text_back);
+ lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+ }
+}
+
+void lv_clear_tmc_step_mode_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_STEALTHCHOP
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h
new file mode 100644
index 000000000000..93085b7ca16b
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_tmc_step_mode_settings(void);
+extern void lv_clear_tmc_step_mode_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
index 14b9ee80c592..91dd2f36ab9e 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "lv_conf.h"
#include "draw_ui.h"
@@ -33,11 +33,8 @@
#include "../../../../MarlinCore.h"
#include "../../../../gcode/queue.h"
-//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
+// static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
static lv_obj_t * scr;
-#if ENABLED(MKS_TEST)
- extern uint8_t curent_disp_ui;
-#endif
#define ID_T_PRE_HEAT 1
#define ID_T_EXTRUCT 2
@@ -135,7 +132,7 @@ void lv_draw_tool(void) {
lv_obj_clean(scr);
lv_obj_t * title = lv_label_create(scr, NULL);
- lv_obj_set_style(title, &tft_style_lable_rel);
+ lv_obj_set_style(title, &tft_style_label_rel);
lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
lv_label_set_text(title, creat_title_text());
@@ -144,74 +141,74 @@ void lv_draw_tool(void) {
LV_IMG_DECLARE(bmp_pic);
/*Create an Image button*/
- buttonPreHeat = lv_imgbtn_create(scr, NULL);
+ buttonPreHeat = lv_imgbtn_create(scr, NULL);
buttonExtrusion = lv_imgbtn_create(scr, NULL);
- buttonMove = lv_imgbtn_create(scr, NULL);
- buttonHome = lv_imgbtn_create(scr, NULL);
- buttonLevel = lv_imgbtn_create(scr, NULL);
- //buttonFilament = lv_imgbtn_create(scr, NULL);
- //buttonMore = lv_imgbtn_create(scr, NULL);
+ buttonMove = lv_imgbtn_create(scr, NULL);
+ buttonHome = lv_imgbtn_create(scr, NULL);
+ buttonLevel = lv_imgbtn_create(scr, NULL);
+ // buttonFilament = lv_imgbtn_create(scr, NULL);
+ // buttonMore = lv_imgbtn_create(scr, NULL);
buttonBack = lv_imgbtn_create(scr, NULL);
- lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_T_PRE_HEAT, "bmp_PreHeat.bin", 0);
+ lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_T_PRE_HEAT, "bmp_preHeat.bin", 0);
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_label_rel);
lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW);
#if 1
- lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_T_EXTRUCT, "bmp_Extruct.bin", 0);
+ lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_T_EXTRUCT, "bmp_extruct.bin", 0);
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_T_MOV, "bmp_Mov.bin", 0);
+ lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_T_MOV, "bmp_mov.bin", 0);
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonHome, event_handler, ID_T_HOME, "bmp_Zero.bin", 0);
+ lv_obj_set_event_cb_mks(buttonHome, event_handler, ID_T_HOME, "bmp_zero.bin", 0);
lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonLevel, event_handler, ID_T_LEVELING, "bmp_Leveling.bin", 0);
+ lv_obj_set_event_cb_mks(buttonLevel, event_handler, ID_T_LEVELING, "bmp_leveling.bin", 0);
lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_T_FILAMENT,"bmp_Filamentchange.bin",0);
//lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_label_rel);
//lv_obj_set_event_cb_mks(buttonMore, event_handler,ID_T_MORE,"bmp_More.bin",0);
//lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_REL, &bmp_pic);
//lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_PR, &bmp_pic);
- //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_PR, &tft_style_lable_pre);
- //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_REL, &tft_style_lable_rel);
+ //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_PR, &tft_style_label_pre);
+ //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_REL, &tft_style_label_rel);
- lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_Return.bin", 0);
+ lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_return.bin", 0);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
- lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
- #endif
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+ lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+ #endif // if 1
lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight);
lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
lv_obj_set_pos(buttonMove, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
lv_obj_set_pos(buttonHome, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
- lv_obj_set_pos(buttonLevel, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ lv_obj_set_pos(buttonLevel, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
//lv_obj_set_pos(buttonFilament,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- //lv_obj_set_pos(buttonMore,BTN_X_PIXEL*2+INTERVAL_V*3, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
- lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+ //lv_obj_set_pos(buttonMore,BTN_X_PIXEL*2+INTERVAL_V*3, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+ lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
/*Create a label on the Image button*/
lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF);
@@ -223,11 +220,11 @@ void lv_draw_tool(void) {
//lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF);
lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
- lv_obj_t * labelPreHeat = lv_label_create(buttonPreHeat, NULL);
+ lv_obj_t * labelPreHeat = lv_label_create(buttonPreHeat, NULL);
lv_obj_t * labelExtrusion = lv_label_create(buttonExtrusion, NULL);
- lv_obj_t * label_Move = lv_label_create(buttonMove, NULL);
- lv_obj_t * label_Home = lv_label_create(buttonHome, NULL);
- lv_obj_t * label_Level = lv_label_create(buttonLevel, NULL);
+ lv_obj_t * label_Move = lv_label_create(buttonMove, NULL);
+ lv_obj_t * label_Home = lv_label_create(buttonHome, NULL);
+ lv_obj_t * label_Level = lv_label_create(buttonLevel, NULL);
//lv_obj_t * label_Filament = lv_label_create(buttonFilament, NULL);
//lv_obj_t * label_More = lv_label_create(buttonMore, NULL);
lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
@@ -267,4 +264,4 @@ void lv_draw_tool(void) {
void lv_clear_tool() { lv_obj_del(scr); }
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
index ef2a29a930a3..e8899b9ad122 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
@@ -21,24 +21,27 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+ #include "SPI_TFT.h"
+#endif
#include "W25Qxx.h"
#include "tft_lvgl_configuration.h"
-#include
+#include "pic_manager.h"
-#if ENABLED(SPI_GRAPHICAL_TFT)
- #include "SPI_TFT.h"
-#endif
+#include "draw_ui.h"
+#include "mks_hardware_test.h"
+
+#include
#include "../../../../MarlinCore.h"
#include "../../../../sd/cardreader.h"
#include "../../../../module/motion.h"
#include "../../../../module/planner.h"
-#include "pic_manager.h"
-
#if ENABLED(POWER_LOSS_RECOVERY)
#include "../../../../feature/powerloss.h"
#endif
@@ -47,14 +50,13 @@
#include "../../../../feature/pause.h"
#endif
-#include "draw_ui.h"
-
CFG_ITMES gCfgItems;
UI_CFG uiCfg;
DISP_STATE_STACK disp_state_stack;
DISP_STATE disp_state = MAIN_UI;
DISP_STATE last_disp_state;
PRINT_TIME print_time;
+value_state value;
uint32_t To_pre_view;
uint8_t gcode_preview_over;
@@ -72,9 +74,15 @@ extern uint8_t bmp_public_buf[17 * 1024];
extern void LCD_IO_WriteData(uint16_t RegValue);
+lv_point_t line_points[4][2] = {
+ {{PARA_UI_POS_X, PARA_UI_POS_Y + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y + PARA_UI_SIZE_Y}},
+ {{PARA_UI_POS_X, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}},
+ {{PARA_UI_POS_X, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}},
+ {{PARA_UI_POS_X, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}}
+};
void gCfgItems_init() {
gCfgItems.multiple_language = MULTI_LANGUAGE_ENABLE;
- #if 1 //LCD_LANGUAGE == en
+ #if 1 // LCD_LANGUAGE == en
gCfgItems.language = LANG_ENGLISH;
#elif LCD_LANGUAGE == zh_CN
gCfgItems.language = LANG_SIMPLE_CHINESE;
@@ -101,12 +109,14 @@ void gCfgItems_init() {
#elif LCD_LANGUAGE == pt
gCfgItems.language = LANG_PORTUGUESE;
#endif
- gCfgItems.leveling_mode = 0;
- gCfgItems.from_flash_pic = 0;
- gCfgItems.curFilesize = 0;
+ gCfgItems.leveling_mode = 0;
+ gCfgItems.from_flash_pic = 0;
+ gCfgItems.curFilesize = 0;
gCfgItems.finish_power_off = 0;
- gCfgItems.pause_reprint = 0;
-
+ gCfgItems.pause_reprint = 0;
+ gCfgItems.pausePosX = -1;
+ gCfgItems.pausePosY = -1;
+ gCfgItems.pausePosZ = 5;
W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems.spi_flash_flag, VAR_INF_ADDR, sizeof(gCfgItems.spi_flash_flag));
if (gCfgItems.spi_flash_flag == GCFG_FLAG_VALUE) {
W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
@@ -117,6 +127,12 @@ void gCfgItems_init() {
W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
}
+ uiCfg.F[0] = 'N';
+ uiCfg.F[1] = 'A';
+ uiCfg.F[2] = 'N';
+ uiCfg.F[3] = 'O';
+ W25QXX.SPI_FLASH_BlockErase(REFLSHE_FLGA_ADD + 32 - 64*1024);
+ W25QXX.SPI_FLASH_BufferWrite(uiCfg.F,REFLSHE_FLGA_ADD,4);
}
void gCfg_to_spiFlah() {
@@ -125,15 +141,16 @@ void gCfg_to_spiFlah() {
}
void ui_cfg_init() {
- uiCfg.curTempType = 0;
- uiCfg.curSprayerChoose = 0;
- uiCfg.stepHeat = 10;
+ uiCfg.curTempType = 0;
+ uiCfg.curSprayerChoose = 0;
+ uiCfg.stepHeat = 10;
uiCfg.leveling_first_time = 0;
- uiCfg.extruStep = 5;
- uiCfg.extruSpeed = 10;
- uiCfg.move_dist = 1;
- uiCfg.moveSpeed = 3000;
- uiCfg.stepPrintSpeed = 10;
+ uiCfg.para_ui_page = 0;
+ uiCfg.extruStep = 5;
+ uiCfg.extruSpeed = 10;
+ uiCfg.move_dist = 1;
+ uiCfg.moveSpeed = 3000;
+ uiCfg.stepPrintSpeed = 10;
}
void update_spi_flash() {
@@ -143,48 +160,106 @@ void update_spi_flash() {
}
lv_style_t tft_style_scr;
-lv_style_t tft_style_lable_pre;
-lv_style_t tft_style_lable_rel;
+lv_style_t tft_style_label_pre;
+lv_style_t tft_style_label_rel;
+lv_style_t style_line;
+lv_style_t style_para_value_pre;
+lv_style_t style_para_value_rel;
+lv_style_t style_num_key_pre;
+lv_style_t style_num_key_rel;
+
+lv_style_t style_num_text;
void tft_style_init() {
lv_style_copy(&tft_style_scr, &lv_style_scr);
- tft_style_scr.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_scr.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_scr.text.color = LV_COLOR_TEXT;
- tft_style_scr.text.sel_color = LV_COLOR_TEXT;
- tft_style_scr.line.width = 0;
+ tft_style_scr.body.main_color = LV_COLOR_BACKGROUND;
+ tft_style_scr.body.grad_color = LV_COLOR_BACKGROUND;
+ tft_style_scr.text.color = LV_COLOR_TEXT;
+ tft_style_scr.text.sel_color = LV_COLOR_TEXT;
+ tft_style_scr.line.width = 0;
tft_style_scr.text.letter_space = 0;
- tft_style_scr.text.line_space = 0;
-
- lv_style_copy(&tft_style_lable_pre, &lv_style_scr);
- lv_style_copy(&tft_style_lable_rel, &lv_style_scr);
- tft_style_lable_pre.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_lable_pre.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_lable_pre.text.color = LV_COLOR_TEXT;
- tft_style_lable_pre.text.sel_color = LV_COLOR_TEXT;
- tft_style_lable_rel.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_lable_rel.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_lable_rel.text.color = LV_COLOR_TEXT;
- tft_style_lable_rel.text.sel_color = LV_COLOR_TEXT;
+ tft_style_scr.text.line_space = 0;
+
+ lv_style_copy(&tft_style_label_pre, &lv_style_scr);
+ lv_style_copy(&tft_style_label_rel, &lv_style_scr);
+ tft_style_label_pre.body.main_color = LV_COLOR_BACKGROUND;
+ tft_style_label_pre.body.grad_color = LV_COLOR_BACKGROUND;
+ tft_style_label_pre.text.color = LV_COLOR_TEXT;
+ tft_style_label_pre.text.sel_color = LV_COLOR_TEXT;
+ tft_style_label_rel.body.main_color = LV_COLOR_BACKGROUND;
+ tft_style_label_rel.body.grad_color = LV_COLOR_BACKGROUND;
+ tft_style_label_rel.text.color = LV_COLOR_TEXT;
+ tft_style_label_rel.text.sel_color = LV_COLOR_TEXT;
+ tft_style_label_pre.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+ tft_style_label_rel.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+ tft_style_label_pre.line.width = 0;
+ tft_style_label_rel.line.width = 0;
+ tft_style_label_pre.text.letter_space = 0;
+ tft_style_label_rel.text.letter_space = 0;
+ tft_style_label_pre.text.line_space = -5;
+ tft_style_label_rel.text.line_space = -5;
+ lv_style_copy(&style_para_value_pre, &lv_style_scr);
+ lv_style_copy(&style_para_value_rel, &lv_style_scr);
+ style_para_value_pre.body.main_color = LV_COLOR_BACKGROUND;
+ style_para_value_pre.body.grad_color = LV_COLOR_BACKGROUND;
+ style_para_value_pre.text.color = LV_COLOR_BLACK;
+ style_para_value_pre.text.sel_color = LV_COLOR_BLACK;
+ style_para_value_rel.body.main_color = LV_COLOR_BACKGROUND;
+ style_para_value_rel.body.grad_color = LV_COLOR_BACKGROUND;
+ style_para_value_rel.text.color = LV_COLOR_BLACK;
+ style_para_value_rel.text.sel_color = LV_COLOR_BLACK;
+ style_para_value_pre.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+ style_para_value_rel.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+ style_para_value_pre.line.width = 0;
+ style_para_value_rel.line.width = 0;
+ style_para_value_pre.text.letter_space = 0;
+ style_para_value_rel.text.letter_space = 0;
+ style_para_value_pre.text.line_space = -5;
+ style_para_value_rel.text.line_space = -5;
+ lv_style_copy(&style_num_key_pre, &lv_style_scr);
+ lv_style_copy(&style_num_key_rel, &lv_style_scr);
+ style_num_key_pre.body.main_color = LV_COLOR_KEY_BACKGROUND;
+ style_num_key_pre.body.grad_color = LV_COLOR_KEY_BACKGROUND;
+ style_num_key_pre.text.color = LV_COLOR_TEXT;
+ style_num_key_pre.text.sel_color = LV_COLOR_TEXT;
+ style_num_key_rel.body.main_color = LV_COLOR_KEY_BACKGROUND;
+ style_num_key_rel.body.grad_color = LV_COLOR_KEY_BACKGROUND;
+ style_num_key_rel.text.color = LV_COLOR_TEXT;
+ style_num_key_rel.text.sel_color = LV_COLOR_TEXT;
#if HAS_SPI_FLASH_FONT
- tft_style_lable_pre.text.font = &gb2312_puhui32;
- tft_style_lable_rel.text.font = &gb2312_puhui32;
+ style_num_key_pre.text.font = &gb2312_puhui32;
+ style_num_key_rel.text.font = &gb2312_puhui32;
#else
- tft_style_lable_pre.text.font = LV_FONT_DEFAULT;
- tft_style_lable_rel.text.font = LV_FONT_DEFAULT;
+ style_num_key_pre.text.font = LV_FONT_DEFAULT;
+ style_num_key_rel.text.font = LV_FONT_DEFAULT;
#endif
- tft_style_lable_pre.line.width = 0;
- tft_style_lable_rel.line.width = 0;
- tft_style_lable_pre.text.letter_space = 0;
- tft_style_lable_rel.text.letter_space = 0;
- tft_style_lable_pre.text.line_space = -5;
- tft_style_lable_rel.text.line_space = -5;
+
+ style_num_key_pre.line.width = 0;
+ style_num_key_rel.line.width = 0;
+ style_num_key_pre.text.letter_space = 0;
+ style_num_key_rel.text.letter_space = 0;
+ style_num_key_pre.text.line_space = -5;
+ style_num_key_rel.text.line_space = -5;
+ lv_style_copy(&style_num_text, &lv_style_scr);
+
+ style_num_text.body.main_color = LV_COLOR_WHITE;
+ style_num_text.body.grad_color = LV_COLOR_WHITE;
+ style_num_text.text.color = LV_COLOR_BLACK;
+ style_num_text.text.sel_color = LV_COLOR_BLACK;
+ style_num_text.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+ style_num_text.line.width = 0;
+ style_num_text.text.letter_space = 0;
+ style_num_text.text.line_space = -5;
+
+ lv_style_copy(&style_line, &lv_style_plain);
+ style_line.line.color = LV_COLOR_MAKE(0x49, 0x54, 0xff);
+ style_line.line.width = 1;
+ style_line.line.rounded = 1;
}
#define MAX_TITLE_LEN 28
char public_buf_m[100] = {0};
-
char public_buf_l[30];
void titleText_cat(char *str, int strSize, char *addPart) {
@@ -195,7 +270,7 @@ void titleText_cat(char *str, int strSize, char *addPart) {
char *getDispText(int index) {
- memset(public_buf_l, 0, sizeof(public_buf_l));
+ ZERO(public_buf_l);
switch (disp_state_stack._disp_state[index]) {
case PRINT_READY_UI:
@@ -206,11 +281,11 @@ char *getDispText(int index) {
break;
case PRINTING_UI:
if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- #ifndef TFT35
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- #endif
- ) strcpy(public_buf_l, common_menu.print_special_title);
+ #ifndef TFT35
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+ #endif
+ ) strcpy(public_buf_l, common_menu.print_special_title);
else strcpy(public_buf_l, printing_menu.title);
break;
case MOVE_MOTOR_UI:
@@ -218,19 +293,19 @@ char *getDispText(int index) {
break;
case OPERATE_UI:
if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- #ifndef TFT35
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- #endif
- ) strcpy(public_buf_l, common_menu.operate_special_title);
+ #ifndef TFT35
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+ #endif
+ ) strcpy(public_buf_l, common_menu.operate_special_title);
else strcpy(public_buf_l, operation_menu.title);
break;
case PAUSE_UI:
if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- ) strcpy(public_buf_l, common_menu.pause_special_title);
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+ ) strcpy(public_buf_l, common_menu.pause_special_title);
else strcpy(public_buf_l, pause_menu.title);
break;
@@ -244,7 +319,8 @@ char *getDispText(int index) {
strcpy(public_buf_l, fan_menu.title);
break;
case PRE_HEAT_UI:
- if ((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI)) strcpy(public_buf_l, preheat_menu.adjust_title);
+ if ((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI))
+ strcpy(public_buf_l, preheat_menu.adjust_title);
else strcpy(public_buf_l, preheat_menu.title);
break;
case SET_UI:
@@ -300,6 +376,9 @@ char *getDispText(int index) {
case BABY_STEP_UI:
strcpy(public_buf_l, operation_menu.babystep);
break;
+ case EEPROM_SETTINGS_UI:
+ strcpy(public_buf_l, eeprom_menu.title);
+ break;
default: break;
}
@@ -307,11 +386,11 @@ char *getDispText(int index) {
}
char *creat_title_text() {
- int index = 0;
+ int index = 0;
char *tmpText = 0;
char tmpCurFileStr[20];
- memset(tmpCurFileStr, 0, sizeof(tmpCurFileStr));
+ ZERO(tmpCurFileStr);
#if _LFN_UNICODE
//cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr);
@@ -319,7 +398,7 @@ char *creat_title_text() {
cutFileName(list_file.long_name[sel_id], 16, 16, tmpCurFileStr);
#endif
- memset(public_buf_m, 0, sizeof(public_buf_m));
+ ZERO(public_buf_m);
while (index <= disp_state_stack._disp_index) {
tmpText = getDispText(index);
@@ -335,15 +414,15 @@ char *creat_title_text() {
}
if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/) {
+ /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+ || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/
+ ) {
titleText_cat(public_buf_m, sizeof(public_buf_m), (char *)":");
titleText_cat(public_buf_m, sizeof(public_buf_m), tmpCurFileStr);
}
if (strlen(public_buf_m) > MAX_TITLE_LEN) {
- memset(public_buf_m, 0, sizeof(public_buf_m));
-
+ ZERO(public_buf_m);
tmpText = getDispText(0);
if (*tmpText != 0) {
titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
@@ -351,275 +430,425 @@ char *creat_title_text() {
tmpText = getDispText(disp_state_stack._disp_index);
if (*tmpText != 0) titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
}
-
}
return public_buf_m;
}
#if HAS_GCODE_PREVIEW
-uint32_t gPicturePreviewStart = 0;
-
-void preview_gcode_prehandle(char *path) {
- #if ENABLED(SDSUPPORT)
- //uint8_t re;
- //uint32_t read;
- uint32_t pre_read_cnt = 0;
- uint32_t *p1;
- char *cur_name;
-
- gPicturePreviewStart = 0;
- cur_name = strrchr(path, '/');
- card.openFileRead(cur_name);
- card.read(public_buf, 512);
- p1 = (uint32_t *)strstr((char *)public_buf, ";simage:");
-
- if (p1) {
- pre_read_cnt = (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
-
- To_pre_view = pre_read_cnt;
- gcode_preview_over = 1;
- gCfgItems.from_flash_pic = 1;
- update_spi_flash();
- }
- else {
- gcode_preview_over = 0;
- default_preview_flg = 1;
- gCfgItems.from_flash_pic = 0;
- update_spi_flash();
- }
- card.closefile();
- #endif
-}
-void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
- #if ENABLED(SDSUPPORT)
- //uint8_t ress;
- //uint32_t write;
- volatile uint32_t i, j;
- volatile uint16_t *p_index;
- //int res;
- char *cur_name;
-
- cur_name = strrchr(path, '/');
- card.openFileRead(cur_name);
-
- if (gPicturePreviewStart <= 0) {
- while (1) {
- uint32_t br = card.read(public_buf, 400);
- uint32_t* p1 = (uint32_t *)strstr((char *)public_buf, ";gimage:");
- if (p1) {
- gPicturePreviewStart += (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
- break;
- }
- else {
- gPicturePreviewStart += br;
- }
- if (br < 400) break;
- }
- }
-
- // SERIAL_ECHOLNPAIR("gPicturePreviewStart: ", gPicturePreviewStart, " PREVIEW_LITTLE_PIC_SIZE: ", PREVIEW_LITTLE_PIC_SIZE);
-
- card.setIndex((gPicturePreviewStart + To_pre_view) + size * row + 8);
- #if ENABLED(SPI_GRAPHICAL_TFT)
- SPI_TFT.spi_init(SPI_FULL_SPEED);
- //SPI_TFT.SetCursor(0,0);
- SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
- SPI_TFT.LCD_WriteRAM_Prepare();
- #else
- ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
- LCD_WriteRAM_Prepare();
- #endif
+ uint32_t gPicturePreviewStart = 0;
- j = i = 0;
+ void preview_gcode_prehandle(char *path) {
+ #if ENABLED(SDSUPPORT)
+ //uint8_t re;
+ //uint32_t read;
+ uint32_t pre_read_cnt = 0;
+ uint32_t *p1;
+ char *cur_name;
- while (1) {
- card.read(public_buf, 400);
- for (i = 0; i < 400;) {
- bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
- i += 2;
- j++;
- }
+ gPicturePreviewStart = 0;
+ cur_name = strrchr(path, '/');
+ card.openFileRead(cur_name);
+ card.read(public_buf, 512);
+ p1 = (uint32_t *)strstr((char *)public_buf, ";simage:");
- //if (i > 800) break;
- //#ifdef TFT70
- //if (j>400) {
- // f_read(file, buff_pic, 1, &read);
- // break;
- //}
- //#elif defined(TFT35)
- if (j >= 400)
- //f_read(file, buff_pic, 1, &read);
- break;
- //#endif
+ if (p1) {
+ pre_read_cnt = (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
- }
- #if ENABLED(SPI_GRAPHICAL_TFT)
- for (i = 0; i < 400;) {
- p_index = (uint16_t *)(&bmp_public_buf[i]);
- Color = (*p_index >> 8);
- *p_index = Color | ((*p_index & 0xFF) << 8);
- i += 2;
+ To_pre_view = pre_read_cnt;
+ gcode_preview_over = 1;
+ gCfgItems.from_flash_pic = 1;
+ update_spi_flash();
}
- SPI_TFT_CS_L;
- SPI_TFT_DC_H;
- SPI.dmaSend(bmp_public_buf, 400, true);
- SPI_TFT_CS_H;
- #else
- for (i = 0; i < 400;) {
- p_index = (uint16_t *)(&bmp_public_buf[i]);
- if (*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
- LCD_IO_WriteData(*p_index);
- i += 2;
+ else {
+ gcode_preview_over = 0;
+ default_preview_flg = 1;
+ gCfgItems.from_flash_pic = 0;
+ update_spi_flash();
}
- #endif
- #if HAS_BAK_VIEW_IN_FLASH
- W25QXX.init(SPI_QUARTER_SPEED);
- if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
- W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
- #endif
- row++;
- if (row >= 200) {
- size = 809;
- row = 0;
-
- gcode_preview_over = 0;
- //flash_preview_begin = 1;
-
card.closefile();
+ #endif
+ }
- /*
- if (gCurFileState.file_open_flag != 0xaa) {
- reset_file_info();
- res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
- if (res == FR_OK) {
- f_lseek(file,PREVIEW_SIZE+To_pre_view);
- gCurFileState.file_open_flag = 0xaa;
- //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
- srcfp = file;
- mksReprint.mks_printer_state = MKS_WORKING;
- once_flag = 0;
+ #if 1
+
+ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
+ #if ENABLED(SDSUPPORT)
+ //uint8_t ress;
+ //uint32_t write;
+ volatile uint32_t i, j;
+ volatile uint16_t *p_index;
+ //int res;
+ char *cur_name;
+
+ cur_name = strrchr(path, '/');
+ card.openFileRead(cur_name);
+
+ if (gPicturePreviewStart <= 0) {
+ while (1) {
+ uint32_t br = card.read(public_buf, 400);
+ uint32_t* p1 = (uint32_t *)strstr((char *)public_buf, ";gimage:");
+ if (p1) {
+ gPicturePreviewStart += (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
+ break;
+ }
+ else {
+ gPicturePreviewStart += br;
+ }
+ if (br < 400) break;
+ }
}
- }
- */
- char *cur_name;
- cur_name = strrchr(list_file.file_name[sel_id], '/');
+ //SERIAL_ECHOLNPAIR("gPicturePreviewStart: ", gPicturePreviewStart, " PREVIEW_LITTLE_PIC_SIZE: ", PREVIEW_LITTLE_PIC_SIZE);
+
+ card.setIndex((gPicturePreviewStart + To_pre_view) + size * row + 8);
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ SPI_TFT.spi_init(SPI_FULL_SPEED);
+ //SPI_TFT.SetCursor(0,0);
+ SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+ SPI_TFT.LCD_WriteRAM_Prepare();
+ #else
+ ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+ LCD_WriteRAM_Prepare();
+ #endif
- SdFile file;
- SdFile *curDir;
- card.endFilePrint();
- const char * const fname = card.diveToFile(true, curDir, cur_name);
- if (!fname) return;
- if (file.open(curDir, fname, O_READ)) {
- gCfgItems.curFilesize = file.fileSize();
- file.close();
- update_spi_flash();
- }
+ j = i = 0;
- card.openFileRead(cur_name);
- if (card.isFileOpen()) {
- feedrate_percentage = 100;
- // saved_feedrate_percentage = feedrate_percentage;
- planner.flow_percentage[0] = 100;
- planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
- if (EXTRUDERS == 2) {
- planner.flow_percentage[1] = 100;
- planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
+ while (1) {
+ card.read(public_buf, 400);
+ for (i = 0; i < 400;) {
+ bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
+ i += 2;
+ j++;
+ }
+ if (j >= 400) break;
}
- card.startFileprint();
- TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
- once_flag = 0;
- }
- return;
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ uint16_t Color, SpiColor;
+ SpiColor = (LV_COLOR_BACKGROUND.full >> 8) | ((LV_COLOR_BACKGROUND.full & 0xFF) << 8);
+ for (i = 0; i < 400;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xFF) << 8);
+ i += 2;
+ if (*p_index == 0x0000) *p_index = SpiColor;
+ }
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ SPI.dmaSend(bmp_public_buf, 400, true);
+ SPI_TFT_CS_H;
+ #else
+ for (i = 0; i < 400;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
+ LCD_IO_WriteData(*p_index);
+ i += 2;
+ }
+ #endif
+ #if HAS_BAK_VIEW_IN_FLASH
+ W25QXX.init(SPI_QUARTER_SPEED);
+ if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
+ W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
+ #endif
+ row++;
+ if (row >= 200) {
+ size = 809;
+ row = 0;
+
+ gcode_preview_over = 0;
+ //flash_preview_begin = 1;
+
+ card.closefile();
+
+ /*
+ if (gCurFileState.file_open_flag != 0xaa) {
+ reset_file_info();
+ res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
+ if (res == FR_OK) {
+ f_lseek(file,PREVIEW_SIZE+To_pre_view);
+ gCurFileState.file_open_flag = 0xaa;
+ //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
+ srcfp = file;
+ mksReprint.mks_printer_state = MKS_WORKING;
+ once_flag = 0;
+ }
+ }
+ */
+ char *cur_name;
+
+ cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+ SdFile file;
+ SdFile *curDir;
+ card.endFilePrint();
+ const char * const fname = card.diveToFile(true, curDir, cur_name);
+ if (!fname) return;
+ if (file.open(curDir, fname, O_READ)) {
+ gCfgItems.curFilesize = file.fileSize();
+ file.close();
+ update_spi_flash();
+ }
+
+ card.openFileRead(cur_name);
+ if (card.isFileOpen()) {
+ feedrate_percentage = 100;
+ //saved_feedrate_percentage = feedrate_percentage;
+ planner.flow_percentage[0] = 100;
+ planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
+ if (EXTRUDERS == 2) {
+ planner.flow_percentage[1] = 100;
+ planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
+ }
+ card.startFileprint();
+ TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
+ once_flag = 0;
+ }
+ return;
+ }
+ card.closefile();
+ #endif // SDSUPPORT
}
- card.closefile();
- #endif // SDSUPPORT
-}
-void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
- int index;
- int x_off = 0, y_off = 0;
- int _y;
- uint16_t *p_index;
- int i;
- uint16_t temp_p;
+ #else // if 1
+
+ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
+ #if ENABLED(SDSUPPORT)
+ //uint8_t ress;
+ //uint32_t write;
+ volatile uint32_t i, j;
+ volatile uint16_t *p_index;
+ //int res;
+ char *cur_name;
+ uint16_t Color;
+
+ cur_name = strrchr(path, '/');
+ card.openFileRead(cur_name);
+
+ card.setIndex((PREVIEW_LITTLE_PIC_SIZE + To_pre_view) + size * row + 8);
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ SPI_TFT.spi_init(SPI_FULL_SPEED);
+ //SPI_TFT.SetCursor(0,0);
+ SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+ SPI_TFT.LCD_WriteRAM_Prepare();
+ #else
+ ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+ LCD_WriteRAM_Prepare();
+ #endif
- for (index = 0; index < 10; index++) { // 200*200
- #if HAS_BAK_VIEW_IN_FLASH
- if (sel == 1) flash_view_Read(bmp_public_buf, 8000); //20k
- //memset(bmp_public_buf,0x1f,8000);
- else
- //memset(bmp_public_buf,0x1f,8000);
- default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); //20k
- #else
- default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); //20k
- #endif
+ j = 0;
+ i = 0;
- i = 0;
- #if ENABLED(SPI_GRAPHICAL_TFT)
- //SPI_TFT.spi_init(SPI_FULL_SPEED);
- //SPI_TFT.SetWindows(xpos_pixel, y_off * 20+ypos_pixel, 200,20); //200*200
- //SPI_TFT.LCD_WriteRAM_Prepare();
- j = 0;
- for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
- SPI_TFT.spi_init(SPI_FULL_SPEED);
- SPI_TFT.SetWindows(xpos_pixel, y_off * 20 + ypos_pixel + j, 200, 1); //200*200
- SPI_TFT.LCD_WriteRAM_Prepare();
-
- j++;
- //memcpy(public_buf,&bmp_public_buf[i],400);
- SPI_TFT_CS_L;
- SPI_TFT_DC_H;
- SPI.dmaSend(&bmp_public_buf[i], 400, true);
- SPI_TFT_CS_H;
-
- i += 400;
- if (i >= 8000) break;
- }
- #else
- ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); //200*200
+ while (1) {
+ card.read(public_buf, 400);
+ for (i = 0; i < 400;) {
+ bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
+ i += 2;
+ j++;
+ }
+
+ //if (i > 800) break;
+ //#ifdef TFT70
+ // if (j > 400) {
+ // f_read(file, buff_pic, 1, &read);
+ // break;
+ // }
+ //#elif defined(TFT35)
+ if (j >= 400)
+ //f_read(file, buff_pic, 1, &read);
+ break;
+ //#endif
- LCD_WriteRAM_Prepare();
+ }
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ for (i = 0; i < 400;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
- for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
- for (x_off = 0; x_off < 200; x_off++) {
- if (sel == 1) {
- temp_p = (uint16_t)(bmp_public_buf[i] | bmp_public_buf[i + 1] << 8);
- p_index = &temp_p;
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xff) << 8);
+ i += 2;
+ if (*p_index == 0x0000) *p_index = 0xC318;
+ }
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ SPI.dmaSend(bmp_public_buf, 400, true);
+ SPI_TFT_CS_H;
+
+ #else
+ for (i = 0; i < 400;) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ if (*p_index == 0x0000) *p_index = 0x18C3;
+ LCD_IO_WriteData(*p_index);
+ i = i + 2;
}
- else {
+ #endif
+ W25QXX.init(SPI_QUARTER_SPEED);
+ if (row < 20)
+ W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
+ W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
+ row++;
+ if (row >= 200) {
+ size = 809;
+ row = 0;
+
+ gcode_preview_over = 0;
+ //flash_preview_begin = 1;
+
+ card.closefile();
+
+ /*
+ if (gCurFileState.file_open_flag != 0xaa) {
+ reset_file_info();
+ res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
+ if (res == FR_OK) {
+ f_lseek(file,PREVIEW_SIZE+To_pre_view);
+ gCurFileState.file_open_flag = 0xaa;
+ //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
+ srcfp = file;
+ mksReprint.mks_printer_state = MKS_WORKING;
+ once_flag = 0;
+ }
+ }
+ */
+ char *cur_name;
+
+ cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+ SdFile file;
+ SdFile *curDir;
+ card.endFilePrint();
+ const char * const fname = card.diveToFile(true, curDir, cur_name);
+ if (!fname) return;
+ if (file.open(curDir, fname, O_READ)) {
+ gCfgItems.curFilesize = file.fileSize();
+ file.close();
+ update_spi_flash();
+ }
+
+ card.openFileRead(cur_name);
+ if (card.isFileOpen()) {
+ feedrate_percentage = 100;
+ //saved_feedrate_percentage = feedrate_percentage;
+ planner.flow_percentage[0] = 100;
+ planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
+ if (EXTRUDERS == 2) {
+ planner.flow_percentage[1] = 100;
+ planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
+ }
+ card.startFileprint();
+ TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
+ once_flag = 0;
+ }
+ return;
+ }
+ card.closefile();
+ #endif // SDSUPPORT
+ }
+
+ #endif // if 1
+
+ void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
+ int index;
+ int y_off = 0;
+ int _y;
+ uint16_t *p_index;
+ int i;
+
+ for (index = 0; index < 10; index++) { // 200*200
+ #if HAS_BAK_VIEW_IN_FLASH
+ if (sel == 1) {
+ flash_view_Read(bmp_public_buf, 8000); // 20k
+ }
+ else {
+ default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 20k
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ uint16_t Color;
+ for (i = 0; i < (DEFAULT_VIEW_MAX_SIZE / 10);) {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xff) << 8);
+ i += 2;
+ }
+ #endif
+ }
+ #else
+ default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 20k
+ #if ENABLED(TFT_LVGL_UI_SPI)
+ for (i = 0; i < (DEFAULT_VIEW_MAX_SIZE / 10);) {
p_index = (uint16_t *)(&bmp_public_buf[i]);
+ Color = (*p_index >> 8);
+ *p_index = Color | ((*p_index & 0xff) << 8);
+ i += 2;
+ }
+ #endif
+ #endif
+
+ i = 0;
+ #if ENABLED(TFT_LVGL_UI_SPI)
+
+ //SPI_TFT.spi_init(SPI_FULL_SPEED);
+ //SPI_TFT.SetWindows(xpos_pixel, y_off * 20+ypos_pixel, 200,20); //200*200
+ //SPI_TFT.LCD_WriteRAM_Prepare();
+ int j = 0;
+ for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
+ SPI_TFT.spi_init(SPI_FULL_SPEED);
+ SPI_TFT.SetWindows(xpos_pixel, y_off * 20 + ypos_pixel + j, 200, 1); // 200*200
+ SPI_TFT.LCD_WriteRAM_Prepare();
+
+ j++;
+ //memcpy(public_buf,&bmp_public_buf[i],400);
+ SPI_TFT_CS_L;
+ SPI_TFT_DC_H;
+ SPI.dmaSend(&bmp_public_buf[i], 400, true);
+ SPI_TFT_CS_H;
+
+ i += 400;
+ if (i >= 8000) break;
+ }
+ #else
+ int x_off = 0;
+ uint16_t temp_p;
+ ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); // 200*200
+
+ LCD_WriteRAM_Prepare();
+
+ for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
+ for (x_off = 0; x_off < 200; x_off++) {
+ if (sel == 1) {
+ temp_p = (uint16_t)(bmp_public_buf[i] | bmp_public_buf[i + 1] << 8);
+ p_index = &temp_p;
+ }
+ else {
+ p_index = (uint16_t *)(&bmp_public_buf[i]);
+ }
+ if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
+ LCD_IO_WriteData(*p_index);
+ i += 2;
}
- if (*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
- LCD_IO_WriteData(*p_index);
- i += 2;
+ if (i >= 8000) break;
}
- if (i >= 8000) break;
+ #endif // TFT_LVGL_UI_SPI
+ y_off++;
+ }
+ W25QXX.init(SPI_QUARTER_SPEED);
+ }
+
+ void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
+ if (gcode_preview_over == 1) gcode_preview(list_file.file_name[sel_id], xpos_pixel, ypos_pixel);
+ #if HAS_BAK_VIEW_IN_FLASH
+ if (flash_preview_begin == 1) {
+ flash_preview_begin = 0;
+ Draw_default_preview(xpos_pixel, ypos_pixel, 1);
+ }
+ #endif
+ #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
+ if (default_preview_flg == 1) {
+ Draw_default_preview(xpos_pixel, ypos_pixel, 0);
+ default_preview_flg = 0;
}
#endif
- y_off++;
}
- W25QXX.init(SPI_QUARTER_SPEED);
-}
-
-void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
- if (gcode_preview_over == 1) gcode_preview(list_file.file_name[sel_id], xpos_pixel, ypos_pixel);
- #if HAS_BAK_VIEW_IN_FLASH
- if (flash_preview_begin == 1) {
- flash_preview_begin = 0;
- Draw_default_preview(xpos_pixel, ypos_pixel, 1);
- }
- #endif
- #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
- if (default_preview_flg == 1) {
- Draw_default_preview(xpos_pixel, ypos_pixel, 0);
- default_preview_flg = 0;
- }
- #endif
-}
-#endif
+#endif // HAS_GCODE_PREVIEW
void print_time_run() {
static uint8_t lastSec = 0;
@@ -644,7 +873,7 @@ void GUI_RefreshPage() {
switch (disp_state) {
case MAIN_UI:
- lv_draw_ready_print();
+ //lv_draw_ready_print();
break;
case EXTRUSION_UI:
if (temperature_change_frequency == 1) {
@@ -721,7 +950,7 @@ void GUI_RefreshPage() {
{
memset((char *)gCfgItems.move_z_coordinate, ' ', sizeof(gCfgItems.move_z_coordinate));
GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
- sprintf((char *)gCfgItems.move_z_coordinate, "Z: %.3f", current_position[Z_AXIS]);
+ sprintf_P((char *)gCfgItems.move_z_coordinate, PSTR("Z: %.3f"), current_position[Z_AXIS]);
GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
}
}
@@ -844,7 +1073,7 @@ void clear_cur_ui() {
lv_clear_move_motor();
break;
case OPERATE_UI:
- lv_clear_opration();
+ lv_clear_operation();
break;
case PAUSE_UI:
//Clear_pause();
@@ -931,16 +1160,16 @@ void clear_cur_ui() {
//Clear_Tips();
break;
case MACHINE_PARA_UI:
- //Clear_MachinePara();
+ lv_clear_machine_para();
break;
case MACHINE_SETTINGS_UI:
- //Clear_MachineSettings();
+ lv_clear_machine_settings();
break;
case TEMPERATURE_SETTINGS_UI:
//Clear_TemperatureSettings();
break;
case MOTOR_SETTINGS_UI:
- //Clear_MotorSettings();
+ lv_clear_motor_settings();
break;
case MACHINETYPE_UI:
//Clear_MachineType();
@@ -970,16 +1199,18 @@ void clear_cur_ui() {
//Clear_XYZLevelPara();
break;
case MAXFEEDRATE_UI:
- //Clear_MaxFeedRate();
+ lv_clear_max_feedrate_settings();
break;
case STEPS_UI:
- //Clear_Steps();
+ lv_clear_step_settings();
break;
case ACCELERATION_UI:
- //Clear_Acceleration();
+ lv_clear_acceleration_settings();
break;
case JERK_UI:
- //Clear_Jerk();
+ #if HAS_CLASSIC_JERK
+ lv_clear_jerk_settings();
+ #endif
break;
case MOTORDIR_UI:
//Clear_MotorDir();
@@ -994,7 +1225,7 @@ void clear_cur_ui() {
//Clear_HotbedConfig();
break;
case ADVANCED_UI:
- //Clear_Advanced();
+ lv_clear_advance_settings();
break;
case DOUBLE_Z_UI:
//Clear_DoubleZ();
@@ -1003,11 +1234,27 @@ void clear_cur_ui() {
//Clear_EnableInvert();
break;
case NUMBER_KEY_UI:
- //Clear_NumberKey();
+ lv_clear_number_key();
break;
case BABY_STEP_UI:
//Clear_babyStep();
break;
+ case PAUSE_POS_UI:
+ lv_clear_pause_position();
+ break;
+ #if HAS_TRINAMIC_CONFIG
+ case TMC_CURRENT_UI:
+ lv_clear_tmc_current_settings();
+ break;
+ #endif
+ case EEPROM_SETTINGS_UI:
+ lv_clear_eeprom_settings();
+ break;
+ #if HAS_STEALTHCHOP
+ case TMC_MODE_UI:
+ lv_clear_tmc_step_mode_settings();
+ break;
+ #endif
default:
break;
}
@@ -1034,13 +1281,13 @@ void draw_return_ui() {
lv_draw_move_motor();
break;
case OPERATE_UI:
- lv_draw_opration();
+ lv_draw_operation();
break;
#if 1
- case PAUSE_UI:
- //draw_pause();
- break;
+ case PAUSE_UI:
+ //draw_pause();
+ break;
#endif
case EXTRUSION_UI:
@@ -1075,9 +1322,9 @@ void draw_return_ui() {
break;
#if tan_mask
- case LOG_UI:
- //draw_Connect();
- break;
+ case LOG_UI:
+ //draw_Connect();
+ break;
#endif
case CALIBRATE_UI:
@@ -1106,9 +1353,9 @@ void draw_return_ui() {
break;
#if tan_mask
- case ZOFFSET_UI:
- //draw_Zoffset();
- break;
+ case ZOFFSET_UI:
+ //draw_Zoffset();
+ break;
#endif
case TOOL_UI:
@@ -1130,16 +1377,16 @@ void draw_return_ui() {
//draw_Tips();
break;
case MACHINE_PARA_UI:
- //draw_MachinePara();
+ lv_draw_machine_para();
break;
case MACHINE_SETTINGS_UI:
- //draw_MachineSettings();
+ lv_draw_machine_settings();
break;
case TEMPERATURE_SETTINGS_UI:
//draw_TemperatureSettings();
break;
case MOTOR_SETTINGS_UI:
- //draw_MotorSettings();
+ lv_draw_motor_settings();
break;
case MACHINETYPE_UI:
//draw_MachineType();
@@ -1169,16 +1416,18 @@ void draw_return_ui() {
//draw_XYZLevelPara();
break;
case MAXFEEDRATE_UI:
- //draw_MaxFeedRate();
+ lv_draw_max_feedrate_settings();
break;
case STEPS_UI:
- //draw_Steps();
+ lv_draw_step_settings();
break;
case ACCELERATION_UI:
- //draw_Acceleration();
+ lv_draw_acceleration_settings();
break;
case JERK_UI:
- //draw_Jerk();
+ #if HAS_CLASSIC_JERK
+ lv_draw_jerk_settings();
+ #endif
break;
case MOTORDIR_UI:
//draw_MotorDir();
@@ -1193,7 +1442,7 @@ void draw_return_ui() {
//draw_HotbedConfig();
break;
case ADVANCED_UI:
- //draw_Advanced();
+ lv_draw_advance_settings();
break;
case DOUBLE_Z_UI:
//draw_DoubleZ();
@@ -1202,7 +1451,7 @@ void draw_return_ui() {
//draw_EnableInvert();
break;
case NUMBER_KEY_UI:
- //draw_NumberKey();
+ lv_draw_number_key();
break;
case DIALOG_UI:
//draw_dialog(DialogType);
@@ -1210,6 +1459,22 @@ void draw_return_ui() {
case BABY_STEP_UI:
//draw_babyStep();
break;
+ case PAUSE_POS_UI:
+ lv_draw_pause_position();
+ break;
+ #if HAS_TRINAMIC_CONFIG
+ case TMC_CURRENT_UI:
+ lv_draw_tmc_current_settings();
+ break;
+ #endif
+ case EEPROM_SETTINGS_UI:
+ lv_draw_eeprom_settings();
+ break;
+ #if HAS_STEALTHCHOP
+ case TMC_MODE_UI:
+ lv_draw_tmc_step_mode_settings();
+ break;
+ #endif
default: break;
}
}
@@ -1228,6 +1493,13 @@ void draw_return_ui() {
#endif
+void lv_ex_line(lv_obj_t * line, lv_point_t *points) {
+ /*Copy the previous line and apply the new style*/
+ lv_line_set_points(line, points, 2); /*Set the points*/
+ lv_line_set_style(line, LV_LINE_STYLE_MAIN, &style_line);
+ lv_obj_align(line, NULL, LV_ALIGN_IN_TOP_MID, 0, 0);
+}
+
extern volatile uint32_t systick_uptime_millis;
void print_time_count() {
@@ -1238,7 +1510,7 @@ void print_time_count() {
void LV_TASK_HANDLER() {
//lv_tick_inc(1);
lv_task_handler();
- TERN_(MKS_TEST, mks_test());
+ if (mks_test_flag == 0x1e) mks_hardware_test();
#if HAS_GCODE_PREVIEW
disp_pre_gcode(2, 36);
#endif
@@ -1246,4 +1518,4 @@ void LV_TASK_HANDLER() {
//sd_detection();
}
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
index 612ba4b51cad..595565e1c704 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
@@ -22,16 +22,17 @@
#pragma once
#ifdef __cplusplus
-extern "C" { /* C-declarations for C++ */
+ extern "C" { /* C-declarations for C++ */
#endif
+#include
+
#include
#include
-#include "lvgl.h"
-//the colors of the last MKS Ui
+// the colors of the last MKS Ui
#undef LV_COLOR_BACKGROUND
-#define LV_COLOR_BACKGROUND LV_COLOR_MAKE(0x1A, 0x1A, 0x1A) //LV_COLOR_MAKE(0x00, 0x00, 0x00)
+#define LV_COLOR_BACKGROUND LV_COLOR_MAKE(0x1A, 0x1A, 0x1A) // LV_COLOR_MAKE(0x00, 0x00, 0x00)
#include "tft_multi_language.h"
#include "draw_ready_print.h"
@@ -41,7 +42,7 @@ extern "C" { /* C-declarations for C++ */
#include "draw_print_file.h"
#include "draw_dialog.h"
#include "draw_printing.h"
-#include "draw_opration.h"
+#include "draw_operation.h"
#include "draw_preHeat.h"
#include "draw_extrusion.h"
#include "draw_home.h"
@@ -51,7 +52,22 @@ extern "C" { /* C-declarations for C++ */
#include "draw_change_speed.h"
#include "draw_manuaLevel.h"
#include "draw_error_message.h"
-#include "printer_opration.h"
+#include "printer_operation.h"
+#include "draw_machine_para.h"
+#include "draw_machine_settings.h"
+#include "draw_motor_settings.h"
+#include "draw_advance_settings.h"
+#include "draw_acceleration_settings.h"
+#include "draw_number_key.h"
+#include "draw_jerk_settings.h"
+#include "draw_pause_position.h"
+#include "draw_step_settings.h"
+#include "draw_tmc_current_settings.h"
+#include "draw_eeprom_settings.h"
+#include "draw_max_feedrate_settings.h"
+#include "draw_tmc_step_mode_settings.h"
+
+#include "../../inc/MarlinConfigPre.h"
#define TFT35
@@ -70,8 +86,8 @@ extern "C" { /* C-declarations for C++ */
#define BUTTON_TEXT_Y_OFFSET -20
- #define TITLE_XPOS 3 //TFT_screen.title_xpos
- #define TITLE_YPOS 5 //TFT_screen.title_ypos
+ #define TITLE_XPOS 3 // TFT_screen.title_xpos
+ #define TITLE_YPOS 5 // TFT_screen.title_ypos
#define FILE_BTN_CNT 6
@@ -81,17 +97,39 @@ extern "C" { /* C-declarations for C++ */
#define FILE_PRE_PIC_X_OFFSET 8
#define FILE_PRE_PIC_Y_OFFSET 0
- #define PREVIEW_LITTLE_PIC_SIZE 40910//400*100+9*101+1
- #define PREVIEW_SIZE 202720//(PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1)
+ #define PREVIEW_LITTLE_PIC_SIZE 40910 // 400*100+9*101+1
+ #define PREVIEW_SIZE 202720 // (PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1)
#define GCFG_FLAG_VALUE 0xEE
-#else
+ // machine parameter ui
+ #define PARA_UI_POS_X 10
+ #define PARA_UI_POS_Y 50
+
+ #define PARA_UI_SIZE_X 450
+ #define PARA_UI_SIZE_Y 40
+
+ #define PARA_UI_ARROW_V 12
+
+ #define PARA_UI_BACL_POS_X 400
+ #define PARA_UI_BACL_POS_Y 270
+
+ #define PARA_UI_TURN_PAGE_POS_X 320
+ #define PARA_UI_TURN_PAGE_POS_Y 270
+
+ #define PARA_UI_VALUE_SIZE_X 370
+ #define PARA_UI_VALUE_POS_X 400
+ #define PARA_UI_VALUE_V 5
+
+ #define PARA_UI_STATE_POS_X 380
+ #define PARA_UI_STATE_V 2
+
+#else // ifdef TFT35
#define TFT_WIDTH 320
#define TFT_HEIGHT 240
-#endif
+#endif // ifdef TFT35
extern char public_buf_m[100];
extern char public_buf_l[30];
@@ -104,6 +142,9 @@ typedef struct {
uint8_t from_flash_pic;
uint8_t finish_power_off;
uint8_t pause_reprint;
+ float pausePosX;
+ float pausePosY;
+ float pausePosZ;
uint32_t curFilesize;
} CFG_ITMES;
@@ -111,7 +152,8 @@ typedef struct {
uint8_t curTempType : 1,
curSprayerChoose : 3,
stepHeat : 4;
- uint8_t leveling_first_time : 1;
+ uint8_t leveling_first_time : 1,
+ para_ui_page : 1;
uint8_t extruStep;
uint8_t extruSpeed;
uint8_t print_state;
@@ -119,6 +161,7 @@ typedef struct {
uint8_t waitEndMoves;
uint16_t moveSpeed;
float move_dist;
+ uint8_t F[4];
} UI_CFG;
typedef enum {
@@ -185,7 +228,11 @@ typedef enum {
ENABLE_INVERT_UI,
NUMBER_KEY_UI,
BABY_STEP_UI,
- ERROR_MESSAGE_UI
+ ERROR_MESSAGE_UI,
+ PAUSE_POS_UI,
+ TMC_CURRENT_UI,
+ TMC_MODE_UI,
+ EEPROM_SETTINGS_UI
} DISP_STATE;
typedef struct {
@@ -203,6 +250,46 @@ typedef struct {
} PRINT_TIME;
extern PRINT_TIME print_time;
+typedef enum {
+ PrintAcceleration,
+ RetractAcceleration,
+ TravelAcceleration,
+ XAcceleration,
+ YAcceleration,
+ ZAcceleration,
+ E0Acceleration,
+ E1Acceleration,
+
+ XMaxFeedRate,
+ YMaxFeedRate,
+ ZMaxFeedRate,
+ E0MaxFeedRate,
+ E1MaxFeedRate,
+
+ XJerk,
+ YJerk,
+ ZJerk,
+ EJerk,
+
+ Xstep,
+ Ystep,
+ Zstep,
+ E0step,
+ E1step,
+
+ Xcurrent,
+ Ycurrent,
+ Zcurrent,
+ E0current,
+ E1current,
+
+ pause_pos_x,
+ pause_pos_y,
+ pause_pos_z
+
+}value_state;
+extern value_state value;
+
extern CFG_ITMES gCfgItems;
extern UI_CFG uiCfg;
extern DISP_STATE disp_state;
@@ -210,8 +297,16 @@ extern DISP_STATE last_disp_state;
extern DISP_STATE_STACK disp_state_stack;
extern lv_style_t tft_style_scr;
-extern lv_style_t tft_style_lable_pre;
-extern lv_style_t tft_style_lable_rel;
+extern lv_style_t tft_style_label_pre;
+extern lv_style_t tft_style_label_rel;
+extern lv_style_t style_line;
+extern lv_style_t style_para_value_pre;
+extern lv_style_t style_para_value_rel;
+extern lv_style_t style_num_key_pre;
+extern lv_style_t style_num_key_rel;
+extern lv_style_t style_num_text;
+
+extern lv_point_t line_points[4][2];
extern void gCfgItems_init();
extern void ui_cfg_init();
@@ -230,6 +325,7 @@ extern void gCfg_to_spiFlah();
extern void print_time_count();
extern void LV_TASK_HANDLER();
+extern void lv_ex_line(lv_obj_t * line, lv_point_t *points);
#ifdef __cplusplus
} /* C-declarations for C++ */
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp b/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
index 2d7b7d440b69..856d645e9ed4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
@@ -21,11 +21,12 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
-#include "../../../../MarlinCore.h"
-#include "lvgl.h"
#include "pic_manager.h"
+#include
+
+#include "../../../../inc/MarlinConfig.h"
#if HAS_SPI_FLASH_FONT
@@ -46,10 +47,10 @@ typedef struct {
} glyph_dsc_t;
static x_header_t __g_xbf_hd = { .min = 0, .max = 0, .bpp = 0 };
-static uint8_t __g_font_buf[75];
+static uint8_t __g_font_buf[63];
static uint8_t *__user_font_getdata(int offset, int size) {
- //memset(__g_font_buf,0,sizeof(__g_font_buf));
+ //ZERO(__g_font_buf);
get_spi_flash_data((char *)__g_font_buf, offset, size);
return __g_font_buf;
//return &buf_test[offset];
@@ -106,10 +107,9 @@ lv_font_t gb2312_puhui32;
void init_gb2312_font() {
gb2312_puhui32.get_glyph_bitmap = __user_font_get_bitmap;
gb2312_puhui32.get_glyph_dsc = __user_font_get_glyph_dsc;
- gb2312_puhui32.line_height = 25;
+ gb2312_puhui32.line_height = 21;
gb2312_puhui32.base_line = 0;
}
#endif // HAS_SPI_FLASH_FONT
-
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
index a4061eec2c2e..b5b77c50b24b 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
@@ -21,63 +21,69 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+ #include "SPI_TFT.h"
+#endif
#include "tft_lvgl_configuration.h"
-#include "lvgl.h"
#include "draw_ready_print.h"
#include "W25Qxx.h"
#include "mks_hardware_test.h"
+#include "draw_ui.h"
+#include "pic_manager.h"
+#include
#include "../../../../MarlinCore.h"
#include "../../../../module/temperature.h"
#include "../../../../feature/touch/xpt2046.h"
+#include "../../../../sd/cardreader.h"
-#include "pic_manager.h"
-
-#if ENABLED(MKS_TEST)
-
- extern uint8_t curent_disp_ui;
-
- uint8_t pw_det_sta, pw_off_sta, mt_det_sta, mt_det2_sta, mt_det3_sta;
- uint8_t endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta;
- void test_gpio_readlevel_L() {
+uint8_t pw_det_sta, pw_off_sta, mt_det_sta, mt_det2_sta, mt_det3_sta;
+uint8_t endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta;
+void test_gpio_readlevel_L() {
+ #if ENABLED(MKS_TEST)
volatile uint32_t itest;
- WRITE(WIFI_IO2_PIN, HIGH);
+ WRITE(WIFI_IO0_PIN, HIGH);
itest = 10000;
while (itest--);
pw_det_sta = (READ(POWER_LOSS_PIN) == 0);
pw_off_sta = (READ(PS_ON_PIN) == 0);
- mt_det_sta = (READ(FIL_RUNOUT_PIN) == 0);
- mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 0);
- mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 0);
+ mt_det_sta = (READ(MT_DET_1_PIN) == 0);
+ mt_det2_sta = (READ(MT_DET_2_PIN) == 0);
+ //mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 0);
endstopx1_sta = (READ(X_MIN_PIN) == 0);
endstopx2_sta = (READ(X_MAX_PIN) == 0);
endstopy1_sta = (READ(Y_MIN_PIN) == 0);
endstopy2_sta = (READ(Y_MAX_PIN) == 0);
endstopz1_sta = (READ(Z_MIN_PIN) == 0);
endstopz2_sta = (READ(Z_MAX_PIN) == 0);
- }
+ #endif
+}
- void test_gpio_readlevel_H() {
+void test_gpio_readlevel_H() {
+ #if ENABLED(MKS_TEST)
volatile uint32_t itest;
- WRITE(WIFI_IO2_PIN, LOW);
+ WRITE(WIFI_IO0_PIN, LOW);
itest = 10000;
while (itest--);
pw_det_sta = (READ(POWER_LOSS_PIN) == 1);
pw_off_sta = (READ(PS_ON_PIN) == 1);
- mt_det_sta = (READ(FIL_RUNOUT_PIN) == 1);
- mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 1);
- mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 1);
+ mt_det_sta = (READ(MT_DET_1_PIN) == 1);
+ mt_det2_sta = (READ(MT_DET_2_PIN) == 1);
+ //mt_det3_sta = (READ(MT_DET_3_PIN) == 1);
endstopx1_sta = (READ(X_MIN_PIN) == 1);
endstopx2_sta = (READ(X_MAX_PIN) == 1);
endstopy1_sta = (READ(Y_MIN_PIN) == 1);
endstopy2_sta = (READ(Y_MAX_PIN) == 1);
endstopz1_sta = (READ(Z_MIN_PIN) == 1);
endstopz2_sta = (READ(Z_MAX_PIN) == 1);
- }
+ #endif
+}
- void init_Tst_GPIO() {
+void init_test_gpio() {
+ #ifdef MKS_TEST
SET_INPUT_PULLUP(X_MIN_PIN);
SET_INPUT_PULLUP(X_MAX_PIN);
SET_INPUT_PULLUP(Y_MIN_PIN);
@@ -85,70 +91,77 @@
SET_INPUT_PULLUP(Z_MIN_PIN);
SET_INPUT_PULLUP(Z_MAX_PIN);
- SET_OUTPUT(WIFI_IO2_PIN);
+ SET_OUTPUT(WIFI_IO0_PIN);
- SET_INPUT_PULLUP(FIL_RUNOUT_PIN);
- SET_INPUT_PULLUP(FIL_RUNOUT_2_PIN);
- SET_INPUT_PULLUP(FIL_RUNOUT_3_PIN);
+ SET_INPUT_PULLUP(MT_DET_1_PIN);
+ SET_INPUT_PULLUP(MT_DET_2_PIN);
+ //SET_INPUT_PULLUP(MT_DET_3_PIN);
SET_INPUT_PULLUP(POWER_LOSS_PIN);
SET_INPUT_PULLUP(PS_ON_PIN);
SET_INPUT_PULLUP(SERVO0_PIN);
- SET_OUTPUT(E0_ENABLE_PIN);
SET_OUTPUT(X_ENABLE_PIN);
+ SET_OUTPUT(Y_ENABLE_PIN);
+ SET_OUTPUT(Z_ENABLE_PIN);
+ SET_OUTPUT(E0_ENABLE_PIN);
+ SET_OUTPUT(E1_ENABLE_PIN);
WRITE(X_ENABLE_PIN, LOW);
WRITE(Y_ENABLE_PIN, LOW);
WRITE(Z_ENABLE_PIN, LOW);
WRITE(E0_ENABLE_PIN, LOW);
WRITE(E1_ENABLE_PIN, LOW);
- WRITE(E2_ENABLE_PIN, LOW);
- }
+ //WRITE(E2_ENABLE_PIN, LOW);
+ #endif
+}
- void mks_test_beeper() {
+void mks_test_beeper() {
+ #ifdef MKS_TEST
WRITE(BEEPER_PIN, HIGH);
delay(100);
WRITE(BEEPER_PIN, LOW);
delay(100);
- }
+ #endif
+}
- void Test_GPIO() {
- init_Tst_GPIO();
+void mks_gpio_test(){
+ #if ENABLED(MKS_TEST)
+ init_test_gpio();
test_gpio_readlevel_L();
test_gpio_readlevel_H();
test_gpio_readlevel_L();
- if ((pw_det_sta == 1) && (mt_det_sta == 1) && (mt_det2_sta == 1) && (mt_det3_sta == 1)) {
- if (curent_disp_ui == 1) disp_det_ok();
- }
- else if (curent_disp_ui == 1) disp_det_error();
- if ((endstopx1_sta == 1)
- && (endstopx2_sta == 1)
- && (endstopy1_sta == 1)
- && (endstopy2_sta == 1)
- && (endstopz1_sta == 1)
- && (endstopz2_sta == 1)
- ) {
- if (curent_disp_ui == 1) disp_Limit_ok();
- }
- else if (curent_disp_ui == 1)
- disp_Limit_error();
- //mks_test_beeper();
+ if ((pw_det_sta == 1) && (mt_det_sta == 1) && (mt_det2_sta == 1)) // &&(mt_det3_sta == 1))
+ disp_det_ok();
+ else
+ disp_det_error();
- }
+ if ( (endstopx1_sta == 1)
+ && (endstopx2_sta == 1)
+ && (endstopy1_sta == 1)
+ && (endstopy2_sta == 1)
+ && (endstopz1_sta == 1)
+ && (endstopz2_sta == 1)
+ )
+ disp_Limit_ok();
+ else
+ disp_Limit_error();
+ #endif
+}
- void mks_test() {
+void mks_hardware_test(){
+ #if ENABLED(MKS_TEST)
if (millis() % 2000 < 1000) {
WRITE(X_DIR_PIN, LOW);
WRITE(Y_DIR_PIN, LOW);
WRITE(Z_DIR_PIN, LOW);
WRITE(E0_DIR_PIN, LOW);
WRITE(E1_DIR_PIN, LOW);
- WRITE(E2_DIR_PIN, LOW);
+ //WRITE(E2_DIR_PIN, LOW);
thermalManager.fan_speed[0] = 255;
- WRITE(HEATER_2_PIN, HIGH); // HE2
+ //WRITE(HEATER_2_PIN, HIGH); // HE2
WRITE(HEATER_1_PIN, HIGH); // HE1
WRITE(HEATER_0_PIN, HIGH); // HE0
WRITE(HEATER_BED_PIN, HIGH); // HOT-BED
@@ -159,28 +172,29 @@
WRITE(Z_DIR_PIN, HIGH);
WRITE(E0_DIR_PIN, HIGH);
WRITE(E1_DIR_PIN, HIGH);
- WRITE(E2_DIR_PIN, HIGH);
+ //WRITE(E2_DIR_PIN, HIGH);
thermalManager.fan_speed[0] = 0;
- WRITE(HEATER_2_PIN, LOW); // HE2
+ //WRITE(HEATER_2_PIN, LOW); // HE2
WRITE(HEATER_1_PIN, LOW); // HE1
WRITE(HEATER_0_PIN, LOW); // HE0
WRITE(HEATER_BED_PIN, LOW); // HOT-BED
}
- if ((endstopx1_sta == 1) && (endstopx2_sta == 1)
- && (endstopy1_sta == 1) && (endstopy2_sta == 1)
- && (endstopz1_sta == 1) && (endstopz2_sta == 1)
- ) {
+ if ( (endstopx1_sta == 1) && (endstopx2_sta == 1)
+ && (endstopy1_sta == 1) && (endstopy2_sta == 1)
+ && (endstopz1_sta == 1) && (endstopz2_sta == 1)
+ ) {
+ // nothing here
}
else {
- mks_test_beeper();
+ //mks_test_beeper();
}
- if (curent_disp_ui == 1)
- disp_test();
- }
+ if (disp_state == PRINT_READY_UI)
+ mks_disp_test();
-#endif // MKS_TEST
+ #endif
+}
static const uint16_t ASCII_Table_16x24[] PROGMEM = {
// Space ' '
@@ -568,12 +582,16 @@ static const uint16_t ASCII_Table_16x24[] PROGMEM = {
void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor) {
for (uint16_t i = 0; i < 24; i++) {
const uint16_t tmp_char = pgm_read_word(&ASCII_Table_16x24[((c - 0x20) * 24) + i]);
- for (uint16_t j = 0; j < 16; j++)
- tft_set_point(x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor);
+ for (uint16_t j = 0; j < 16; j++) {
+ TERN(TFT_LVGL_UI_SPI, SPI_TFT.SetPoint, tft_set_point)
+ (x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor);
+ }
}
}
void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor) {
+ // Select TFT SPI so it can receive data
+ TERN_(TFT_LVGL_UI_SPI, SPI_TFT.spi_init(SPI_FULL_SPEED));
while (*string != '\0') {
disp_char_1624(x, y, *string, charColor, bkColor);
string++;
@@ -582,14 +600,28 @@ void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor
}
//static lv_obj_t * scr_test;
-void disp_pic_update() {
- LCD_Clear(0x0000);
- disp_string(120, 150, "PIC Updating...", 0xFFFF, 0x0000);
+void disp_assets_update() {
+ TERN(TFT_LVGL_UI_SPI,, LCD_Clear(0x0000));
+ disp_string(100, 140, "Assets Updating...", 0xFFFF, 0x0000);
}
-void disp_font_update() {
- LCD_Clear(0x0000);
- disp_string(120, 150, "FONT Updating...", 0xFFFF, 0x0000);
+void disp_assets_update_progress(const char *msg) {
+ char buf[30];
+ memset(buf, ' ', COUNT(buf));
+ strncpy(buf, msg, strlen(msg));
+ buf[COUNT(buf)-1] = '\0';
+ disp_string(100, 165, buf, 0xFFFF, 0x0000);
}
-#endif // TFT_LVGL_UI
+uint8_t mks_test_flag = 0;
+const char *MKSTestPath = "MKS_TEST";
+
+#if ENABLED(SDSUPPORT)
+ void mks_test_get() {
+ SdFile dir, root = card.getroot();
+ if (dir.open(&root, MKSTestPath, O_RDONLY))
+ mks_test_flag = 0x1e;
+ }
+#endif
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
index 6dc9fb6368c0..0e2d8096bac9 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
@@ -21,11 +21,13 @@
*/
#pragma once
-#include "lvgl.h"
+#include
-void Test_GPIO();
+void mks_gpio_test();
void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor);
void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor);
-void mks_test();
-void disp_pic_update();
-void disp_font_update();
+void mks_hardware_test();
+void disp_assets_update();
+void disp_assets_update_progress(const char *msg);
+void mks_test_get();
+extern uint8_t mks_test_flag;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
index 8cf2233715f6..2a16bcf1b3b9 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
@@ -21,7 +21,7 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
@@ -40,7 +40,7 @@ extern unsigned char bmp_public_buf[17 * 1024];
extern char *createFilename(char * const buffer, const dir_t &p);
#endif
-static char assets[][30] = {
+static char assets[][LONG_FILENAME_LENGTH] = {
//homing screen
"bmp_Zero.bin",
"bmp_zeroX.bin",
@@ -90,7 +90,7 @@ static char assets[][30] = {
//select file screen
"bmp_pageUp.bin",
"bmp_pageDown.bin",
- //"bmp_Back.bin", //TODO: why two back buttons? Why not just one? (return / back)
+ "bmp_Back.bin", //TODO: why two back buttons? Why not just one? (return / back)
"bmp_Dir.bin",
"bmp_File.bin",
@@ -164,14 +164,18 @@ static char assets[][30] = {
"bmp_French_sel.bin",
"bmp_Italy.bin",
"bmp_Italy_sel.bin",
- #endif //HAS_LANG_SELECT_SCREEN
+ #endif // HAS_LANG_SELECT_SCREEN
- //gcode preview
+ // gcode preview
#if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
"bmp_preview.bin",
#endif
- //settings screen
+ #if HAS_LOGO_IN_FLASH
+ "bmp_logo.bin",
+ #endif
+
+ // settings screen
"bmp_About.bin",
//"bmp_Language.bin",
//"bmp_Fan.bin",
@@ -182,14 +186,27 @@ static char assets[][30] = {
"bmp_Set.bin",
"bmp_Tool.bin",
- //base icons
+ #if ENABLED(HAS_STEALTHCHOP)
+ //"bmp_back70x40.bin",
+ "bmp_disable.bin",
+ "bmp_enable.bin",
+ #endif
+
+ // settings screen
+ "bmp_eeprom_settings.bin",
+ "bmp_machine_para.bin",
+ "bmp_function1.bin",
+
+ // base icons
+ "bmp_arrow.bin",
+ "bmp_back70x40.bin",
+ "bmp_value_blank.bin",
"bmp_Return.bin"
};
#if HAS_SPI_FLASH_FONT
- static char fonts[][50] = {
- "GBK16.bin",
- "UNIGBK.bin",
+ static char fonts[][LONG_FILENAME_LENGTH] = {
+ "FontUNIGBK.bin",
};
#endif
@@ -220,29 +237,28 @@ uint32_t lv_get_pic_addr(uint8_t *Pname) {
addr = PIC_DATA_ADDR_TFT35 + i * PER_PIC_MAX_SPACE_TFT35;
else
addr = PIC_DATA_ADDR_TFT32 + i * PER_PIC_MAX_SPACE_TFT32;
- return (addr + 4);//The purpose of adding 4 is to remove 4-byte picture header information.
+ return addr;
}
}
return addr;
}
-const char *picPath = "mks_pic";
-const char *bakPath = "bak_pic";
-
-const char *fontPath = "mks_font";
-const char *bakFont = "bak_font";
+const char *assetsPath = "assets";
+const char *bakPath = "_assets";
void spiFlashErase_PIC() {
volatile uint32_t pic_sectorcnt = 0;
- for (pic_sectorcnt = 0; pic_sectorcnt < TERN(MKS_TEST, 2, PIC_SIZE_xM * 1024 / 64); pic_sectorcnt++)
+ W25QXX.init(SPI_QUARTER_SPEED);
+ for (pic_sectorcnt = 0; pic_sectorcnt < PIC_SIZE_xM * 1024 / 64; pic_sectorcnt++)
W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024);
}
#if HAS_SPI_FLASH_FONT
void spiFlashErase_FONT() {
volatile uint32_t Font_sectorcnt = 0;
- for (Font_sectorcnt = 0; Font_sectorcnt < FONT_SIZE_xM * 1024 / 64; Font_sectorcnt++)
+ W25QXX.init(SPI_QUARTER_SPEED);
+ for (Font_sectorcnt = 0; Font_sectorcnt < 32-1; Font_sectorcnt++)
W25QXX.SPI_FLASH_BlockErase(FONTINFOADDR + Font_sectorcnt * 64 * 1024);
}
#endif
@@ -347,103 +363,129 @@ uint8_t public_buf[512];
longName[j] = '\0';
}
- void UpdatePic() {
- char *fn;
- unsigned char logoFlag;
+ static int8_t arrayFindStr(const char arr[][LONG_FILENAME_LENGTH], uint8_t arraySize, const char* str) {
+ for (uint8_t a = 0; a < arraySize; a++) {
+ if (strcasecmp(arr[a], str) == 0)
+ return a;
+ }
+ return -1;
+ }
+
+ #define ASSET_TYPE_ICON 0
+ #define ASSET_TYPE_LOGO 1
+ #define ASSET_TYPE_TITLE_LOGO 2
+ #define ASSET_TYPE_G_PREVIEW 3
+ #define ASSET_TYPE_FONT 4
+ static void loadAsset(SdFile &dir, dir_t& entry, const char *fn, int8_t assetType) {
+ SdFile file;
+ char dosFilename[FILENAME_LENGTH];
+ createFilename(dosFilename, entry);
+ if (!file.open(&dir, dosFilename, O_READ)) {
+ #if ENABLED(MARLIN_DEV_MODE)
+ SERIAL_ECHOLNPAIR("Error opening Asset: ", fn);
+ #endif
+ return;
+ }
+
+ disp_assets_update_progress(fn);
+
+ W25QXX.init(SPI_QUARTER_SPEED);
+
uint16_t pbr;
uint32_t pfileSize;
uint32_t totalSizeLoaded = 0;
uint32_t Pic_Write_Addr;
+ pfileSize = file.fileSize();
+ totalSizeLoaded += pfileSize;
+ if (assetType == ASSET_TYPE_LOGO) {
+ while (1) {
+ pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+ Pic_Logo_Write((uint8_t *)fn, public_buf, pbr); //
+ if (pbr < BMP_WRITE_BUF_LEN) break;
+ }
+ }
+ else if (assetType == ASSET_TYPE_TITLE_LOGO) {
+ while (1) {
+ pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+ Pic_TitleLogo_Write((uint8_t *)fn, public_buf, pbr); //
+ if (pbr < BMP_WRITE_BUF_LEN) break;
+ }
+ }
+ else if (assetType == ASSET_TYPE_G_PREVIEW) {
+ while (1) {
+ pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+ default_view_Write(public_buf, pbr); //
+ if (pbr < BMP_WRITE_BUF_LEN) break;
+ }
+ }
+ else if (assetType == ASSET_TYPE_ICON) {
+ Pic_Write_Addr = Pic_Info_Write((uint8_t *)fn, pfileSize);
+ while (1) {
+ pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+ W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
+ Pic_Write_Addr += pbr;
+ if (pbr < BMP_WRITE_BUF_LEN) break;
+ }
+ }
+ else if (assetType == ASSET_TYPE_FONT) {
+ Pic_Write_Addr = UNIGBK_FLASH_ADDR;
+ while (1) {
+ pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+ W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
+ Pic_Write_Addr += pbr;
+ if (pbr < BMP_WRITE_BUF_LEN) break;
+ }
+ }
+ file.close();
+
+ #if ENABLED(MARLIN_DEV_MODE)
+ SERIAL_ECHOLNPAIR("Asset added: ", fn);
+ #endif
+ }
+
+ void UpdateAssets() {
SdFile dir, root = card.getroot();
- if (dir.open(&root, picPath, O_RDONLY)) {
+ if (dir.open(&root, assetsPath, O_RDONLY)) {
- disp_pic_update();
+ disp_assets_update();
+ disp_assets_update_progress("Erasing pics...");
spiFlashErase_PIC();
+ #if HAS_SPI_FLASH_FONT
+ disp_assets_update_progress("Erasing fonts...");
+ spiFlashErase_FONT();
+ #endif
+ disp_assets_update_progress("Reading files...");
dir_t d;
while (dir.readDir(&d, card.longFilename) > 0) {
// if we dont get a long name, but gets a short one, try it
- if (card.longFilename[0] == 0 && d.name[0] != 0) {
+ if (card.longFilename[0] == 0 && d.name[0] != 0)
dosName2LongName((const char*)d.name, card.longFilename);
- }
-
- if (card.longFilename[0] == 0)
- continue;
- if (card.longFilename[0] == '.')
- continue;
+ if (card.longFilename[0] == 0) continue;
+ if (card.longFilename[0] == '.') continue;
- uint8_t a = -1;
- for(a = 0; a < COUNT(assets); a++) {
- if (strcasecmp(assets[a], card.longFilename) == 0) {
- break;
- }
- }
- if (a < 0 || a >= COUNT(assets)) continue;
+ uint8_t a = arrayFindStr(assets, COUNT(assets), card.longFilename);
+ if (a >= 0 && a < COUNT(assets)) {
+ uint8_t assetType = ASSET_TYPE_ICON;
+ if (strstr(assets[a], "_logo"))
+ assetType = ASSET_TYPE_LOGO;
+ else if (strstr(assets[a], "_titlelogo"))
+ assetType = ASSET_TYPE_TITLE_LOGO;
+ else if (strstr(assets[a], "_preview"))
+ assetType = ASSET_TYPE_G_PREVIEW;
- fn = assets[a];
- char dosFilename[FILENAME_LENGTH];
- createFilename(dosFilename, d);
+ loadAsset(dir, d, assets[a], assetType);
- SdFile file;
- if (!file.open(&dir, dosFilename, O_READ)) {
- #if ENABLED(MARLIN_DEV_MODE)
- SERIAL_ECHOLNPAIR("Error opening Asset: ", fn);
- #endif
continue;
}
- if (strstr(fn, "_logo"))
- logoFlag = 1;
- else if (strstr(fn, "_titlelogo"))
- logoFlag = 2;
- else if (strstr(fn, "_preview"))
- logoFlag = 3;
- else
- logoFlag = 0;
-
- pfileSize = file.fileSize();
- totalSizeLoaded += pfileSize;
- if (logoFlag == 1) {
- while (1) {
- pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
- Pic_Logo_Write((uint8_t *)fn, public_buf, pbr); //
- if (pbr < BMP_WRITE_BUF_LEN)
- break;
+ #if HAS_SPI_FLASH_FONT
+ a = arrayFindStr(fonts, COUNT(fonts), card.longFilename);
+ if (a >= 0 && a < COUNT(fonts)) {
+ loadAsset(dir, d, fonts[a], ASSET_TYPE_FONT);
}
- }
- else if (logoFlag == 2) {
- while (1) {
- pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
- Pic_TitleLogo_Write((uint8_t *)fn, public_buf, pbr); //
- if (pbr < BMP_WRITE_BUF_LEN)
- break;
- }
- }
- else if (logoFlag == 3) {
- while (1) {
- pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
- default_view_Write(public_buf, pbr); //
- if (pbr < BMP_WRITE_BUF_LEN)
- break;
- }
- }
- else {
- Pic_Write_Addr = Pic_Info_Write((uint8_t *)fn, pfileSize);
- while (1) {
- pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
- W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
- Pic_Write_Addr += pbr;
- if (pbr < BMP_WRITE_BUF_LEN)
- break;
- }
- }
-
- #if ENABLED(MARLIN_DEV_MODE)
- SERIAL_ECHOLNPAIR("Asset added: ", fn);
#endif
-
- file.close();
}
dir.rename(&root, bakPath);
}
@@ -452,62 +494,12 @@ uint8_t public_buf[512];
#if ENABLED(MARLIN_DEV_MODE)
uint8_t pic_counter = 0;
W25QXX.SPI_FLASH_BufferRead(&pic_counter, PIC_COUNTER_ADDR, 1);
- SERIAL_ECHOLNPAIR("Total assets loaded: ", pic_counter, ", Total size: ", totalSizeLoaded);
+ SERIAL_ECHOLNPAIR("Total assets loaded: ", pic_counter);
#endif
}
#if HAS_SPI_FLASH_FONT
-
void spi_flash_read_test() { W25QXX.SPI_FLASH_BufferRead(public_buf, UNIGBK_FLASH_ADDR, BMP_WRITE_BUF_LEN); }
-
- void UpdateFont() {
- char *fn;
- uint16_t pbr;
- uint32_t flashaddr = 0;
-
- SdFile dir, root = card.getroot();
- if (dir.open(&root, fontPath, O_RDONLY)) {
-
- disp_font_update();
- spiFlashErase_FONT();
-
- dir_t d;
- while (dir.readDir(&d, card.longFilename) > 0) {
- if (card.longFilename[0] == 0)
- break;
-
- if (card.longFilename[0] == '.')
- continue;
-
- fn = card.longFilename;
-
- if (strstr(fn, ".bin")) {
- char dosFilename[FILENAME_LENGTH];
- createFilename(dosFilename, d);
- //strcat(public_buf, dosFilename);
-
- SdFile file;
- if (file.open(&dir, dosFilename, O_READ)) {
-
- flashaddr = UNIGBK_FLASH_ADDR;
- pbr = 0;
- while (1) {
- flashaddr += pbr;
- pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
- W25QXX.SPI_FLASH_BufferWrite(public_buf, flashaddr, pbr);
- if (pbr < BMP_WRITE_BUF_LEN) break;
- }
- file.close();
- }
-
- }
- }
-
- dir.rename(&root, bakFont);
- dir.close();
- }
- }
-
#endif // HAS_SPI_FLASH_FONT
#endif // SDSUPPORT
@@ -552,6 +544,7 @@ void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) {
uint32_t logo_addroffset = 0;
void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize) {
+ W25QXX.init(SPI_QUARTER_SPEED);
W25QXX.SPI_FLASH_BufferRead(Logo_Rbuff, PIC_LOGO_ADDR + logo_addroffset, LogoReadsize);
logo_addroffset += LogoReadsize;
if (logo_addroffset >= LOGO_MAX_SIZE_TFT35)
@@ -561,7 +554,6 @@ void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize
uint32_t default_view_addroffset = 0;
void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsize) {
W25QXX.init(SPI_QUARTER_SPEED);
-
W25QXX.SPI_FLASH_BufferRead(default_view_Rbuff, DEFAULT_VIEW_ADDR_TFT35 + default_view_addroffset, default_view_Readsize);
default_view_addroffset += default_view_Readsize;
if (default_view_addroffset >= DEFAULT_VIEW_MAX_SIZE)
@@ -572,7 +564,6 @@ void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsi
uint32_t flash_view_addroffset = 0;
void flash_view_Read(uint8_t *flash_view_Rbuff, uint32_t flash_view_Readsize) {
W25QXX.init(SPI_QUARTER_SPEED);
-
W25QXX.SPI_FLASH_BufferRead(flash_view_Rbuff, BAK_VIEW_ADDR_TFT35 + flash_view_addroffset, flash_view_Readsize);
flash_view_addroffset += flash_view_Readsize;
if (flash_view_addroffset >= FLASH_VIEW_MAX_SIZE)
@@ -580,4 +571,4 @@ void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsi
}
#endif
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
index c0130d0e7e41..3ef4ee4f8624 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
@@ -25,29 +25,33 @@
extern "C" { /* C-declarations for C++ */
#endif
+#include "../../inc/MarlinConfigPre.h"
+
+#include
+
#include
#include
-#include "lvgl.h"
-
-#include "../../inc/MarlinConfigPre.h"
#ifndef HAS_SPI_FLASH_FONT
- #define HAS_SPI_FLASH_FONT 0 //disabled until fix the font load code
+ #define HAS_SPI_FLASH_FONT 1 // Disabled until fix the font load code
#endif
#ifndef HAS_GCODE_PREVIEW
#define HAS_GCODE_PREVIEW 1
#endif
#ifndef HAS_LANG_SELECT_SCREEN
- #define HAS_LANG_SELECT_SCREEN 0
+ #define HAS_LANG_SELECT_SCREEN 1
#endif
#ifndef HAS_BAK_VIEW_IN_FLASH
- #define HAS_BAK_VIEW_IN_FLASH 1
+ #define HAS_BAK_VIEW_IN_FLASH 1
#endif
#ifndef HAS_GCODE_DEFAULT_VIEW_IN_FLASH
- #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 1
+ #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 1
+#endif
+#ifndef HAS_LOGO_IN_FLASH
+ #define HAS_LOGO_IN_FLASH 1
#endif
#ifndef SPI_FLASH_SIZE
- #define SPI_FLASH_SIZE 0x1000000 // 16MB
+ #define SPI_FLASH_SIZE 0x1000000 // 16MB
#endif
#define PIC_MAX_CN 100 // Maximum number of pictures
@@ -66,52 +70,57 @@ extern "C" { /* C-declarations for C++ */
#if SPI_FLASH_SIZE == 0x200000
//pic
//Robin_pro pic addr
- #define PIC_NAME_ADDR 0x001000 // Pic information addr
- #define PIC_SIZE_ADDR 0x001800 // Pic size information addr
- #define PIC_COUNTER_ADDR 0x002000 // Pic total number
- #define PER_PIC_SAVE_ADDR 0x000000 // Storage address of each picture
- #define PIC_LOGO_ADDR 0x000000 // Logo addr
- #define PIC_DATA_ADDR 0x003000 //
+ #define PIC_NAME_ADDR 0x001000 // Pic information addr
+ #define PIC_SIZE_ADDR 0x001800 // Pic size information addr
+ #define PIC_COUNTER_ADDR 0x002000 // Pic total number
+ #define PER_PIC_SAVE_ADDR 0x000000 // Storage address of each picture
+ #define PIC_LOGO_ADDR 0x000000 // Logo addr
+ #define PIC_DATA_ADDR 0x003000 //
// TFT35
- #define DEFAULT_VIEW_ADDR_TFT35 0x1ea070
- #define BAK_VIEW_ADDR_TFT35 (DEFAULT_VIEW_ADDR_TFT35+90*1024)
- #define PIC_ICON_LOGO_ADDR_TFT35 (BAK_VIEW_ADDR_TFT35+80*1024)
- #define PIC_DATA_ADDR_TFT35 0x003000 // (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
+ #define DEFAULT_VIEW_ADDR_TFT35 0x1ea070
+ #define BAK_VIEW_ADDR_TFT35 (DEFAULT_VIEW_ADDR_TFT35+90*1024)
+ #define PIC_ICON_LOGO_ADDR_TFT35 (BAK_VIEW_ADDR_TFT35+80*1024)
+ #define PIC_DATA_ADDR_TFT35 0x003000 // (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
- #define PIC_DATA_ADDR_TFT32 0x00F000
- #define PIC_ICON_LOGO_ADDR_TFT32 0x5D8000
- #define PIC_OTHER_SIZE_ADDR_TFT32 0x5EE000
+ #define PIC_DATA_ADDR_TFT32 0x00F000
+ #define PIC_ICON_LOGO_ADDR_TFT32 0x5D8000
+ #define PIC_OTHER_SIZE_ADDR_TFT32 0x5EE000
+
+ // font
+ #define FONTINFOADDR 0x183000 // 6M -- font addr
+ #define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
#else
//pic
//Robin_pro pic addr
- #define PIC_NAME_ADDR 0x003000 // Pic information addr
- #define PIC_SIZE_ADDR 0x007000 // Pic size information addr
- #define PIC_COUNTER_ADDR 0x008000 // Pic total number
- #define PER_PIC_SAVE_ADDR 0x009000 // Storage address of each picture
- #define PIC_LOGO_ADDR 0x00A000 // Logo addr
- //#define PIC_DATA_ADDR 0x02F000 //
+ #define PIC_NAME_ADDR 0x003000 // Pic information addr
+ #define PIC_SIZE_ADDR 0x007000 // Pic size information addr
+ #define PIC_COUNTER_ADDR 0x008000 // Pic total number
+ //#define PER_PIC_SAVE_ADDR 0x009000 // Storage address of each picture
+ #define PIC_LOGO_ADDR 0x009000 // Logo addr
+ //#define PIC_DATA_ADDR 0x02F000 //
// TFT35
- #define DEFAULT_VIEW_ADDR_TFT35 0xC5800
- #define BAK_VIEW_ADDR_TFT35 (DEFAULT_VIEW_ADDR_TFT35+90*1024)
- #define PIC_ICON_LOGO_ADDR_TFT35 (BAK_VIEW_ADDR_TFT35+80*1024)
- #define PIC_DATA_ADDR_TFT35 (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
+ #define DEFAULT_VIEW_ADDR_TFT35 0xC5800
+ #define BAK_VIEW_ADDR_TFT35 (DEFAULT_VIEW_ADDR_TFT35+90*1024)
+ #define PIC_ICON_LOGO_ADDR_TFT35 (BAK_VIEW_ADDR_TFT35+80*1024)
+ #define PIC_DATA_ADDR_TFT35 (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
// TFT32
- #define PIC_DATA_ADDR_TFT32 0x02F000
- #define PIC_ICON_LOGO_ADDR_TFT32 0x5D8000
- #define PIC_OTHER_SIZE_ADDR_TFT32 0x5EE000
+ #define PIC_DATA_ADDR_TFT32 0x02F000
+ #define PIC_ICON_LOGO_ADDR_TFT32 0x5D8000
+ #define PIC_OTHER_SIZE_ADDR_TFT32 0x5EE000
// font
- #define FONTINFOADDR 0x600000 // 6M -- font addr
- #define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
- #define GBK_FLASH_ADDR (UNIGBK_FLASH_ADDR+180224) // 176*1024
+ #define FONTINFOADDR 0x600000 // 6M -- font addr
+ #define UNIGBK_FLASH_ADDR (FONTINFOADDR+4096) // 4*1024
+ #define GBK_FLASH_ADDR (UNIGBK_FLASH_ADDR+180224) // 176*1024
#endif
// Flash flag
+#define REFLSHE_FLGA_ADD (0X800000-32)
#define FLASH_INF_VALID_FLAG 0xAA558761
// SD card information first addr
#define VAR_INF_ADDR 0x000000
@@ -131,12 +140,13 @@ typedef struct pic_msg PIC_MSG;
#define BMP_WRITE_BUF_LEN 512
-#define PICINFOADDR 0
+#define PICINFOADDR 0x1000
#define PIC_SIZE_xM 6
#define FONT_SIZE_xM 2
extern void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff);
+extern void Pic_Logo_Read(uint8_t *LogoName,uint8_t *Logo_Rbuff,uint32_t LogoReadsize);
extern void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size);
extern uint32_t lv_get_pic_addr(uint8_t *Pname);
extern void get_spi_flash_data(const char *rec_buf, int offset, int size);
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp
new file mode 100644
index 000000000000..138168b12fb0
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp
@@ -0,0 +1,217 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "../../../../MarlinCore.h"
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+#include "../../../../module/temperature.h"
+#include "../../../../module/motion.h"
+#include "../../../../sd/cardreader.h"
+#include "../../../../gcode/queue.h"
+
+#if ENABLED(POWER_LOSS_RECOVERY)
+ #include "../../../../feature/powerloss.h"
+#endif
+
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+extern uint32_t To_pre_view;
+extern uint8_t flash_preview_begin, default_preview_flg, gcode_preview_over;
+
+void printer_state_polling() {
+ if (uiCfg.print_state == PAUSING) {
+ #if ENABLED(SDSUPPORT)
+ if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED)
+ uiCfg.waitEndMoves++;
+
+ if (uiCfg.waitEndMoves > 20) {
+ uiCfg.waitEndMoves = 0;
+ planner.synchronize();
+ gcode.process_subcommands_now_P(PSTR("M25"));
+ if (gCfgItems.pausePosZ != (float)-1) {
+ gcode.process_subcommands_now_P(PSTR("G91"));
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 Z%.1f"), gCfgItems.pausePosZ);
+ gcode.process_subcommands_now(public_buf_l);
+ gcode.process_subcommands_now_P(PSTR("G90"));
+ }
+ if (gCfgItems.pausePosX != (float)-1 && gCfgItems.pausePosY != (float)-1) {
+ ZERO(public_buf_l);
+ sprintf_P(public_buf_l, PSTR("G1 X%.1f Y%.1f"), gCfgItems.pausePosX, gCfgItems.pausePosY);
+ gcode.process_subcommands_now(public_buf_l);
+ }
+ uiCfg.print_state = PAUSED;
+
+ // #if ENABLED(POWER_LOSS_RECOVERY)
+ // if (recovery.enabled) recovery.save(true);
+ // #endif
+ gCfgItems.pause_reprint = 1;
+ update_spi_flash();
+ }
+ #endif
+ }
+ else
+ uiCfg.waitEndMoves = 0;
+
+ if (uiCfg.print_state == PAUSED) {
+ }
+
+ if (uiCfg.print_state == RESUMING) {
+ if (IS_SD_PAUSED()) {
+ gcode.process_subcommands_now_P(PSTR("M24\nG91\nG1 Z-5\nG90"));
+ uiCfg.print_state = WORKING;
+ start_print_time();
+
+ gCfgItems.pause_reprint = 0;
+ update_spi_flash();
+ }
+ }
+ #if ENABLED(POWER_LOSS_RECOVERY)
+ if (uiCfg.print_state == REPRINTED) {
+ ZERO(public_buf_m);
+ #if HAS_HOTEND
+ HOTEND_LOOP() {
+ const int16_t et = recovery.info.target_temperature[e];
+ if (et) {
+ #if HAS_MULTI_HOTEND
+ sprintf_P(public_buf_m, PSTR("T%i"), e);
+ gcode.process_subcommands_now(public_buf_m);
+ #endif
+ sprintf_P(public_buf_m, PSTR("M109 S%i"), et);
+ gcode.process_subcommands_now(public_buf_m);
+ }
+ }
+ #endif
+
+ if (gCfgItems.pause_reprint == 1) {
+ gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90"));
+ }
+ recovery.resume();
+
+ uiCfg.print_state = WORKING;
+ start_print_time();
+
+ gCfgItems.pause_reprint = 0;
+ update_spi_flash();
+ }
+ #endif
+
+ if (uiCfg.print_state == WORKING)
+ filament_check();
+}
+
+void filament_pin_setup() {
+ #if PIN_EXISTS(MT_DET_1)
+ pinMode(MT_DET_1_PIN, INPUT_PULLUP);
+ #endif
+ #if PIN_EXISTS(MT_DET_2)
+ pinMode(MT_DET_2_PIN, INPUT_PULLUP);
+ #endif
+ #if PIN_EXISTS(MT_DET_3)
+ pinMode(MT_DET_3_PIN, INPUT_PULLUP);
+ #endif
+}
+
+void filament_check() {
+ const int FIL_DELAY = 20;
+ #if PIN_EXISTS(MT_DET_1)
+ static int fil_det_count_1 = 0;
+ if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_1++;
+ else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_1++;
+ else if (fil_det_count_1 > 0)
+ fil_det_count_1--;
+
+ if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_1++;
+ else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_1++;
+ else if (fil_det_count_1 > 0)
+ fil_det_count_1--;
+ #endif
+
+ #if PIN_EXISTS(MT_DET_2)
+ static int fil_det_count_2 = 0;
+ if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_2++;
+ else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_2++;
+ else if (fil_det_count_2 > 0)
+ fil_det_count_2--;
+
+ if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_2++;
+ else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_2++;
+ else if (fil_det_count_2 > 0)
+ fil_det_count_2--;
+ #endif
+
+ #if PIN_EXISTS(MT_DET_3)
+ static int fil_det_count_3 = 0;
+ if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_3++;
+ else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_3++;
+ else if (fil_det_count_3 > 0)
+ fil_det_count_3--;
+
+ if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
+ fil_det_count_3++;
+ else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
+ fil_det_count_3++;
+ else if (fil_det_count_3 > 0)
+ fil_det_count_3--;
+ #endif
+
+ if (false
+ #if PIN_EXISTS(MT_DET_1)
+ || fil_det_count_1 >= FIL_DELAY
+ #endif
+ #if PIN_EXISTS(MT_DET_2)
+ || fil_det_count_2 >= FIL_DELAY
+ #endif
+ #if PIN_EXISTS(MT_DET_3)
+ || fil_det_count_3 >= FIL_DELAY
+ #endif
+ ) {
+ clear_cur_ui();
+ card.pauseSDPrint();
+ stop_print_time();
+ uiCfg.print_state = PAUSING;
+
+ if (gCfgItems.from_flash_pic == 1)
+ flash_preview_begin = 1;
+ else
+ default_preview_flg = 1;
+
+ lv_draw_printing();
+ }
+}
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.h b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h
similarity index 100%
rename from Marlin/src/lcd/extui/lib/mks_ui/printer_opration.h
rename to Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp
deleted file mode 100644
index c081e92bf14b..000000000000
--- a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#include "../../../../inc/MarlinConfigPre.h"
-
-#if ENABLED(TFT_LVGL_UI)
-
- #include "../../../../MarlinCore.h"
-
- #include "lv_conf.h"
- #include "draw_ui.h"
- #include "../../../../module/temperature.h"
- #include "../../../../module/motion.h"
- #include "../../../../sd/cardreader.h"
- #include "../../../../gcode/queue.h"
-
- #if ENABLED(POWER_LOSS_RECOVERY)
- #include "../../../../feature/powerloss.h"
- #endif
-
- #include "../../../../gcode/gcode.h"
- #include "../../../../module/planner.h"
-
- extern uint32_t To_pre_view;
- extern uint8_t flash_preview_begin, default_preview_flg, gcode_preview_over;
-
- void printer_state_polling() {
- if (uiCfg.print_state == PAUSING) {
- #if ENABLED(SDSUPPORT)
- if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED) //���� �ļ��� M109��M190ָ��
- uiCfg.waitEndMoves++;
-
- if (uiCfg.waitEndMoves > 20) {
- uiCfg.waitEndMoves = 0;
- planner.synchronize();
- gcode.process_subcommands_now_P(PSTR("M25\nG91\nG1 Z5\nG90"));
-
- uiCfg.print_state = PAUSED;
-
- //#if ENABLED(POWER_LOSS_RECOVERY)
- // if (recovery.enabled) recovery.save(true);
- //#endif
- gCfgItems.pause_reprint = 1;
- update_spi_flash();
- }
- #endif
- }
- else {
- uiCfg.waitEndMoves = 0;
- }
-
- if (uiCfg.print_state == PAUSED) {
-
- }
-
- if (uiCfg.print_state == RESUMING) {
- if (IS_SD_PAUSED()) {
- gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90\nM24"));
- uiCfg.print_state = WORKING;
- start_print_time();
-
- gCfgItems.pause_reprint = 0;
- update_spi_flash();
- }
- }
- #if ENABLED(POWER_LOSS_RECOVERY)
- if (uiCfg.print_state == REPRINTED) {
- memset(public_buf_m, 0, sizeof(public_buf_m));
- #if HOTENDS
- HOTEND_LOOP() {
- const int16_t et = recovery.info.target_temperature[e];
- if (et) {
- #if HOTENDS > 1
- sprintf_P(public_buf_m, PSTR("T%i"), e);
- gcode.process_subcommands_now(public_buf_m);
- #endif
- sprintf_P(public_buf_m, PSTR("M109 S%i"), et);
- gcode.process_subcommands_now(public_buf_m);
- }
- }
- #endif
-
- if (gCfgItems.pause_reprint == 1)
- gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90"));
- recovery.resume();
-
- uiCfg.print_state = WORKING;
- start_print_time();
-
- gCfgItems.pause_reprint = 0;
- update_spi_flash();
- }
- #endif
-
- if (uiCfg.print_state == WORKING)
- filament_check();
- }
-
- void filament_pin_setup() {
- #if PIN_EXISTS(MT_DET_1)
- pinMode(MT_DET_1_PIN, INPUT_PULLUP);
- #endif
- #if PIN_EXISTS(MT_DET_2)
- pinMode(MT_DET_2_PIN, INPUT_PULLUP);
- #endif
- #if PIN_EXISTS(MT_DET_3)
- pinMode(MT_DET_3_PIN, INPUT_PULLUP);
- #endif
- }
-
- void filament_check() {
- const int FIL_DELAY = 20;
- #if PIN_EXISTS(MT_DET_1)
- static int fil_det_count_1 = 0;
- if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_1++;
- else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_1++;
- else if (fil_det_count_1 > 0)
- fil_det_count_1--;
-
- if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_1++;
- else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_1++;
- else if (fil_det_count_1 > 0)
- fil_det_count_1--;
- #endif
-
- #if PIN_EXISTS(MT_DET_2)
- static int fil_det_count_2 = 0;
- if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_2++;
- else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_2++;
- else if (fil_det_count_2 > 0)
- fil_det_count_2--;
-
- if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_2++;
- else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_2++;
- else if (fil_det_count_2 > 0)
- fil_det_count_2--;
- #endif
-
- #if PIN_EXISTS(MT_DET_3)
- static int fil_det_count_3 = 0;
- if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_3++;
- else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_3++;
- else if (fil_det_count_3 > 0)
- fil_det_count_3--;
-
- if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
- fil_det_count_3++;
- else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
- fil_det_count_3++;
- else if (fil_det_count_3 > 0)
- fil_det_count_3--;
- #endif
-
- if (
- #if PIN_EXISTS(MT_DET_1)
- fil_det_count_1 >= FIL_DELAY
- #else
- false
- #endif
- #if PIN_EXISTS(MT_DET_2)
- || fil_det_count_2 >= FIL_DELAY
- #endif
- #if PIN_EXISTS(MT_DET_3)
- || fil_det_count_3 >= FIL_DELAY
- #endif
- ) {
- clear_cur_ui();
- card.pauseSDPrint();
- stop_print_time();
- uiCfg.print_state = PAUSING;
-
- if (gCfgItems.from_flash_pic == 1)
- flash_preview_begin = 1;
- else
- default_preview_flg = 1;
-
- lv_draw_printing();
- }
- }
-
-#endif // TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
index 137dae2e2d74..54e06f582648 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
@@ -22,13 +22,13 @@
#pragma once
//****************英文***************************//
-#define MACHINE_CONFIG_EN "Machine\nSettings"
+#define MACHINE_CONFIG_EN "Config"
#define NEXT_EN "Next"
#define PREVIOUS_EN "Previous"
#define DEFAULT_EN "Default"
#define KEY_BACK_EN "Del"
-#define KEY_REST_EN "Rest"
+#define KEY_REST_EN "Reset"
#define KEY_CONFIRM_EN "Confirm"
#define KEYBOARD_KEY0_EN "0"
@@ -44,12 +44,11 @@
#define KEYBOARD_KEY_POINT_EN "."
#define KEYBOARD_KEY_NEGATIVE_EN "-"
-#define MACHINE_PARA_EN "Machine\nsettings"
-#define MACHINE_PARA_TITLE_EN "Machine settings"
-#define MACHINE_TYPE_CNOFIG_EN "Machine"
-#define TEMPERATURE_CONFIG_EN "Temperature"
-#define MOTOR_CONFIG_EN "Motor"
-#define ADVANCE_CONFIG_EN "Adavance"
+#define MACHINE_PARA_TITLE_EN "Config"
+#define MACHINE_TYPE_CNOFIG_EN "Machine settings"
+#define TEMPERATURE_CONFIG_EN "Temperature settings"
+#define MOTOR_CONFIG_EN "Motor settings"
+#define ADVANCE_CONFIG_EN "Adavance settings"
#define MACHINE_CONFIG_TITLE_EN "Machine Settings"
#define MACHINE_TYPE_EN "Machine type"
@@ -158,6 +157,8 @@
#define ACCELERATION_CONF_EN "Acceleration settings"
#define JERKCONF_EN "Jerk settings"
#define STEPSCONF_EN "Steps settings"
+#define TMC_CURRENT_EN "TMC Current settings"
+#define TMC_STEP_MODE_EN "TMC Step mode settings"
#define MOTORDIRCONF_EN "Motor direction settings"
#define HOMEFEEDRATECONF_EN "Home speed setting"
@@ -191,6 +192,20 @@
#define E0_STEPS_EN "E0-axis steps"
#define E1_STEPS_EN "E1-axis steps"
+#define TMC_CURRENT_CONF_TITLE_EN "Machine Settings>TMC current settings"
+#define X_TMC_CURRENT_EN "X axis current (mA)"
+#define Y_TMC_CURRENT_EN "Y axis current (mA)"
+#define Z_TMC_CURRENT_EN "Z axis current (mA)"
+#define E0_TMC_CURRENT_EN "E0 axis current (mA)"
+#define E1_TMC_CURRENT_EN "E1 axis current (mA)"
+
+#define TMC_MODE_CONF_TITLE_EN "Machine Settings>TMC step mode settings"
+#define X_TMC_MODE_EN "Whether X axis enable stealthChop modes"
+#define Y_TMC_MODE_EN "Whether Y axis enable stealthChop modes"
+#define Z_TMC_MODE_EN "Whether Z axis enable stealthChop modes"
+#define E0_TMC_MODE_EN "Whether E0 axis enable stealthChop modes"
+#define E1_TMC_MODE_EN "Whether E1 axis enable stealthChop modes"
+
#define MOTORDIR_CONF_TITLE_EN "Machine Settings>Motor direction"
#define X_MOTORDIR_EN "X-axis motor direction invert"
#define Y_MOTORDIR_EN "Y-axis motor direction invert"
@@ -223,6 +238,11 @@
#define Z_ENABLE_PINS_INVERT_EN "Z_ENABLE_PIN_INVERT"
#define E_ENABLE_PINS_INVERT_EN "E_ENABLE_PIN_INVERT"
+#define PAUSE_POSITION_EN "Printing pause position settings"
+#define PAUSE_POSITION_X_EN "X axis position (Absolute position,-1 invalid)"
+#define PAUSE_POSITION_Y_EN "Y axis position (Absolute position,-1 invalid)"
+#define PAUSE_POSITION_Z_EN "Z axis position (Relative position,-1 invalid)"
+
#define TOOL_TEXT_EN "Tool"
#define PREHEAT_TEXT_EN "Preheat"
#define MOVE_TEXT_EN "Move"
@@ -299,6 +319,8 @@
#define MOTOR_OFF_TEXT_EN "Motor-off"
#define MOTOR_OFF_XY_TEXT_EN "Off-XY"
#define SHUTDOWN_TEXT_EN "Shutdown"
+#define MACHINE_PARA_EN "Config"
+#define EEPROM_SETTINGS_EN "Eeprom Set"
#define U_DISK_TEXT_EN "USB"
#define SD_CARD_TEXT_EN "SD"
@@ -368,8 +390,8 @@
#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN "Unload filament completed,\nclick for return!"
-#define PRE_HEAT_EXT_TEXT_EN "E"
-#define PRE_HEAT_BED_TEXT_EN "Bed"
+#define PRE_HEAT_EXT_TEXT_EN "E"
+#define PRE_HEAT_BED_TEXT_EN "Bed"
#define FILE_LOADING_EN "Loading......"
#if 0
@@ -703,16 +725,24 @@
#define PRINTING_OPERATION_OTHER_LANGUGE "Operation"
#define PRINTING_PAUSE_OTHER_LANGUGE "Pause"
-#define MESSEGE_PAUSING_EN "Parking..."
-#define MESSEGE_CHANGING_EN "Wait for filament change to start"
-#define MESSEGE_UNLOAD_EN "Wait for filament unload"
-#define MESSEGE_WAITING_EN "Press Button to resume print"
-#define MESSEGE_INSERT_EN "Insert filament and press button to continue"
-#define MESSEGE_LOAD_EN "Wait for filament load"
-#define MESSEGE_PURGE_EN "Wait for filament purge"
-#define MESSEGE_RESUME_EN "Wait for print to resume..."
-#define MESSEGE_HEAT_EN "Press button to heat nozzle"
-#define MESSEGE_HEATING_EN "Nozzle heating Please wait..."
-#define MESSEGE_OPTION_EN "Purge more or continue print?"
-#define MESSEGE_PURGE_MORE_EN "Purge"
-#define MESSEGE_CONTINUE_PRINT_EN "Print"
+#define MESSAGE_PAUSING_EN "Parking..."
+#define MESSAGE_CHANGING_EN "Wait for filament change to start"
+#define MESSAGE_UNLOAD_EN "Wait for filament unload"
+#define MESSAGE_WAITING_EN "Press Button to resume print"
+#define MESSAGE_INSERT_EN "Insert filament and press button to continue"
+#define MESSAGE_LOAD_EN "Wait for filament load"
+#define MESSAGE_PURGE_EN "Wait for filament purge"
+#define MESSAGE_RESUME_EN "Wait for print to resume..."
+#define MESSAGE_HEAT_EN "Press button to heat nozzle"
+#define MESSAGE_HEATING_EN "Nozzle heating Please wait..."
+#define MESSAGE_OPTION_EN "Purge more or continue print?"
+#define MESSAGE_PURGE_MORE_EN "Purge"
+#define MESSAGE_CONTINUE_PRINT_EN "Print"
+#define EEPROM_SETTINGS_TITLE_EN "EEPROM Settings"
+#define EEPROM_SETTINGS_STORE_EN "Store settings to EEPROM"
+#define EEPROM_SETTINGS_READ_EN "Read settings from EEPROM"
+#define EEPROM_SETTINGS_REVERT_EN "Revert settings to factory defaults"
+
+#define EEPROM_STORE_TIPS_EN "Store settings to EEPROM?"
+#define EEPROM_READ_TIPS_EN "Read settings from EEPROM?"
+#define EEPROM_REVERT_TIPS_EN "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
index 5cea0e3ac856..3fe95654b1a4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
@@ -98,6 +98,8 @@
#define MOTOR_OFF_TEXT_FR "M-hors"
#define MOTOR_OFF_XY_TEXT_FR "M-hors-XY"
#define SHUTDOWN_TEXT_FR "Eteindre"
+#define MACHINE_PARA_FR "Config"
+#define EEPROM_SETTINGS_FR "Eeprom Set"
#define U_DISK_TEXT_FR "Clé usb"
#define SD_CARD_TEXT_FR "Carte SD"
@@ -249,28 +251,36 @@
#define DIALOG_CANCEL_PRINT_FR "Arrêter?"
#define DIALOG_STOP_FR "Arrêter"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_FR "Continuer?"
-//#define DIALOG_UNBIND_PRINTER_FR "Non lié?"
-#define DIALOG_ERROR_TIPS1_FR "Erreur:error:Aucun fichier, \nvérifiez à nouveau."
-#define DIALOG_ERROR_TIPS2_FR "Erreur:La opération a échoué. \nVerifiez que le baudrate de l'écran et de \nla carte mère soient identique!"
-#define DIALOG_ERROR_TIPS3_FR "Erreur: le nom du fichier ou le \nchemin d'accès est trop long."
-#define DIALOG_UNBIND_PRINTER_FR "Unbind the printer?"
-#define DIALOG_FILAMENT_NO_PRESS_FR "Filament detection switch is not pressed"
-#define DIALOG_PRINT_FINISH_FR "L'impression est terminée!"
-#define DIALOG_PRINT_TIME_FR "Temps d'impression: "
-#define DIALOG_REPRINT_FR "Print again"
-#define DIALOG_WIFI_ENABLE_TIPS_FR "The wifi module is being configured,\nplease wait a moment....."
-
-#define MESSEGE_PAUSING_FR "Parking..."
-#define MESSEGE_CHANGING_FR "Attente filament pour démarrer"
-#define MESSEGE_UNLOAD_FR "Attente retrait du filament"
-#define MESSEGE_WAITING_FR "Presser bouton,pour reprendre"
-#define MESSEGE_INSERT_FR "Insérer filament et app. bouton pour continuer..."
-#define MESSEGE_LOAD_FR "Attente chargement filament"
-#define MESSEGE_PURGE_FR "Attente Purge filament"
-#define MESSEGE_RESUME_FR "Attente reprise impression"
-#define MESSEGE_HEAT_FR "Presser le bouton pour chauffer..."
-#define MESSEGE_HEATING_FR "Buse en chauffe Patienter SVP..."
-#define MESSEGE_OPTION_FR "Purger davantage ou continuer l'impression?"
-#define MESSEGE_PURGE_MORE_FR "Purge"
-#define MESSEGE_CONTINUE_PRINT_FR "Impression"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_FR "Continuer?"
+//#define DIALOG_UNBIND_PRINTER_FR "Non lié?"
+#define DIALOG_ERROR_TIPS1_FR "Erreur:error:Aucun fichier, \nvérifiez à nouveau."
+#define DIALOG_ERROR_TIPS2_FR "Erreur:La opération a échoué. \nVerifiez que le baudrate de l'écran et de \nla carte mère soient identique!"
+#define DIALOG_ERROR_TIPS3_FR "Erreur: le nom du fichier ou le \nchemin d'accès est trop long."
+#define DIALOG_UNBIND_PRINTER_FR "Unbind the printer?"
+#define DIALOG_FILAMENT_NO_PRESS_FR "Filament detection switch is not pressed"
+#define DIALOG_PRINT_FINISH_FR "L'impression est terminée!"
+#define DIALOG_PRINT_TIME_FR "Temps d'impression: "
+#define DIALOG_REPRINT_FR "Print again"
+#define DIALOG_WIFI_ENABLE_TIPS_FR "The wifi module is being configured,\nplease wait a moment....."
+
+#define MESSAGE_PAUSING_FR "Parking..."
+#define MESSAGE_CHANGING_FR "Attente filament pour démarrer"
+#define MESSAGE_UNLOAD_FR "Attente retrait du filament"
+#define MESSAGE_WAITING_FR "Presser bouton,pour reprendre"
+#define MESSAGE_INSERT_FR "Insérer filament et app. bouton pour continuer..."
+#define MESSAGE_LOAD_FR "Attente chargement filament"
+#define MESSAGE_PURGE_FR "Attente Purge filament"
+#define MESSAGE_RESUME_FR "Attente reprise impression"
+#define MESSAGE_HEAT_FR "Presser le bouton pour chauffer..."
+#define MESSAGE_HEATING_FR "Buse en chauffe Patienter SVP..."
+#define MESSAGE_OPTION_FR "Purger davantage ou continuer l'impression?"
+#define MESSAGE_PURGE_MORE_FR "Purge"
+#define MESSAGE_CONTINUE_PRINT_FR "Impression"
+#define EEPROM_SETTINGS_TITLE_FR "Paramètres EEPROM"
+#define EEPROM_SETTINGS_STORE_FR "Stocker les paramètres dans l'EEPROM"
+#define EEPROM_SETTINGS_READ_FR "Lire les paramètres de l'EEPROM"
+#define EEPROM_SETTINGS_REVERT_FR "Rétablir les paramètres par défaut d'usine"
+
+#define EEPROM_STORE_TIPS_FR "Stocker les paramètres dans l'EEPROM?"
+#define EEPROM_READ_TIPS_FR "Lire les paramètres de l'EEPROM?"
+#define EEPROM_REVERT_TIPS_FR "Rétablir les paramètres par défaut d'usine?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
index e800cbc12ba4..aef6cfaf9609 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
@@ -22,250 +22,260 @@
#pragma once
//****************意大利语***************************//
-#define TOOL_TEXT_IT "Strumento"
-#define PREHEAT_TEXT_IT "Prerisc"
-#define MOVE_TEXT_IT "Muovi"
-#define HOME_TEXT_IT "Home"
-#define PRINT_TEXT_IT "Stampa"
-#define EXTRUDE_TEXT_IT "Estrude"
-#define LEVELING_TEXT_IT "Leveling"
-#define AUTO_LEVELING_TEXT_IT "AutoLevel"
-#define SET_TEXT_IT "Imposta"
-#define MORE_TEXT_IT "Di più"
+#define TOOL_TEXT_IT "Strumento"
+#define PREHEAT_TEXT_IT "Prerisc"
+#define MOVE_TEXT_IT "Muovi"
+#define HOME_TEXT_IT "Home"
+#define PRINT_TEXT_IT "Stampa"
+#define EXTRUDE_TEXT_IT "Estrude"
+#define LEVELING_TEXT_IT "Leveling"
+#define AUTO_LEVELING_TEXT_IT "AutoLevel"
+#define SET_TEXT_IT "Imposta"
+#define MORE_TEXT_IT "Di più"
-#define ADD_TEXT_IT "Aumentare"
-#define DEC_TEXT_IT "Ridurre"
-#define EXTRUDER_1_TEXT_IT "Estrude1"
-#define EXTRUDER_2_TEXT_IT "Estrude2"
-#define HEATBED_TEXT_IT "Piano"
-#define TEXT_1C_IT "1℃"
-#define TEXT_5C_IT "5℃"
-#define TEXT_10C_IT "10℃"
-#define CLOSE_TEXT_IT "Spento"
+#define ADD_TEXT_IT "Aumentare"
+#define DEC_TEXT_IT "Ridurre"
+#define EXTRUDER_1_TEXT_IT "Estrude1"
+#define EXTRUDER_2_TEXT_IT "Estrude2"
+#define HEATBED_TEXT_IT "Piano"
+#define TEXT_1C_IT "1℃"
+#define TEXT_5C_IT "5℃"
+#define TEXT_10C_IT "10℃"
+#define CLOSE_TEXT_IT "Spento"
-#define BACK_TEXT_IT "Indietro"
+#define BACK_TEXT_IT "Indietro"
-#define TOOL_PREHEAT_IT "Prerisc"
-#define TOOL_EXTRUDE_IT "Estrude"
-#define TOOL_MOVE_IT "Muovi"
-#define TOOL_HOME_IT "Home"
-#define TOOL_LEVELING_IT "Leveling"
+#define TOOL_PREHEAT_IT "Prerisc"
+#define TOOL_EXTRUDE_IT "Estrude"
+#define TOOL_MOVE_IT "Muovi"
+#define TOOL_HOME_IT "Home"
+#define TOOL_LEVELING_IT "Leveling"
#define TOOL_AUTO_LEVELING_IT "Autolevel"
-#define TOOL_FILAMENT_IT "Filamento"
-#define TOOL_MORE_IT "Di più"
+#define TOOL_FILAMENT_IT "Filamento"
+#define TOOL_MORE_IT "Di più"
-#define AXIS_X_ADD_TEXT_IT "X+"
-#define AXIS_X_DEC_TEXT_IT "X-"
-#define AXIS_Y_ADD_TEXT_IT "Y+"
-#define AXIS_Y_DEC_TEXT_IT "Y-"
-#define AXIS_Z_ADD_TEXT_IT "Z+"
-#define AXIS_Z_DEC_TEXT_IT "Z-"
-#define TEXT_01MM_IT "0.1mm"
-#define TEXT_1MM_IT "1mm"
-#define TEXT_10MM_IT "10mm"
+#define AXIS_X_ADD_TEXT_IT "X+"
+#define AXIS_X_DEC_TEXT_IT "X-"
+#define AXIS_Y_ADD_TEXT_IT "Y+"
+#define AXIS_Y_DEC_TEXT_IT "Y-"
+#define AXIS_Z_ADD_TEXT_IT "Z+"
+#define AXIS_Z_DEC_TEXT_IT "Z-"
+#define TEXT_01MM_IT "0.1mm"
+#define TEXT_1MM_IT "1mm"
+#define TEXT_10MM_IT "10mm"
-#define HOME_X_TEXT_IT "X"
-#define HOME_Y_TEXT_IT "Y"
-#define HOME_Z_TEXT_IT "Z"
-#define HOME_ALL_TEXT_IT "All"
-#define HOME_STOPMOVE_IT "Quickstop"
+#define HOME_X_TEXT_IT "X"
+#define HOME_Y_TEXT_IT "Y"
+#define HOME_Z_TEXT_IT "Z"
+#define HOME_ALL_TEXT_IT "All"
+#define HOME_STOPMOVE_IT "Quickstop"
-#define PAGE_UP_TEXT_IT "Pagina su"
-#define PAGE_DOWN_TEXT_IT "Pagina giù"
+#define PAGE_UP_TEXT_IT "Pagina su"
+#define PAGE_DOWN_TEXT_IT "Pagina giù"
-#define EXTRUDER_IN_TEXT_IT "Estru"
-#define EXTRUDER_OUT_TEXT_IT "Ritra"
-#define EXTRUDE_1MM_TEXT_IT "1mm"
-#define EXTRUDE_5MM_TEXT_IT "5mm"
-#define EXTRUDE_10MM_TEXT_IT "10mm"
-#define EXTRUDE_LOW_SPEED_TEXT_IT "Bassa"
-#define EXTRUDE_MEDIUM_SPEED_TEXT_IT "Media"
-#define EXTRUDE_HIGH_SPEED_TEXT_IT "Alta"
+#define EXTRUDER_IN_TEXT_IT "Estru"
+#define EXTRUDER_OUT_TEXT_IT "Ritra"
+#define EXTRUDE_1MM_TEXT_IT "1mm"
+#define EXTRUDE_5MM_TEXT_IT "5mm"
+#define EXTRUDE_10MM_TEXT_IT "10mm"
+#define EXTRUDE_LOW_SPEED_TEXT_IT "Bassa"
+#define EXTRUDE_MEDIUM_SPEED_TEXT_IT "Media"
+#define EXTRUDE_HIGH_SPEED_TEXT_IT "Alta"
-#define LEVELING_POINT1_TEXT_IT "Primo"
-#define LEVELING_POINT2_TEXT_IT "Secondo"
-#define LEVELING_POINT3_TEXT_IT "Terzo"
-#define LEVELING_POINT4_TEXT_IT "Quarto"
-#define LEVELING_POINT5_TEXT_IT "Quinto"
+#define LEVELING_POINT1_TEXT_IT "Primo"
+#define LEVELING_POINT2_TEXT_IT "Secondo"
+#define LEVELING_POINT3_TEXT_IT "Terzo"
+#define LEVELING_POINT4_TEXT_IT "Quarto"
+#define LEVELING_POINT5_TEXT_IT "Quinto"
-#define FILESYS_TEXT_IT "FileSys"
-#define WIFI_TEXT_IT "WIFI"
-#define FAN_TEXT_IT "Ventola"
-#define ABOUT_TEXT_IT "Circa"
-#define BREAK_POINT_TEXT_IT "Continua"
-#define FILAMENT_TEXT_IT "Filamento"
-#define LANGUAGE_TEXT_IT "Lingua"
-#define MOTOR_OFF_TEXT_IT "Motor off"
-#define MOTOR_OFF_XY_TEXT_IT "Off-XY"
-#define SHUTDOWN_TEXT_IT "Spento"
+#define FILESYS_TEXT_IT "FileSys"
+#define WIFI_TEXT_IT "WIFI"
+#define FAN_TEXT_IT "Ventola"
+#define ABOUT_TEXT_IT "Circa"
+#define BREAK_POINT_TEXT_IT "Continua"
+#define FILAMENT_TEXT_IT "Filamento"
+#define LANGUAGE_TEXT_IT "Lingua"
+#define MOTOR_OFF_TEXT_IT "Motor off"
+#define MOTOR_OFF_XY_TEXT_IT "Off-XY"
+#define SHUTDOWN_TEXT_IT "Spento"
+#define MACHINE_PARA_IT "Config"
+#define EEPROM_SETTINGS_IT "Eeprom Set"
-#define U_DISK_TEXT_IT "USB"
-#define SD_CARD_TEXT_IT "SD"
-#define WIFI_NAME_TEXT_IT "WIFI: "
-#define WIFI_KEY_TEXT_IT "KEY: "
-#define WIFI_IP_TEXT_IT "IP: "
-#define WIFI_AP_TEXT_IT "Stato: AP"
-#define WIFI_STA_TEXT_IT "Stato: STA"
-#define WIFI_CONNECTED_TEXT_IT "Connesso"
-#define WIFI_DISCONNECTED_TEXT_IT "Disconnesso"
-#define WIFI_EXCEPTION_TEXT_IT "Eccezione"
-#define WIFI_RECONNECT_TEXT_IT "Reconnect"
-#define CLOUD_TEXT_IT "Cloud"
-#define CLOUD_BIND_IT "Legato"
-#define CLOUD_UNBIND_IT "Libero"
-#define CLOUD_DISCONNECTED_IT "Disconnesso"
-#define CLOUD_UNBINDING_IT "Libero"
-#define CLOUD_UNBINDED_IT "Sciolto"
-#define CLOUD_BINDED_IT "Legato"
-#define CLOUD_DISABLE_IT "Disable"
+#define U_DISK_TEXT_IT "USB"
+#define SD_CARD_TEXT_IT "SD"
+#define WIFI_NAME_TEXT_IT "WIFI: "
+#define WIFI_KEY_TEXT_IT "KEY: "
+#define WIFI_IP_TEXT_IT "IP: "
+#define WIFI_AP_TEXT_IT "Stato: AP"
+#define WIFI_STA_TEXT_IT "Stato: STA"
+#define WIFI_CONNECTED_TEXT_IT "Connesso"
+#define WIFI_DISCONNECTED_TEXT_IT "Disconnesso"
+#define WIFI_EXCEPTION_TEXT_IT "Eccezione"
+#define WIFI_RECONNECT_TEXT_IT "Reconnect"
+#define CLOUD_TEXT_IT "Cloud"
+#define CLOUD_BIND_IT "Legato"
+#define CLOUD_UNBIND_IT "Libero"
+#define CLOUD_DISCONNECTED_IT "Disconnesso"
+#define CLOUD_UNBINDING_IT "Libero"
+#define CLOUD_UNBINDED_IT "Sciolto"
+#define CLOUD_BINDED_IT "Legato"
+#define CLOUD_DISABLE_IT "Disable"
-#define FAN_ADD_TEXT_IT "Aumentare"
-#define FAN_DEC_TEXT_IT "Ridurre"
-#define FAN_OPEN_TEXT_IT "100%"
-#define FAN_HALF_TEXT_IT "50%"
-#define FAN_CLOSE_TEXT_IT "Spento"
-#define FAN_TIPS1_TEXT_IT "Ventola"
-#define FAN_TIPS2_TEXT_IT "Ventola\n0"
+#define FAN_ADD_TEXT_IT "Aumentare"
+#define FAN_DEC_TEXT_IT "Ridurre"
+#define FAN_OPEN_TEXT_IT "100%"
+#define FAN_HALF_TEXT_IT "50%"
+#define FAN_CLOSE_TEXT_IT "Spento"
+#define FAN_TIPS1_TEXT_IT "Ventola"
+#define FAN_TIPS2_TEXT_IT "Ventola\n0"
-#define FILAMENT_IN_TEXT_IT "Inser"
-#define FILAMENT_OUT_TEXT_IT "Estra"
-#define FILAMENT_EXT0_TEXT_IT "Estrude1"
-#define FILAMENT_EXT1_TEXT_IT "Estrude2"
-#define FILAMENT_HEAT_TEXT_IT "Preriscaldamento"
-#define FILAMENT_STOP_TEXT_IT "Stop"
-//#define FILAMENT_CHANGE_TEXT_IT "Filamento"
-#define FILAMENT_TIPS2_TEXT_IT "T:"
-#define FILAMENT_TIPS3_TEXT_IT "Inserimento del filamento..."
-#define FILAMENT_TIPS4_TEXT_IT "Estrazione del filamento..."
-#define FILAMENT_TIPS5_TEXT_IT "Temp is too low to go,please heat"
-#define FILAMENT_TIPS6_TEXT_IT "Completato"
+#define FILAMENT_IN_TEXT_IT "Inser"
+#define FILAMENT_OUT_TEXT_IT "Estra"
+#define FILAMENT_EXT0_TEXT_IT "Estrude1"
+#define FILAMENT_EXT1_TEXT_IT "Estrude2"
+#define FILAMENT_HEAT_TEXT_IT "Preriscaldamento"
+#define FILAMENT_STOP_TEXT_IT "Stop"
+//#define FILAMENT_CHANGE_TEXT_IT "Filamento"
+#define FILAMENT_TIPS2_TEXT_IT "T:"
+#define FILAMENT_TIPS3_TEXT_IT "Inserimento del filamento..."
+#define FILAMENT_TIPS4_TEXT_IT "Estrazione del filamento..."
+#define FILAMENT_TIPS5_TEXT_IT "Temp is too low to go,please heat"
+#define FILAMENT_TIPS6_TEXT_IT "Completato"
#if 0
- #define FILAMENT_REPLAYS_IDLE_TEXT_IT "Please click or \nto replace filament!"
- #define FILAMENT_CHANGE_TEXT_IT "Please click or ,\nAfter pinter pause."
- #define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
- #define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
- #define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament to extruder,and click for start loading."
- #define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,and click for start loading."
- #define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please click for start unloading.!"
- #define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!"
- #define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!"
- #define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,click for return!"
- #define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,click for return!"
+ #define FILAMENT_REPLAYS_IDLE_TEXT_IT "Please click or \nto replace filament!"
+ #define FILAMENT_CHANGE_TEXT_IT "Please click or ,\nAfter pinter pause."
+ #define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
+ #define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
+ #define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament to extruder,and click for start loading."
+ #define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,and click for start loading."
+ #define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please click for start unloading.!"
+ #define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!"
+ #define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!"
+ #define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,click for return!"
+ #define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,click for return!"
#endif
-#define FILAMENT_CHANGE_TEXT_IT "Please click \nor ,After \npinter pause."
-#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
-#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
-#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament \nto extruder,and click \nfor start loading."
-#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,\nand click for start loading."
-#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please \nclick for start unloading.!"
-#define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!"
-#define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!"
-#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,\nclick for return!"
-#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,\nclick for return!"
+#define FILAMENT_CHANGE_TEXT_IT "Please click \nor ,After \npinter pause."
+#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
+#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT "Heating up the nozzle,please wait..."
+#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT "Heat completed,please load filament \nto extruder,and click \nfor start loading."
+#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT "Please load filament to extruder,\nand click for start loading."
+#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT "Heat completed,please \nclick for start unloading.!"
+#define FILAMENT_DIALOG_LOADING_TIPS_IT "Is loading ,please wait!"
+#define FILAMENT_DIALOG_UNLOADING_TIPS_IT "Is unloading,please wait!"
+#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT "Load filament completed,\nclick for return!"
+#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,\nclick for return!"
-#define PRE_HEAT_EXT_TEXT_IT "E"
-#define PRE_HEAT_BED_TEXT_IT "Piano"
+#define PRE_HEAT_EXT_TEXT_IT "E"
+#define PRE_HEAT_BED_TEXT_IT "Piano"
-#define FILE_LOADING_IT "Caricamento......"
+#define FILE_LOADING_IT "Caricamento......"
#if 0
- #define NO_FILE_AND_CHECK_IT "Nessun file trovato! Inserisci la scheda SD o il disco U!"
+ #define NO_FILE_AND_CHECK_IT "Nessun file trovato! Inserisci la scheda SD o il disco U!"
#endif
-#define NO_FILE_AND_CHECK_IT "Nessun file,\n per favore controllare di nuovo!"
+#define NO_FILE_AND_CHECK_IT "Nessun file,\n per favore controllare di nuovo!"
-#define NO_FILE_IT "Nessun file!"
+#define NO_FILE_IT "Nessun file!"
-#define EXTRUDER_TEMP_TEXT_IT "Temper"
-#define EXTRUDER_E_LENGTH1_TEXT_IT "Estrude1"
-#define EXTRUDER_E_LENGTH2_TEXT_IT "Estrude2"
-#define EXTRUDER_E_LENGTH3_TEXT_IT "Estrude3"
+#define EXTRUDER_TEMP_TEXT_IT "Temper"
+#define EXTRUDER_E_LENGTH1_TEXT_IT "Estrude1"
+#define EXTRUDER_E_LENGTH2_TEXT_IT "Estrude2"
+#define EXTRUDER_E_LENGTH3_TEXT_IT "Estrude3"
-#define ABOUT_TYPE_TEXT_IT "Type: "
-#define ABOUT_VERSION_TEXT_IT "Firmware: "
-#define ABOUT_WIFI_TEXT_IT "WiFi: "
+#define ABOUT_TYPE_TEXT_IT "Type: "
+#define ABOUT_VERSION_TEXT_IT "Firmware: "
+#define ABOUT_WIFI_TEXT_IT "WiFi: "
-#define PRINTING_OPERATION_IT "Opzioni"
-#define PRINTING_PAUSE_IT "Pause"
-#define PRINTING_TEMP_IT "Temp."
-#define PRINTING_CHANGESPEED_IT "Velocità"
-#define PRINTING_RESUME_IT "Recupero"
-#define PRINTING_STOP_IT "Stop"
-#define PRINTING_MORE_IT "Di più"
-#define PRINTING_EXTRUDER_IT "Estrude"
-#define PRINTING_MOVE_IT "Muovi"
+#define PRINTING_OPERATION_IT "Opzioni"
+#define PRINTING_PAUSE_IT "Pause"
+#define PRINTING_TEMP_IT "Temp."
+#define PRINTING_CHANGESPEED_IT "Velocità"
+#define PRINTING_RESUME_IT "Recupero"
+#define PRINTING_STOP_IT "Stop"
+#define PRINTING_MORE_IT "Di più"
+#define PRINTING_EXTRUDER_IT "Estrude"
+#define PRINTING_MOVE_IT "Muovi"
-#define EXTRUDER_SPEED_IT "Estrude"
-#define MOVE_SPEED_IT "Muovi"
-#define EXTRUDER_SPEED_STATE_IT "Estrusione"
-#define MOVE_SPEED_STATE_IT "Movimento"
-#define STEP_1PERCENT_IT "1%"
-#define STEP_5PERCENT_IT "5%"
-#define STEP_10PERCENT_IT "10%"
+#define EXTRUDER_SPEED_IT "Estrude"
+#define MOVE_SPEED_IT "Muovi"
+#define EXTRUDER_SPEED_STATE_IT "Estrusione"
+#define MOVE_SPEED_STATE_IT "Movimento"
+#define STEP_1PERCENT_IT "1%"
+#define STEP_5PERCENT_IT "5%"
+#define STEP_10PERCENT_IT "10%"
-#define ZOFFSET_IT "Z Offset"
-#define ZOFFSET_INC_IT "Add"
-#define ZOFFSET_DEC_IT "Dec"
+#define ZOFFSET_IT "Z Offset"
+#define ZOFFSET_INC_IT "Add"
+#define ZOFFSET_DEC_IT "Dec"
-#define TITLE_READYPRINT_IT "Pronto"
-#define TITLE_PREHEAT_IT "Preris"
-#define TITLE_MOVE_IT "Muovi"
-#define TITLE_HOME_IT "Home"
-#define TITLE_EXTRUDE_IT "Estrude"
-#define TITLE_LEVELING_IT "Livella"
-#define TITLE_SET_IT "Impostare"
-#define TITLE_MORE_IT "Di più"
-#define TITLE_CHOOSEFILE_IT "File"
-#define TITLE_PRINTING_IT "Stampa"
-#define TITLE_OPERATION_IT "Opzioni"
-#define TITLE_ADJUST_IT "Regolare"
-#define TITLE_WIRELESS_IT "Wireless"
-#define TITLE_FILAMENT_IT "Filamento"
-#define TITLE_ABOUT_IT "Circa"
-#define TITLE_FAN_IT "Ventola"
-#define TITLE_LANGUAGE_IT "Lingua"
-#define TITLE_PAUSE_IT "Pausa"
-#define TITLE_CHANGESPEED_IT "Velocità"
-#define TITLE_CLOUD_TEXT_IT "Cloud"
-#define TITLE_DIALOG_CONFIRM_IT "Confirm"
-#define TITLE_FILESYS_IT "FileSys"
-#define TITLE_ZOFFSET_IT "Z Offset"
+#define TITLE_READYPRINT_IT "Pronto"
+#define TITLE_PREHEAT_IT "Preris"
+#define TITLE_MOVE_IT "Muovi"
+#define TITLE_HOME_IT "Home"
+#define TITLE_EXTRUDE_IT "Estrude"
+#define TITLE_LEVELING_IT "Livella"
+#define TITLE_SET_IT "Impostare"
+#define TITLE_MORE_IT "Di più"
+#define TITLE_CHOOSEFILE_IT "File"
+#define TITLE_PRINTING_IT "Stampa"
+#define TITLE_OPERATION_IT "Opzioni"
+#define TITLE_ADJUST_IT "Regolare"
+#define TITLE_WIRELESS_IT "Wireless"
+#define TITLE_FILAMENT_IT "Filamento"
+#define TITLE_ABOUT_IT "Circa"
+#define TITLE_FAN_IT "Ventola"
+#define TITLE_LANGUAGE_IT "Lingua"
+#define TITLE_PAUSE_IT "Pausa"
+#define TITLE_CHANGESPEED_IT "Velocità"
+#define TITLE_CLOUD_TEXT_IT "Cloud"
+#define TITLE_DIALOG_CONFIRM_IT "Confirm"
+#define TITLE_FILESYS_IT "FileSys"
+#define TITLE_ZOFFSET_IT "Z Offset"
-#define AUTO_SHUTDOWN_IT "Auto"
-#define MANUAL_SHUTDOWN_IT "Manuale"
+#define AUTO_SHUTDOWN_IT "Auto"
+#define MANUAL_SHUTDOWN_IT "Manuale"
-#define DIALOG_CONFIRM_IT "Conferma"
-#define DIALOG_CANCLE_IT "Cancella"
-#define DIALOG_OK_IT "OK"
-#define DIALOG_RESET_IT "Resettare"
-#define DIALOG_RETRY_IT "Riprovare"
-#define DIALOG_DISABLE_IT "Disable"
-#define DIALOG_PRINT_MODEL_IT "Gcode stampa?"
-#define DIALOG_CANCEL_PRINT_IT "Stop stampa?"
-#define DIALOG_STOP_IT "Stop"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_IT "Continua a stampare dal \npunto di interruzione?"
-//#define DIALOG_UNBIND_PRINTER_IT "Libero?"
-#define DIALOG_ERROR_TIPS1_IT "Errore: nessun file, \nper favore controllare di nuovo."
-#define DIALOG_ERROR_TIPS2_IT "Errore: operazione non riuscita, \nsi prega di controllare se il baudrate del \ndisplay è lo stesso scheda madre"
-#define DIALOG_ERROR_TIPS3_IT "Errore: il nome del file o il \npercorso è troppo lungo!"
-#define DIALOG_CLOSE_MACHINE_IT "Closing machine......"
-#define DIALOG_UNBIND_PRINTER_IT "Unbind the printer?"
-#define DIALOG_FILAMENT_NO_PRESS_IT "Filament detection switch is not pressed"
-#define DIALOG_PRINT_FINISH_IT "La stampa è completa!"
+#define DIALOG_CONFIRM_IT "Conferma"
+#define DIALOG_CANCLE_IT "Cancella"
+#define DIALOG_OK_IT "OK"
+#define DIALOG_RESET_IT "Resettare"
+#define DIALOG_RETRY_IT "Riprovare"
+#define DIALOG_DISABLE_IT "Disable"
+#define DIALOG_PRINT_MODEL_IT "Gcode stampa?"
+#define DIALOG_CANCEL_PRINT_IT "Stop stampa?"
+#define DIALOG_STOP_IT "Stop"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_IT "Continua a stampare dal \npunto di interruzione?"
+//#define DIALOG_UNBIND_PRINTER_IT "Libero?"
+#define DIALOG_ERROR_TIPS1_IT "Errore: nessun file, \nper favore controllare di nuovo."
+#define DIALOG_ERROR_TIPS2_IT "Errore: operazione non riuscita, \nsi prega di controllare se il baudrate del \ndisplay è lo stesso scheda madre"
+#define DIALOG_ERROR_TIPS3_IT "Errore: il nome del file o il \npercorso è troppo lungo!"
+#define DIALOG_CLOSE_MACHINE_IT "Closing machine......"
+#define DIALOG_UNBIND_PRINTER_IT "Unbind the printer?"
+#define DIALOG_FILAMENT_NO_PRESS_IT "Filament detection switch is not pressed"
+#define DIALOG_PRINT_FINISH_IT "La stampa è completa!"
#define DIALOG_PRINT_TIME_IT "Tempo di stampa: "
#define DIALOG_REPRINT_IT "Print again"
-#define DIALOG_WIFI_ENABLE_TIPS_IT "The wifi module is being configured,\nplease wait a moment....."
+#define DIALOG_WIFI_ENABLE_TIPS_IT "The wifi module is being configured,\nplease wait a moment....."
-#define MESSEGE_PAUSING_IT "Parcheggiando..."
-#define MESSEGE_CHANGING_IT "Attendere avvio del cambio di filamento"
-#define MESSEGE_UNLOAD_IT "Attendere l'espulsione del filamento"
-#define MESSEGE_WAITING_IT "Premi per riprendere la stampa"
-#define MESSEGE_INSERT_IT "Inserisci il filamento e premi per continuare"
-#define MESSEGE_LOAD_IT "Attendere il caricamento del filamento"
-#define MESSEGE_PURGE_IT "Attendere lo spurgo del filamento"
-#define MESSEGE_RESUME_IT "Attendere la ripresa della stampa..."
-#define MESSEGE_HEAT_IT "Premi per riscaldare ugello"
-#define MESSEGE_HEATING_IT "Riscaldam. ugello Attendere prego..."
-#define MESSEGE_OPTION_IT "Eliminare di più o continuare a stampare?"
-#define MESSEGE_PURGE_MORE_IT "Epurazione"
-#define MESSEGE_CONTINUE_PRINT_IT "Stampa"
+#define MESSAGE_PAUSING_IT "Parcheggiando..."
+#define MESSAGE_CHANGING_IT "Attendere avvio del cambio di filamento"
+#define MESSAGE_UNLOAD_IT "Attendere l'espulsione del filamento"
+#define MESSAGE_WAITING_IT "Premi per riprendere la stampa"
+#define MESSAGE_INSERT_IT "Inserisci il filamento e premi per continuare"
+#define MESSAGE_LOAD_IT "Attendere il caricamento del filamento"
+#define MESSAGE_PURGE_IT "Attendere lo spurgo del filamento"
+#define MESSAGE_RESUME_IT "Attendere la ripresa della stampa..."
+#define MESSAGE_HEAT_IT "Premi per riscaldare ugello"
+#define MESSAGE_HEATING_IT "Riscaldam. ugello Attendere prego..."
+#define MESSAGE_OPTION_IT "Eliminare di più o continuare a stampare?"
+#define MESSAGE_PURGE_MORE_IT "Epurazione"
+#define MESSAGE_CONTINUE_PRINT_IT "Stampa"
+#define EEPROM_SETTINGS_TITLE_IT "Impostazioni EEPROM"
+#define EEPROM_SETTINGS_STORE_IT "Memorizzare le impostazioni su EEPROM"
+#define EEPROM_SETTINGS_READ_IT "Leggi le impostazioni dalla EEPROM"
+#define EEPROM_SETTINGS_REVERT_IT "Ripristina le impostazioni predefinite di fabbrica"
+
+#define EEPROM_STORE_TIPS_IT "Memorizzare le impostazioni su EEPROM?"
+#define EEPROM_READ_TIPS_IT "Leggi le impostazioni dalla EEPROM?"
+#define EEPROM_REVERT_TIPS_IT "Ripristinare le impostazioni predefinite?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
index 6778331cc9c5..2ec39ab01646 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
@@ -98,6 +98,8 @@
#define MOTOR_OFF_TEXT_RU "отклмотор"
#define MOTOR_OFF_XY_TEXT_RU "Off-XY"
#define SHUTDOWN_TEXT_RU "выключение"
+#define MACHINE_PARA_RU "конфиг"
+#define EEPROM_SETTINGS_RU "Eeprom Set"
#define U_DISK_TEXT_RU "U диск"
#define SD_CARD_TEXT_RU "SD диск"
@@ -257,16 +259,24 @@
#define DIALOG_REPRINT_RU "Print again"
#define DIALOG_WIFI_ENABLE_TIPS_RU "The wifi module is being configured,\nplease wait a moment....."
-#define MESSEGE_PAUSING_RU "Стоянка..."
-#define MESSEGE_CHANGING_RU "Подождите, пока начнется смена филамента"
-#define MESSEGE_UNLOAD_RU "Дождитесь выгрузки нити"
-#define MESSEGE_WAITING_RU "Нажмите кнопку,чтобы возобновить печать"
-#define MESSEGE_INSERT_RU "Вставьте нить и нажмите кнопку,чтобы продолжить"
-#define MESSEGE_LOAD_RU "Дождитесь загрузки нити"
-#define MESSEGE_PURGE_RU "Дождитесь чистки нити"
-#define MESSEGE_RESUME_RU "Подождите,пока печать возобновится ..."
-#define MESSEGE_HEAT_RU "Нажмите кнопку, чтобы нагреть форсунку"
-#define MESSEGE_HEATING_RU "Подогрев форсунки Пожалуйста, подождите ..."
-#define MESSEGE_OPTION_RU "Очистить больше или продолжить печать?"
-#define MESSEGE_PURGE_MORE_RU "чистка"
-#define MESSEGE_CONTINUE_PRINT_RU "Распечатать"
+#define MESSAGE_PAUSING_RU "Стоянка..."
+#define MESSAGE_CHANGING_RU "Подождите, пока начнется смена филамента"
+#define MESSAGE_UNLOAD_RU "Дождитесь выгрузки нити"
+#define MESSAGE_WAITING_RU "Нажмите кнопку,чтобы возобновить печать"
+#define MESSAGE_INSERT_RU "Вставьте нить и нажмите кнопку,чтобы продолжить"
+#define MESSAGE_LOAD_RU "Дождитесь загрузки нити"
+#define MESSAGE_PURGE_RU "Дождитесь чистки нити"
+#define MESSAGE_RESUME_RU "Подождите,пока печать возобновится ..."
+#define MESSAGE_HEAT_RU "Нажмите кнопку, чтобы нагреть форсунку"
+#define MESSAGE_HEATING_RU "Подогрев форсунки Пожалуйста, подождите ..."
+#define MESSAGE_OPTION_RU "Очистить больше или продолжить печать?"
+#define MESSAGE_PURGE_MORE_RU "чистка"
+#define MESSAGE_CONTINUE_PRINT_RU "Распечатать"
+#define EEPROM_SETTINGS_TITLE_RU "Настройки EEPROM"
+#define EEPROM_SETTINGS_STORE_RU "Сохранение настроек в EEPROM"
+#define EEPROM_SETTINGS_READ_RU "Чтение настроек из EEPROM"
+#define EEPROM_SETTINGS_REVERT_RU "Восстановить заводские настройки по умолчанию"
+
+#define EEPROM_STORE_TIPS_RU "Сохранить настройки в EEPROM?"
+#define EEPROM_READ_TIPS_RU "Читать настройки из EEPROM?"
+#define EEPROM_REVERT_TIPS_RU "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
index c8b0a7194d00..ea481c89a24e 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
@@ -22,6 +22,211 @@
#pragma once
//*************简体中文***********************//
+#define NEXT_CN "下一页"
+#define PREVIOUS_CN "上一页"
+#define DEFAULT_CN "默认值"
+#define KEY_BACK_CN "退格"
+#define KEY_REST_CN "重置"
+#define KEY_CONFIRM_CN "确定"
+
+#define MACHINE_PARA_TITLE_CN "机器参数"
+#define MACHINE_TYPE_CNOFIG_CN "机器设置"
+#define TEMPERATURE_CONFIG_CN "温度设置"
+#define MOTOR_CONFIG_CN "电机设置"
+#define ADVANCE_CONFIG_CN "高级设置"
+
+#define MACHINE_CONFIG_TITLE_CN "机器参数>机器配置"
+#define MACHINE_TYPE_CN "机型选择"
+#define MACHINE_STROKE_CN "行程设置"
+#define MACHINE_HOMEDIR_CN "归零方向"
+#define MACHINE_ENDSTOP_TYPE_CN "限位开关类型"
+#define MACHINE_FILAMENT_CONFIG_CN "换料设置"
+#define MACHINE_LEVELING_CONFIG_CN "调平设置"
+
+#define MACHINE_TYPE_CONFIG_TITLE_CN "机器参数>机型选择"
+#define MACHINE_TYPE_XYZ_CN "XYZ机型"
+#define MACHINE_TYPE_DELTA_CN "Delta机型"
+#define MACHINE_TYPE_COREXY_CN "Corexy机型"
+
+#define MACHINE_STROKE_CONF_TITLE_CN "机器参数>机器行程"
+#define X_MAX_LENGTH_CN "X轴最大行程"
+#define Y_MAX_LENGTH_CN "Y轴最大行程"
+#define Z_MAX_LENGTH_CN "Z轴最大行程"
+
+#define X_MIN_LENGTH_CN "X轴最小行程"
+#define Y_MIN_LENGTH_CN "Y轴最小行程"
+#define Z_MIN_LENGTH_CN "Z轴最小行程"
+
+#define HOME_DIR_CONF_TITLE_CN "机器参数>归零方向"
+#define HOME_DIR_X_CN "X轴归零方向"
+#define HOME_DIR_Y_CN "Y轴归零方向"
+#define HOME_DIR_Z_CN "Z轴归零方向"
+#define HOME_MIN_CN "MIN"
+#define HOME_MAX_CN "MAX"
+
+#define ENDSTOP_CONF_TITLE_CN "机器参数>限位开关"
+#define MIN_ENDSTOP_X_CN "X轴最小限位"
+#define MIN_ENDSTOP_Y_CN "Y轴最小限位"
+#define MIN_ENDSTOP_Z_CN "Z轴最小限位"
+#define MAX_ENDSTOP_X_CN "X轴最大限位"
+#define MAX_ENDSTOP_Y_CN "Y轴最大限位"
+#define MAX_ENDSTOP_Z_CN "Z轴最大限位"
+#define ENDSTOP_FIL_CN "断料开关类型"
+#define ENDSTOP_LEVEL_CN "调平开关类型"
+#define ENDSTOP_OPENED_CN "常开"
+#define ENDSTOP_CLOSED_CN "常闭"
+
+#define FILAMENT_CONF_TITLE_CN "换料设置"
+#define FILAMENT_IN_TEMPERATURE_CN "进料温度"
+#define FILAMENT_IN_LENGTH_CN "进料长度"
+#define FILAMENT_IN_SPEED_CN "进料速度"
+#define FILAMENT_OUT_TEMPERATURE_CN "退料温度"
+#define FILAMENT_OUT_LENGTH_CN "退料长度"
+#define FILAMENT_OUT_SPEED_CN "退料速度"
+
+#define LEVELING_CONF_TITLE_CN "调平设置"
+#define LEVELING_PARA_CONF_CN "调平设置"
+#define LEVELING_DELTA_CN "delta机型设置"
+#define LEVELING_XYZ_CN "手动调平坐标设置"
+
+#define LEVELING_PARA_CONF_TITLE_CN "调平参数"
+#define AUTO_LEVELING_ENABLE_CN "自动调平"
+#define BLTOUCH_LEVELING_ENABLE_CN "启动BLtouch"
+#define PROBE_PORT_CN "调平探针接口"
+#define PROBE_X_OFFSET_CN "探针X方向偏移"
+#define PROBE_Y_OFFSET_CN "探针Y方向偏移"
+#define PROBE_Z_OFFSET_CN "探针Z方向偏移"
+#define PROBE_XY_SPEED_CN "探针XY方向移动速度"
+#define PROBE_Z_SPEED_CN "探针Z方向移动速度"
+#define ENABLE_CN "是"
+#define DISABLE_CN "否"
+#define Z_MIN_CN "ZMin"
+#define Z_MAX_CN "ZMax"
+
+#define DELTA_LEVEL_CONF_TITLE_CN "Delta机器参数"
+#define DELTA_LEVEL_CONF_CN "Delta机器调平"
+#define DELTA_MACHINE_RADIUS_CN "机器半径"
+#define DELTA_DIAGONAL_ROD_CN "机器杆长"
+#define DELTA_PRINT_RADIUS_CN "打印半径"
+#define DELTA_HEIGHT_CN "打印高度"
+#define SMOOTH_ROD_OFFSET_CN "滑块偏移"
+#define EFFECTOR_OFFSET_CN "效应器偏移"
+#define CALIBRATION_RADIUS_CN "调平半径"
+
+#define XYZ_LEVEL_CONF_TITLE_CN "XYZ机器参数"
+#define PROBE_REACH_MAX_LEFT_CN "探针达到最左位置"
+#define PROBE_REACH_MAX_RIGHT_CN "探针达到最右位置"
+#define PROBE_REACH_MAX_FRONT_CN "探针达到最前位置"
+#define PROBE_REACH_MAX_BACK_CN "探针达到最后位置"
+
+#define TEMPERATURE_CONF_TITLE_CN "机器参数>温度设置"
+#define NOZZLE_CONF_CN "喷头设置"
+#define HOTBED_CONF_CN "热床设置"
+#define PREHEAT_TEMPER_CN "预设温度"
+
+#define NOZZLE_CONF_TITLE_CN "机器参数>喷头设置"
+#define NOZZLECNT_CN "喷头数量"
+#define NOZZLE_TYPE_CN "E0温感类型"
+#define NOZZLE_ADJUST_TYPE_CN "PID调温"
+#define NOZZLE_MIN_TEMPERATURE_CN "最低温度"
+#define NOZZLE_MAX_TEMPERATURE_CN "最高温度"
+#define EXTRUD_MIN_TEMPER_CN "最低挤出温度"
+
+#define HOTBED_CONF_TITLE_CN "机器参数>热床设置"
+#define HOTBED_ADJUST_CN "PID调温"
+#define HOTBED_MIN_TEMPERATURE_CN "最低温度"
+#define HOTBED_MAX_TEMPERATURE_CN "最高温度"
+
+#define MOTOR_CONF_TITLE_CN "机器参数>电机设置"
+#define MAXFEEDRATE_CONF_CN "最大速度设置"
+#define ACCELERATION_CONF_CN "加速度设置"
+#define JERKCONF_CN "突变速度设置"
+#define STEPSCONF_CN "脉冲设置"
+#define TMC_CURRENT_CN "TMC 驱动电流设置"
+#define TMC_STEP_MODE_CN "TMC 驱动模式设置"
+#define MOTORDIRCONF_CN "电机方向设置"
+#define HOMEFEEDRATECONF_CN "归零速度设置"
+
+#define MAXFEEDRATE_CONF_TITLE_CN "机器参数>最大速度"
+#define X_MAXFEEDRATE_CN "X轴最大速度"
+#define Y_MAXFEEDRATE_CN "Y轴最大速度"
+#define Z_MAXFEEDRATE_CN "Z轴最大速度"
+#define E0_MAXFEEDRATE_CN "E0轴最大速度"
+#define E1_MAXFEEDRATE_CN "E1轴最大速度"
+
+#define ACCELERATION_CONF_TITLE_CN "机器参数>加速度"
+#define PRINT_ACCELERATION_CN "打印加速度"
+#define RETRACT_ACCELERATION_CN "回抽加速度"
+#define TRAVEL_ACCELERATION_CN "空载加速度"
+#define X_ACCELERATION_CN "X轴加速度"
+#define Y_ACCELERATION_CN "Y轴加速度"
+#define Z_ACCELERATION_CN "Z轴加速度"
+#define E0_ACCELERATION_CN "E0轴加速度"
+#define E1_ACCELERATION_CN "E1轴加速度"
+
+#define JERK_CONF_TITLE_CN "机器参数>突变速度"
+#define X_JERK_CN "X轴突变速度"
+#define Y_JERK_CN "Y轴突变速度"
+#define Z_JERK_CN "Z轴突变速度"
+#define E_JERK_CN "E轴突变速度"
+
+#define STEPS_CONF_TITLE_CN "机器参数>脉冲设置"
+#define X_STEPS_CN "X轴脉冲"
+#define Y_STEPS_CN "Y轴脉冲"
+#define Z_STEPS_CN "Z轴脉冲"
+#define E0_STEPS_CN "E0轴脉冲"
+#define E1_STEPS_CN "E1轴脉冲"
+
+#define TMC_CURRENT_CONF_TITLE_CN "机器参数>TMC电流设置"
+#define X_TMC_CURRENT_CN "X轴电流(毫安)"
+#define Y_TMC_CURRENT_CN "Y轴电流(毫安)"
+#define Z_TMC_CURRENT_CN "Z轴电流(毫安)"
+#define E0_TMC_CURRENT_CN "E0轴电流(毫安)"
+#define E1_TMC_CURRENT_CN "E1轴电流(毫安)"
+
+#define TMC_MODE_CONF_TITLE_CN "机器参数>TMC模式设置"
+#define X_TMC_MODE_CN "X轴是否使能静音模式"
+#define Y_TMC_MODE_CN "Y轴是否使能静音模式"
+#define Z_TMC_MODE_CN "Z轴是否使能静音模式"
+#define E0_TMC_MODE_CN "E0轴是否使能静音模式"
+#define E1_TMC_MODE_CN "E1轴是否使能静音模式"
+
+#define MOTORDIR_CONF_TITLE_CN "机器参数>电机方向"
+#define X_MOTORDIR_CN "X轴电机方向"
+#define Y_MOTORDIR_CN "Y轴电机方向"
+#define Z_MOTORDIR_CN "Z轴电机方向"
+#define E0_MOTORDIR_CN "E0轴电机方向"
+#define E1_MOTORDIR_CN "E1轴电机方向"
+#define INVERT_P_CN "正向"
+#define INVERT_N_CN "反向"
+
+#define HOMEFEEDRATE_CONF_TITLE_CN "机器参数>归零速度"
+#define X_HOMESPEED_CN "XY轴归零速度"
+#define Y_HOMESPEED_CN "Y轴归零速度"
+#define Z_HOMESPEED_CN "Z轴归零速度"
+
+#define ADVANCED_CONF_TITLE_CN "机器参数>高级设置"
+#define PWROFF_DECTION_CN "断电检测模块"
+#define PWROFF_AFTER_PRINT_CN "启动打完关机功能"
+#define HAVE_UPS_CN "机器配备UPS电源"
+#define Z2_AND_Z2ENDSTOP_CONF_CN "双Z轴双限位功能设置"
+#define ENABLE_PINS_CONF_CN "电机使能脚电平设置"
+
+#define Z2_AND_Z2ENDSTOP_CONF_TITLE_CN "双z双限位设置"
+#define Z2_ENABLE_CN "启用Z2轴"
+#define Z2_ENDSTOP_CN "启用Z2限位"
+#define Z2_PORT_CN "Z2限位接口"
+
+#define ENABLE_PINS_CONF_TITLE_CN "电机使能脚电平"
+#define X_ENABLE_PINS_INVERT_CN "X轴电机使能电平"
+#define Y_ENABLE_PINS_INVERT_CN "Y轴电机使能电平"
+#define Z_ENABLE_PINS_INVERT_CN "Z轴电机使能电平"
+#define E_ENABLE_PINS_INVERT_CN "E轴电机使能电平"
+
+#define PAUSE_POSITION_CN "打印暂停位置设置"
+#define PAUSE_POSITION_X_CN "X轴暂停位置(绝对位置,-1无效)"
+#define PAUSE_POSITION_Y_CN "Y轴暂停位置(绝对位置,-1无效)"
+#define PAUSE_POSITION_Z_CN "Z轴暂停位置(相对位置,-1无效)"
#define TOOL_TEXT_CN "工具"
#define PREHEAT_TEXT_CN "预热"
#define MOVE_TEXT_CN "移动"
@@ -98,6 +303,8 @@
#define MOTOR_OFF_TEXT_CN "关闭电机"
#define MOTOR_OFF_XY_TEXT_CN "关闭XY"
#define SHUTDOWN_TEXT_CN "关机"
+#define MACHINE_PARA_CN "机器参数"
+#define EEPROM_SETTINGS_CN "Eeprom设置"
#define U_DISK_TEXT_CN "U盘"
#define SD_CARD_TEXT_CN "SD卡"
@@ -249,16 +456,24 @@
#define PRINTING_OPERATION_GBK "操作"
#define PRINTING_PAUSE_GBK "暂停"
-#define MESSEGE_PAUSING_CN "暂停中..."
-#define MESSEGE_CHANGING_CN "等待换料开始..."
-#define MESSEGE_UNLOAD_CN "退料中,请稍等..."
-#define MESSEGE_WAITING_CN "点击按钮恢复打印"
-#define MESSEGE_INSERT_CN "装载耗材后,点击按钮开始打印"
-#define MESSEGE_LOAD_CN "进料中,请稍等..."
-#define MESSEGE_PURGE_CN "等待挤出..."
-#define MESSEGE_RESUME_CN "等待恢复打印..."
-#define MESSEGE_HEAT_CN "按下按钮,加热喷头"
-#define MESSEGE_HEATING_CN "喷头加热中,请等待..."
-#define MESSEGE_OPTION_CN "挤出更多还是继续打印?"
-#define MESSEGE_PURGE_MORE_CN "挤出"
-#define MESSEGE_CONTINUE_PRINT_CN "打印"
+#define MESSAGE_PAUSING_CN "暂停中..."
+#define MESSAGE_CHANGING_CN "等待换料开始..."
+#define MESSAGE_UNLOAD_CN "退料中,请稍等..."
+#define MESSAGE_WAITING_CN "点击按钮恢复打印"
+#define MESSAGE_INSERT_CN "装载耗材后,点击按钮开始打印"
+#define MESSAGE_LOAD_CN "进料中,请稍等..."
+#define MESSAGE_PURGE_CN "等待挤出..."
+#define MESSAGE_RESUME_CN "等待恢复打印..."
+#define MESSAGE_HEAT_CN "按下按钮,加热喷头"
+#define MESSAGE_HEATING_CN "喷头加热中,请等待..."
+#define MESSAGE_OPTION_CN "挤出更多还是继续打印?"
+#define MESSAGE_PURGE_MORE_CN "挤出"
+#define MESSAGE_CONTINUE_PRINT_CN "打印"
+#define EEPROM_SETTINGS_TITLE_CN "EEPROM 设置"
+#define EEPROM_SETTINGS_STORE_CN "保存参数至EEPROM"
+#define EEPROM_SETTINGS_READ_CN "读取EEPROM参数"
+#define EEPROM_SETTINGS_REVERT_CN "恢复默认参数"
+
+#define EEPROM_STORE_TIPS_CN "是否保存参数到EEPROM?"
+#define EEPROM_READ_TIPS_CN "是否使用EEPROM参数?"
+#define EEPROM_REVERT_TIPS_CN "是否恢复默认参数?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
index 75d1fd539d8b..289874c6baf1 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
@@ -98,6 +98,8 @@
#define MOTOR_OFF_TEXT_SP "Apagar motor"
#define MOTOR_OFF_XY_TEXT_SP "Off-XY"
#define SHUTDOWN_TEXT_SP "Apagar"
+#define MACHINE_PARA_SP "Config"
+#define EEPROM_SETTINGS_SP "Eeprom Set"
#define U_DISK_TEXT_SP "PENDRIVE"
#define SD_CARD_TEXT_SP "SD"
@@ -245,9 +247,9 @@
#define DIALOG_PRINT_MODEL_SP "¿Está seguro?"
#define DIALOG_CANCEL_PRINT_SP "¿Está seguro que desea detener la impresión?"
-#define DIALOG_RETRY_SP "Reintentar"
-#define DIALOG_STOP_SP "Stop"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_SP "Reprint from breakpoint?"
+#define DIALOG_RETRY_SP "Reintentar"
+#define DIALOG_STOP_SP "Stop"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_SP "Reprint from breakpoint?"
//#define DIALOG_UNBIND_PRINTER_SP "Unbind the printer?"
#define DIALOG_ERROR_TIPS1_SP "Error:archivo no encontrado, \npor favor insertar SD o disco USB."
#define DIALOG_ERROR_TIPS2_SP "error:transacción fallida, \nconfigurar baudrate del \ndisplay para la placa base!"
@@ -260,20 +262,28 @@
#define DIALOG_REPRINT_SP "Print again"
#define DIALOG_WIFI_ENABLE_TIPS_SP "The wifi module is being configured,\nplease wait a moment....."
-#define PRINTING_SP "Imprimiendo"
-#define PRINTING_AJUSTES_SP "Ajustes"
-#define PRINTING_PAUSAR_SP "Pausar"
+#define PRINTING_SP "Imprimiendo"
+#define PRINTING_AJUSTES_SP "Ajustes"
+#define PRINTING_PAUSAR_SP "Pausar"
+
+#define MESSAGE_PAUSING_SP "Aparcando..."
+#define MESSAGE_CHANGING_SP "Esperando para iniciar el cambio de filamento"
+#define MESSAGE_UNLOAD_SP "Espere para liberar el filamento"
+#define MESSAGE_WAITING_SP "Pulsar el botón para reanudar impresión"
+#define MESSAGE_INSERT_SP "Inserte el filamento y pulse el botón para continuar..."
+#define MESSAGE_LOAD_SP "Espere para purgar el filamento"
+#define MESSAGE_PURGE_SP "Espere para purgar el filamento"
+#define MESSAGE_RESUME_SP "Esperando impresora para reanudar..."
+#define MESSAGE_HEAT_SP "Pulse el botón para calentar la boquilla"
+#define MESSAGE_HEATING_SP "Calentando boquilla Espere por favor..."
+#define MESSAGE_OPTION_SP "¿Purgar más o continuar con la impresión?"
+#define MESSAGE_PURGE_MORE_SP "Purga"
+#define MESSAGE_CONTINUE_PRINT_SP "Impresión"
+#define EEPROM_SETTINGS_TITLE_SP "Configuraciones EEPROM"
+#define EEPROM_SETTINGS_STORE_SP "Guardar configuración en EEPROM"
+#define EEPROM_SETTINGS_READ_SP "Leer la configuración de EEPROM"
+#define EEPROM_SETTINGS_REVERT_SP "Revert settings to factory defaults"
-#define MESSEGE_PAUSING_SP "Aparcando..."
-#define MESSEGE_CHANGING_SP "Esperando para iniciar el cambio de filamento"
-#define MESSEGE_UNLOAD_SP "Espere para liberar el filamento"
-#define MESSEGE_WAITING_SP "Pulsar el botón para reanudar impresión"
-#define MESSEGE_INSERT_SP "Inserte el filamento y pulse el botón para continuar..."
-#define MESSEGE_LOAD_SP "Espere para purgar el filamento"
-#define MESSEGE_PURGE_SP "Espere para purgar el filamento"
-#define MESSEGE_RESUME_SP "Esperando impresora para reanudar..."
-#define MESSEGE_HEAT_SP "Pulse el botón para calentar la boquilla"
-#define MESSEGE_HEATING_SP "Calentando boquilla Espere por favor..."
-#define MESSEGE_OPTION_SP "¿Purgar más o continuar con la impresión?"
-#define MESSEGE_PURGE_MORE_SP "Purga"
-#define MESSEGE_CONTINUE_PRINT_SP "Impresión"
+#define EEPROM_STORE_TIPS_SP "¿Guardar ajustes en EEPROM?"
+#define EEPROM_READ_TIPS_SP "Leer la configuración de EEPROM?"
+#define EEPROM_REVERT_TIPS_SP "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
index e69de29bb2d1..19bd511d9a38 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
@@ -0,0 +1,480 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//***************繁体中文**********************//
+#define NEXT_T_CN "下一頁"
+#define PREVIOUS_T_CN "上一頁"
+#define DEFAULT_T_CN "默認值"
+#define KEY_BACK_T_CN "退格"
+#define KEY_REST_T_CN "重置"
+#define KEY_CONFIRM_T_CN "確定"
+
+#define MACHINE_PARA_TITLE_T_CN "機器參數"
+#define MACHINE_TYPE_CNOFIG_T_CN "機器設置"
+#define TEMPERATURE_CONFIG_T_CN "溫度設置"
+#define MOTOR_CONFIG_T_CN "電機設置"
+#define ADVANCE_CONFIG_T_CN "高級設置"
+
+#define MACHINE_CONFIG_TITLE_T_CN "機器參數>機器配置"
+#define MACHINE_TYPE_T_CN "機型選擇"
+#define MACHINE_STROKE_T_CN "行程設置"
+#define MACHINE_HOMEDIR_T_CN "歸零方向"
+#define MACHINE_ENDSTOP_TYPE_T_CN "限位開關類型"
+#define MACHINE_FILAMENT_CONFIG_T_CN "換料設置"
+#define MACHINE_LEVELING_CONFIG_T_CN "調平設置"
+
+#define MACHINE_TYPE_CONFIG_TITLE_T_CN "機器參數>機型選擇"
+#define MACHINE_TYPE_XYZ_T_CN "XYZ機型"
+#define MACHINE_TYPE_DELTA_T_CN "Delta機型"
+#define MACHINE_TYPE_COREXY_T_CN "Corexy機型"
+
+#define MACHINE_STROKE_CONF_TITLE_T_CN "機器參數>機器行程"
+#define X_MAX_LENGTH_T_CN "X軸最大行程"
+#define Y_MAX_LENGTH_T_CN "Y軸最大行程"
+#define Z_MAX_LENGTH_T_CN "Z軸最大行程"
+
+#define X_MIN_LENGTH_T_CN "X軸最小行程"
+#define Y_MIN_LENGTH_T_CN "Y軸最小行程"
+#define Z_MIN_LENGTH_T_CN "Z軸最小行程"
+
+#define HOME_DIR_CONF_TITLE_T_CN "機器參數>歸零方向"
+#define HOME_DIR_X_T_CN "X軸歸零方向"
+#define HOME_DIR_Y_T_CN "Y軸歸零方向"
+#define HOME_DIR_Z_T_CN "Z軸歸零方向"
+#define HOME_MIN_T_CN "MIN"
+#define HOME_MAX_T_CN "MAX"
+
+#define ENDSTOP_CONF_TITLE_T_CN "機器參數>限位開關"
+#define MIN_ENDSTOP_X_T_CN "X軸最小限位"
+#define MIN_ENDSTOP_Y_T_CN "Y軸最小限位"
+#define MIN_ENDSTOP_Z_T_CN "Z軸最小限位"
+#define MAX_ENDSTOP_X_T_CN "X軸最大限位"
+#define MAX_ENDSTOP_Y_T_CN "Y軸最大限位"
+#define MAX_ENDSTOP_Z_T_CN "Z軸最大限位"
+#define ENDSTOP_FIL_T_CN "斷料開關類型"
+#define ENDSTOP_LEVEL_T_CN "調平開關類型"
+#define ENDSTOP_OPENED_T_CN "常開"
+#define ENDSTOP_CLOSED_T_CN "常閉"
+
+#define FILAMENT_CONF_TITLE_T_CN "換料設置"
+#define FILAMENT_IN_TEMPERATURE_T_CN "進料溫度"
+#define FILAMENT_IN_LENGTH_T_CN "進料長度"
+#define FILAMENT_IN_SPEED_T_CN "進料速度"
+#define FILAMENT_OUT_TEMPERATURE_T_CN "退料溫度"
+#define FILAMENT_OUT_LENGTH_T_CN "退料長度"
+#define FILAMENT_OUT_SPEED_T_CN "退料速度"
+
+#define LEVELING_CONF_TITLE_T_CN "調平設置"
+#define LEVELING_PARA_CONF_T_CN "調平設置"
+#define LEVELING_DELTA_T_CN "delta機型設置"
+#define LEVELING_XYZ_T_CN "手動調平坐標設置"
+
+#define LEVELING_PARA_CONF_TITLE_T_CN "調平參數"
+#define AUTO_LEVELING_ENABLE_T_CN "自動調平"
+#define BLTOUCH_LEVELING_ENABLE_T_CN "啟動BLtouch"
+#define PROBE_PORT_T_CN "調平探針接口"
+#define PROBE_X_OFFSET_T_CN "探針X方向偏移"
+#define PROBE_Y_OFFSET_T_CN "探针Y方向偏移"
+#define PROBE_Z_OFFSET_T_CN "探针Z方向偏移"
+#define PROBE_XY_SPEED_T_CN "探针XY方向移動速度"
+#define PROBE_Z_SPEED_T_CN "探针Z方向移動速度"
+#define ENABLE_T_CN "是"
+#define DISABLE_T_CN "否"
+#define Z_MIN_T_CN "ZMin"
+#define Z_MAX_T_CN "ZMax"
+
+#define DELTA_LEVEL_CONF_TITLE_T_CN "Delta機器參數"
+#define DELTA_LEVEL_CONF_T_CN "Delta機器調平"
+#define DELTA_MACHINE_RADIUS_T_CN "機器半徑"
+#define DELTA_DIAGONAL_ROD_T_CN "機器桿長"
+#define DELTA_PRINT_RADIUS_T_CN "打印半徑"
+#define DELTA_HEIGHT_T_CN "打印高度"
+#define SMOOTH_ROD_OFFSET_T_CN "滑塊偏移"
+#define EFFECTOR_OFFSET_T_CN "效應器偏移"
+#define CALIBRATION_RADIUS_T_CN "調平半徑"
+
+#define XYZ_LEVEL_CONF_TITLE_T_CN "XYZ機器參數"
+#define PROBE_REACH_MAX_LEFT_T_CN "探针達到最左位置"
+#define PROBE_REACH_MAX_RIGHT_T_CN "探针達到最右位置"
+#define PROBE_REACH_MAX_FRONT_T_CN "探针達到最前位置"
+#define PROBE_REACH_MAX_BACK_T_CN "探针達到最後位置"
+
+#define TEMPERATURE_CONF_TITLE_T_CN "機器參數>溫度設置"
+#define NOZZLE_CONF_T_CN "噴頭設置"
+#define HOTBED_CONF_T_CN "熱床設置"
+#define PREHEAT_TEMPER_T_CN "預設溫度"
+
+#define NOZZLE_CONF_TITLE_T_CN "機器參數>噴頭設置"
+#define NOZZLECNT_T_CN "噴頭數量"
+#define NOZZLE_TYPE_T_CN "E0溫感類型"
+#define NOZZLE_ADJUST_TYPE_T_CN "PID調溫"
+#define NOZZLE_MIN_TEMPERATURE_T_CN "最低溫度"
+#define NOZZLE_MAX_TEMPERATURE_T_CN "最高溫度"
+#define EXTRUD_MIN_TEMPER_T_CN "最低擠出溫度"
+
+#define HOTBED_CONF_TITLE_T_CN "機器參數>熱床設置"
+#define HOTBED_ADJUST_T_CN "PID調溫"
+#define HOTBED_MIN_TEMPERATURE_T_CN "最低溫度"
+#define HOTBED_MAX_TEMPERATURE_T_CN "最高溫度"
+
+#define MOTOR_CONF_TITLE_T_CN "機器參數>電機設置"
+#define MAXFEEDRATE_CONF_T_CN "最大速度設置"
+#define ACCELERATION_CONF_T_CN "加速度設置"
+#define JERKCONF_T_CN "突變速度設置"
+#define STEPSCONF_T_CN "脈沖設置"
+#define TMC_CURRENT_T_CN "TMC 驅動電流設置"
+#define TMC_STEP_MODE_T_CN "TMC 驅動模式設置"
+#define MOTORDIRCONF_T_CN "電機方向設置"
+#define HOMEFEEDRATECONF_T_CN "歸零速度設置"
+
+#define MAXFEEDRATE_CONF_TITLE_T_CN "機器參數>最大速度"
+#define X_MAXFEEDRATE_T_CN "X軸最大速度"
+#define Y_MAXFEEDRATE_T_CN "Y軸最大速度"
+#define Z_MAXFEEDRATE_T_CN "Z軸最大速度"
+#define E0_MAXFEEDRATE_T_CN "E0軸最大速度"
+#define E1_MAXFEEDRATE_T_CN "E1軸最大速度"
+
+#define ACCELERATION_CONF_TITLE_T_CN "機器參數>加速度"
+#define PRINT_ACCELERATION_T_CN "打印加速度"
+#define RETRACT_ACCELERATION_T_CN "回抽加速度"
+#define TRAVEL_ACCELERATION_T_CN "空載加速度"
+#define X_ACCELERATION_T_CN "X軸加速度"
+#define Y_ACCELERATION_T_CN "Y軸加速度"
+#define Z_ACCELERATION_T_CN "Z軸加速度"
+#define E0_ACCELERATION_T_CN "E0軸加速度"
+#define E1_ACCELERATION_T_CN "E1軸加速度"
+
+#define JERK_CONF_TITLE_T_CN "機器參數>突變速度"
+#define X_JERK_T_CN "X軸突變速度"
+#define Y_JERK_T_CN "Y軸突變速度"
+#define Z_JERK_T_CN "Z軸突變速度"
+#define E_JERK_T_CN "E軸突變速度"
+
+#define STEPS_CONF_TITLE_T_CN "機器參數>脈衝設置"
+#define X_STEPS_T_CN "X軸脈沖"
+#define Y_STEPS_T_CN "Y軸脈沖"
+#define Z_STEPS_T_CN "Z軸脈沖"
+#define E0_STEPS_T_CN "E0軸脈沖"
+#define E1_STEPS_T_CN "E1軸脈沖"
+
+#define TMC_CURRENT_CONF_TITLE_T_CN "機器參數>TMC電流設置"
+#define X_TMC_CURRENT_T_CN "X軸電流(毫安)"
+#define Y_TMC_CURRENT_T_CN "Y軸電流(毫安)"
+#define Z_TMC_CURRENT_T_CN "Z軸電流(毫安)"
+#define E0_TMC_CURRENT_T_CN "E0軸電流(毫安)"
+#define E1_TMC_CURRENT_T_CN "E1軸電流(毫安)"
+
+#define TMC_MODE_CONF_TITLE_T_CN "機器參數>TMC模式設置"
+#define X_TMC_MODE_T_CN "X軸是否使能靜音模式"
+#define Y_TMC_MODE_T_CN "Y軸是否使能靜音模式"
+#define Z_TMC_MODE_T_CN "Z軸是否使能靜音模式"
+#define E0_TMC_MODE_T_CN "E0軸是否使能靜音模式"
+#define E1_TMC_MODE_T_CN "E1軸是否使能靜音模式"
+
+#define MOTORDIR_CONF_TITLE_T_CN "機器參數>電機方向"
+#define X_MOTORDIR_T_CN "X軸電機方向"
+#define Y_MOTORDIR_T_CN "Y軸電機方向"
+#define Z_MOTORDIR_T_CN "Z軸電機方向"
+#define E0_MOTORDIR_T_CN "E0軸電機方向"
+#define E1_MOTORDIR_T_CN "E1軸電機方向"
+#define INVERT_P_T_CN "正向"
+#define INVERT_N_T_CN "反向"
+
+#define HOMEFEEDRATE_CONF_TITLE_T_CN "機器參數>歸零速度"
+#define X_HOMESPEED_T_CN "XY軸歸零速度"
+#define Y_HOMESPEED_T_CN "Y軸歸零速度"
+#define Z_HOMESPEED_T_CN "Z軸歸零速度"
+
+#define ADVANCED_CONF_TITLE_T_CN "機器參數>高級設置"
+#define PWROFF_DECTION_T_CN "斷電檢測模塊"
+#define PWROFF_AFTER_PRINT_T_CN "啟動打完關機功能"
+#define HAVE_UPS_T_CN "機器配備UPS電壓"
+#define Z2_AND_Z2ENDSTOP_CONF_T_CN "雙z軸雙限位功能設置"
+#define ENABLE_PINS_CONF_T_CN "電機使能腳電平設置"
+
+#define Z2_AND_Z2ENDSTOP_CONF_TITLE_T_CN "雙z軸雙限位設置"
+#define Z2_ENABLE_T_CN "啟用Z2軸"
+#define Z2_ENDSTOP_T_CN "啟用Z2限位"
+#define Z2_PORT_T_CN "Z2限位接口"
+
+#define ENABLE_PINS_CONF_TITLE_T_CN "電機使能腳電平"
+#define X_ENABLE_PINS_INVERT_T_CN "X軸電機使能電平"
+#define Y_ENABLE_PINS_INVERT_T_CN "Y軸電機使能電平"
+#define Z_ENABLE_PINS_INVERT_T_CN "Z軸電機使能電平"
+#define E_ENABLE_PINS_INVERT_T_CN "E軸電機使能電平"
+
+#define PAUSE_POSITION_T_CN "打印暫停位置設置"
+#define PAUSE_POSITION_X_T_CN "X軸暫停位置(絕對位置,-1無效)"
+#define PAUSE_POSITION_Y_T_CN "Y軸暫停位置(絕對位置,-1無效)"
+#define PAUSE_POSITION_Z_T_CN "Z軸暫停位置(相對位置,-1無效)"
+
+#define TOOL_TEXT_T_CN "工具"
+#define PREHEAT_TEXT_T_CN "預熱"
+#define MOVE_TEXT_T_CN "移動"
+#define HOME_TEXT_T_CN "回零"
+#define PRINT_TEXT_T_CN "打印"
+#define EXTRUDE_TEXT_T_CN "擠出"
+#define LEVELING_TEXT_T_CN "調平"
+#define AUTO_LEVELING_TEXT_T_CN "自動調平"
+#define SET_TEXT_T_CN "設置"
+#define MORE_TEXT_T_CN "更多"
+
+#define ADD_TEXT_T_CN "增加"
+#define DEC_TEXT_T_CN "減少"
+#define EXTRUDER_1_TEXT_T_CN "噴頭1"
+#define EXTRUDER_2_TEXT_T_CN "噴頭2"
+#define HEATBED_TEXT_T_CN "熱床"
+#define TEXT_1C_T_CN "1℃"
+#define TEXT_5C_T_CN "5℃"
+#define TEXT_10C_T_CN "10℃"
+#define CLOSE_TEXT_T_CN "關閉"
+
+#define BACK_TEXT_T_CN "返回"
+
+#define TOOL_PREHEAT_T_CN "預熱"
+#define TOOL_EXTRUDE_T_CN "擠出"
+#define TOOL_MOVE_T_CN "移動"
+#define TOOL_HOME_T_CN "回零"
+#define TOOL_LEVELING_T_CN "調平"
+#define TOOL_AUTO_LEVELING_T_CN "自動調平"
+#define TOOL_FILAMENT_T_CN "換料"
+#define TOOL_MORE_T_CN "更多"
+
+#define AXIS_X_ADD_TEXT_T_CN "X+"
+#define AXIS_X_DEC_TEXT_T_CN "X-"
+#define AXIS_Y_ADD_TEXT_T_CN "Y+"
+#define AXIS_Y_DEC_TEXT_T_CN "Y-"
+#define AXIS_Z_ADD_TEXT_T_CN "Z+"
+#define AXIS_Z_DEC_TEXT_T_CN "Z-"
+#define TEXT_01MM_T_CN "0.1mm"
+#define TEXT_1MM_T_CN "1mm"
+#define TEXT_10MM_T_CN "10mm"
+
+#define HOME_X_TEXT_T_CN "X"
+#define HOME_Y_TEXT_T_CN "Y"
+#define HOME_Z_TEXT_T_CN "Z"
+#define HOME_ALL_TEXT_T_CN "回零"
+#define HOME_STOPMOVE_T_CN "急停"
+
+#define PAGE_UP_TEXT_T_CN "上一頁"
+#define PAGE_DOWN_TEXT_T_CN "下一頁"
+
+#define EXTRUDER_IN_TEXT_T_CN "進料"
+#define EXTRUDER_OUT_TEXT_T_CN "退料"
+#define EXTRUDE_1MM_TEXT_T_CN "1mm"
+#define EXTRUDE_5MM_TEXT_T_CN "5mm"
+#define EXTRUDE_10MM_TEXT_T_CN "10mm"
+#define EXTRUDE_LOW_SPEED_TEXT_T_CN "低速"
+#define EXTRUDE_MEDIUM_SPEED_TEXT_T_CN "常速"
+#define EXTRUDE_HIGH_SPEED_TEXT_T_CN "高速"
+
+#define LEVELING_POINT1_TEXT_T_CN "第一點"
+#define LEVELING_POINT2_TEXT_T_CN "第二點"
+#define LEVELING_POINT3_TEXT_T_CN "第三點"
+#define LEVELING_POINT4_TEXT_T_CN "第四點"
+#define LEVELING_POINT5_TEXT_T_CN "第五點"
+
+#define FILESYS_TEXT_T_CN "文件系統"
+#define WIFI_TEXT_T_CN "WIFI"
+#define FAN_TEXT_T_CN "風扇"
+#define ABOUT_TEXT_T_CN "關於"
+#define BREAK_POINT_TEXT_T_CN "斷點續打"
+#define FILAMENT_TEXT_T_CN "換料"
+#define LANGUAGE_TEXT_T_CN "語言"
+#define MOTOR_OFF_TEXT_T_CN "關閉電機"
+#define MOTOR_OFF_XY_TEXT_T_CN "關閉XY"
+#define SHUTDOWN_TEXT_T_CN "關機"
+#define MACHINE_PARA_T_CN "機器參數"
+#define EEPROM_SETTINGS_T_CN "Eeprom設置"
+
+#define U_DISK_TEXT_T_CN "U盤"
+#define SD_CARD_TEXT_T_CN "SD卡"
+#define WIFI_NAME_TEXT_T_CN "無線網絡:"
+#define WIFI_KEY_TEXT_T_CN "密碼: "
+#define WIFI_IP_TEXT_T_CN "IP: "
+#define WIFI_AP_TEXT_T_CN "狀態: AP"
+#define WIFI_STA_TEXT_T_CN "狀態: STA"
+#define WIFI_CONNECTED_TEXT_T_CN "已連接"
+#define WIFI_DISCONNECTED_TEXT_T_CN "未連接"
+#define WIFI_EXCEPTION_TEXT_T_CN "模塊異常"
+#define CLOUD_TEXT_T_CN "雲服務"
+#define CLOUD_BIND_T_CN "已綁定"
+#define CLOUD_UNBIND_T_CN "解綁"
+#define CLOUD_UNBINDING_T_CN "解绑中"
+#define CLOUD_DISCONNECTED_T_CN "未連接"
+#define CLOUD_UNBINDED_T_CN "未綁定"
+#define CLOUD_BINDED_T_CN "已綁定"
+#define CLOUD_DISABLE_T_CN "已禁用"
+
+#define FAN_ADD_TEXT_T_CN "增加"
+#define FAN_DEC_TEXT_T_CN "減少"
+#define FAN_OPEN_TEXT_T_CN "100%"
+#define FAN_HALF_TEXT_T_CN "50%"
+#define FAN_CLOSE_TEXT_T_CN "關閉"
+#define FAN_TIPS1_TEXT_T_CN "風扇"
+#define FAN_TIPS2_TEXT_T_CN "FAN\nClose"
+
+#define FILAMENT_IN_TEXT_T_CN "進料"
+#define FILAMENT_OUT_TEXT_T_CN "退料"
+#define FILAMENT_EXT0_TEXT_T_CN "噴頭1"
+#define FILAMENT_EXT1_TEXT_T_CN "噴頭2"
+#define FILAMENT_HEAT_TEXT_T_CN "預熱"
+#define FILAMENT_STOP_TEXT_T_CN "停止"
+//#define FILAMENT_CHANGE_TEXT_T_CN "準備換料"
+#define FILAMENT_TIPS2_TEXT_T_CN "T:"
+#define FILAMENT_TIPS3_TEXT_T_CN "正在進料"
+#define FILAMENT_TIPS4_TEXT_T_CN "正在退料"
+#define FILAMENT_TIPS5_TEXT_T_CN "溫度太低,請先預熱"
+#define FILAMENT_TIPS6_TEXT_T_CN "換料完成"
+
+#if 0
+ #define FILAMENT_REPLAYS_IDLE_TEXT_T_CN "請按<進料>或<退料>進行換料!"
+ #define FILAMENT_CHANGE_TEXT_T_CN "待打印機暫停后,請按<進料>或<退料>進行換料!"
+#endif
+
+ #define FILAMENT_CHANGE_TEXT_T_CN "待打印機暫停后,\n請按<進料>或<退料>"
+
+#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_T_CN "準備進料,正在加熱,請稍等"
+#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_T_CN "準備退料,正在加熱,請稍等"
+#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_T_CN "加熱完成,請裝載耗材后,按<確定>開始進料"
+#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_T_CN "請裝載耗,按<確定>開始進料!"
+#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_T_CN "加熱完成,请按<確定>開始退料!"
+#define FILAMENT_DIALOG_LOADING_TIPS_T_CN "正在進料,请等待耗材加載完成!"
+#define FILAMENT_DIALOG_UNLOADING_TIPS_T_CN "正在退料,请等待耗材卸載完成!"
+#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_T_CN "進料完成,请按<確定>返回"
+#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_T_CN "退料完成,请按<確定>返回"
+
+#define PRE_HEAT_EXT_TEXT_T_CN "噴頭"
+#define PRE_HEAT_BED_TEXT_T_CN "熱床"
+
+#define FILE_LOADING_T_CN "正在載入......"
+#define NO_FILE_AND_CHECK_T_CN "無文件!請插入sd卡/u盤!"
+#define NO_FILE_T_CN "無文件!"
+
+#define EXTRUDER_TEMP_TEXT_T_CN "溫度"
+#define EXTRUDER_E_LENGTH1_TEXT_T_CN "噴頭"
+#define EXTRUDER_E_LENGTH2_TEXT_T_CN "噴頭"
+#define EXTRUDER_E_LENGTH3_TEXT_T_CN "噴頭"
+
+#define ABOUT_TYPE_TEXT_T_CN "Type: "
+#define ABOUT_VERSION_TEXT_T_CN "Firmware: "
+#define ABOUT_WIFI_TEXT_T_CN "Wifi: "
+
+#define PRINTING_OPERATION_T_CN "操作"
+#define PRINTING_PAUSE_T_CN "暫停"
+#define PRINTING_TEMP_T_CN "溫度"
+#define PRINTING_CHANGESPEED_T_CN "變速"
+#define PRINTING_RESUME_T_CN "恢復"
+#define PRINTING_STOP_T_CN "停止"
+#define PRINTING_MORE_T_CN "更多"
+#define PRINTING_EXTRUDER_T_CN "擠出"
+#define PRINTING_MOVE_T_CN "移動"
+
+#define EXTRUDER_SPEED_T_CN "擠出"
+#define MOVE_SPEED_T_CN "移動"
+#define EXTRUDER_SPEED_STATE_T_CN "擠出速度"
+#define MOVE_SPEED_STATE_T_CN "移動速度"
+#define STEP_1PERCENT_T_CN "1%%"
+#define STEP_5PERCENT_T_CN "5%%"
+#define STEP_10PERCENT_T_CN "10%%"
+
+#define ZOFFSET_T_CN "Z Offset"
+#define ZOFFSET_INC_T_CN "增加"
+#define ZOFFSET_DEC_T_CN "減少"
+
+#define TITLE_READYPRINT_T_CN "準備打印"
+#define TITLE_PREHEAT_T_CN "預熱"
+#define TITLE_MOVE_T_CN "移動"
+#define TITLE_HOME_T_CN "回零"
+#define TITLE_EXTRUDE_T_CN "擠出"
+#define TITLE_LEVELING_T_CN "調平"
+#define TITLE_SET_T_CN "設置"
+#define TITLE_MORE_T_CN "更多"
+#define TITLE_CHOOSEFILE_T_CN "選擇文件"
+#define TITLE_PRINTING_T_CN "正在打印"
+#define TITLE_OPERATION_T_CN "操作"
+#define TITLE_ADJUST_T_CN "調整"
+#define TITLE_WIRELESS_T_CN "無線網絡"
+#define TITLE_FILAMENT_T_CN "換料"
+#define TITLE_ABOUT_T_CN "關於"
+#define TITLE_FAN_T_CN "風扇"
+#define TITLE_LANGUAGE_T_CN "語言"
+#define TITLE_PAUSE_T_CN "暫停"
+#define TITLE_CHANGESPEED_T_CN "變速"
+#define TITLE_CLOUD_TEXT_T_CN "雲服務"
+#define TITLE_DIALOG_CONFIRM_T_CN "確認"
+#define TITLE_FILESYS_T_CN "文件系統"
+#define TITLE_ZOFFSET_T_CN "Z Offset"
+
+#define AUTO_SHUTDOWN_T_CN "自動關機"
+#define MANUAL_SHUTDOWN_T_CN "手動關機"
+
+#define DIALOG_CONFIRM_T_CN "確定"
+#define DIALOG_CANCLE_T_CN "取消"
+#define DIALOG_OK_T_CN "確認"
+#define DIALOG_RESET_T_CN "重設"
+#define DIALOG_RETRY_T_CN "重試"
+#define DIALOG_DISABLE_T_CN "禁用"
+#define DIALOG_PRINT_MODEL_T_CN "打印模型?"
+#define DIALOG_CANCEL_PRINT_T_CN "停止打印?"
+#define DIALOG_RETRY_T_CN "重試"
+#define DIALOG_STOP_T_CN "停止"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_T_CN "從斷點續打?"
+//#define DIALOG_UNBIND_PRINTER_T_CN "解除綁定?"
+#define DIALOG_ERROR_TIPS1_T_CN "錯誤:找不到文件,請插入sd卡/u盤!"
+#define DIALOG_ERROR_TIPS2_T_CN "錯誤:通信失敗,請檢查波特率或主板硬件!"
+#define DIALOG_ERROR_TIPS3_T_CN "錯誤:文件名或文件路徑太長!"
+#define DIALOG_CLOSE_MACHINE_T_CN "正在關機......"
+#define DIALOG_UNBIND_PRINTER_T_CN "解除綁定?"
+#define DIALOG_FILAMENT_NO_PRESS_T_CN "請先裝載耗材!"
+#define DIALOG_PRINT_FINISH_T_CN "打印完成!"
+#define DIALOG_PRINT_TIME_T_CN "打印時間: "
+#define DIALOG_REPRINT_T_CN "再打印壹次"
+#define DIALOG_WIFI_ENABLE_TIPS_T_CN "wifi模塊正在配置中,請稍等......"
+
+#define TEXT_VALUE_T_CN "%d℃/%d℃"
+#define EXTRUDE_TEXT_VALUE_T_T_CN ": %d℃"
+#define WIFI_RECONNECT_TEXT_T_CN "重新連接"
+
+#define MESSAGE_PAUSING_T_CN "暫停中..."
+#define MESSAGE_CHANGING_T_CN "等待換料開始..."
+#define MESSAGE_UNLOAD_T_CN "退料中,請稍等..."
+#define MESSAGE_WAITING_T_CN "點擊按鈕恢復打印"
+#define MESSAGE_INSERT_T_CN "裝載耗材後,點擊按鈕開始打印"
+#define MESSAGE_LOAD_T_CN "進料中,請稍等..."
+#define MESSAGE_PURGE_T_CN "等待擠出..."
+#define MESSAGE_RESUME_T_CN "等待恢復打印..."
+#define MESSAGE_HEAT_T_CN "按下按鈕,加熱噴頭"
+#define MESSAGE_HEATING_T_CN "噴頭加熱中,請等待..."
+#define MESSAGE_OPTION_T_CN "擠出更多還是繼續打印"
+#define MESSAGE_PURGE_MORE_T_CN "擠出"
+#define MESSAGE_CONTINUE_PRINT_T_CN "打印"
+
+#define EEPROM_SETTINGS_TITLE_T_CN "EEPROM 設置"
+#define EEPROM_SETTINGS_STORE_T_CN "保存參數至EEPROM"
+#define EEPROM_SETTINGS_READ_T_CN "讀取EEPROM參數"
+#define EEPROM_SETTINGS_REVERT_T_CN "恢復默認參數"
+
+#define EEPROM_STORE_TIPS_T_CN "是否保存參數到EEPROM?"
+#define EEPROM_READ_TIPS_T_CN "是否使用EEPROM參數?"
+#define EEPROM_REVERT_TIPS_T_CN "是否恢復默認參數?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
index 5da3dd168150..e8ac3f351914 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
@@ -22,7 +22,7 @@
#include "../../../../inc/MarlinConfig.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#if defined(ARDUINO_ARCH_STM32F1) && PIN_EXISTS(FSMC_CS) // FSMC on 100/144 pins SoCs
@@ -270,4 +270,4 @@
#endif // LCD_USE_DMA_FSMC
#endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
index ac69bf06697d..f24f08e98e3a 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
@@ -21,25 +21,28 @@
*/
/**
- * @file lcd_lvgl_configuration.c
+ * @file tft_lvgl_configuration.cpp
* @date 2020-02-21
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
-#include "../../../../MarlinCore.h"
+#if ENABLED(TFT_LVGL_UI_SPI)
+ #include "SPI_TFT.h"
+#endif
#include "tft_lvgl_configuration.h"
-#include "lvgl.h"
-#include "../../../../feature/touch/xpt2046.h"
#include "draw_ready_print.h"
#include "W25Qxx.h"
#include "pic_manager.h"
-
#include "mks_hardware_test.h"
#include "draw_ui.h"
+#include
+
+#include "../../../../MarlinCore.h"
+#include "../../../../feature/touch/xpt2046.h"
#if ENABLED(POWER_LOSS_RECOVERY)
#include "../../../../feature/powerloss.h"
@@ -47,26 +50,13 @@
#include
-#if ENABLED(SPI_GRAPHICAL_TFT)
- #include "SPI_TFT.h"
-#endif
-
-extern void LCD_IO_Init(uint8_t cs, uint8_t rs);
-extern void LCD_IO_WriteData(uint16_t RegValue);
-extern void LCD_IO_WriteReg(uint16_t Reg);
-extern void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
-extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
-
#if HAS_SPI_FLASH_FONT
extern void init_gb2312_font();
#endif
static lv_disp_buf_t disp_buf;
#if ENABLED(SDSUPPORT)
- extern void UpdatePic();
- #if HAS_SPI_FLASH_FONT
- extern void UpdateFont();
- #endif
+ extern void UpdateAssets();
#endif
uint16_t DeviceCode = 0x9488;
extern uint8_t sel_id;
@@ -96,6 +86,13 @@ void SysTick_Callback() {
print_time_count();
}
+#if DISABLED(TFT_LVGL_UI_SPI)
+
+extern void LCD_IO_Init(uint8_t cs, uint8_t rs);
+extern void LCD_IO_WriteData(uint16_t RegValue);
+extern void LCD_IO_WriteReg(uint16_t Reg);
+
+extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
void tft_set_cursor(uint16_t x, uint16_t y) {
LCD_IO_WriteReg(0x002A);
LCD_IO_WriteData(x >> 8);
@@ -133,9 +130,9 @@ void tft_set_point(uint16_t x, uint16_t y, uint16_t point) {
if ((x > 480) || (y > 320)) return;
//}
//**if ( (x>320)||(y>240) ) return;
- tft_set_cursor(x, y); /*设置光标位置*/
+ tft_set_cursor(x, y);
- LCD_WriteRAM_Prepare(); /* 开始写入GRAM*/
+ LCD_WriteRAM_Prepare();
//LCD_WriteRAM(point);
LCD_IO_WriteData(point);
}
@@ -143,7 +140,7 @@ void tft_set_point(uint16_t x, uint16_t y, uint16_t point) {
void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue) {
/* Write 16-bit Index, then Write Reg */
ClrCs
- LCD_IO_WriteReg(LCD_Reg);
+ LCD_IO_WriteReg(LCD_Reg);
/* Write 16-bit Reg */
LCD_IO_WriteData(LCD_RegValue);
SetCs
@@ -265,7 +262,6 @@ void LCD_Clear(uint16_t Color) {
extern uint16_t ILI9488_ReadRAM();
-#if DISABLED(SPI_GRAPHICAL_TFT)
void init_tft() {
uint16_t i;
@@ -356,12 +352,10 @@ void init_tft() {
LCD_IO_WriteReg(0x0036);
//ILI9488_WriteData(0x0068);
- //if (gCfgItems.overturn_180 != 0xEE)
- //{
+ //if (gCfgItems.overturn_180 != 0xEE) {
LCD_IO_WriteData(0x0068);
//}
- //else
- //{
+ //else {
//ILI9488_WriteData(0x00A8);
//}
@@ -406,16 +400,22 @@ void init_tft() {
}
}
-#endif // if DISABLED(SPI_GRAPHICAL_TFT)
+#endif // !TFT_LVGL_UI_SPI
extern uint8_t bmp_public_buf[17 * 1024];
+
void tft_lvgl_init() {
+
//uint16_t test_id=0;
W25QXX.init(SPI_QUARTER_SPEED);
//test_id=W25QXX.W25QXX_ReadID();
+ gCfgItems_init();
+ ui_cfg_init();
+ disp_language_init();
+
//init tft first!
- #if ENABLED(SPI_GRAPHICAL_TFT)
+ #if ENABLED(TFT_LVGL_UI_SPI)
SPI_TFT.spi_init(SPI_FULL_SPEED);
SPI_TFT.LCD_init();
#else
@@ -423,20 +423,13 @@ void tft_lvgl_init() {
#endif
#if ENABLED(SDSUPPORT)
- UpdatePic();
- #if HAS_SPI_FLASH_FONT
- UpdateFont();
- #endif
+ UpdateAssets();
#endif
+ mks_test_get();
- gCfgItems_init();
- ui_cfg_init();
- disp_language_init();
//spi_flash_read_test();
- #if ENABLED(TOUCH_BUTTONS)
- touch.init();
- #endif
+ TERN_(TOUCH_BUTTONS, touch.init());
lv_init();
@@ -465,33 +458,32 @@ void tft_lvgl_init() {
filament_pin_setup();
#if ENABLED(POWER_LOSS_RECOVERY)
- if (recovery.valid()) {
- if (gCfgItems.from_flash_pic == 1)
- flash_preview_begin = 1;
- else
- default_preview_flg = 1;
+ if (recovery.valid()) {
+ if (gCfgItems.from_flash_pic == 1)
+ flash_preview_begin = 1;
+ else
+ default_preview_flg = 1;
- uiCfg.print_state = REPRINTING;
+ uiCfg.print_state = REPRINTING;
- memset(public_buf_m, 0, sizeof(public_buf_m));
- strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m));
- card.printLongPath(public_buf_m);
+ ZERO(public_buf_m);
+ strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m));
+ card.printLongPath(public_buf_m);
- strncpy(list_file.long_name[sel_id], card.longFilename, sizeof(list_file.long_name[sel_id]));
+ strncpy(list_file.long_name[sel_id], card.longFilename, sizeof(list_file.long_name[sel_id]));
- lv_draw_printing();
- }
- else
+ lv_draw_printing();
+ }
+ else
#endif
- lv_draw_ready_print();
+ lv_draw_ready_print();
- #if ENABLED(MKS_TEST)
- Test_GPIO();
- #endif
+ if (mks_test_flag == 0x1E)
+ mks_gpio_test();
}
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
- #if ENABLED(SPI_GRAPHICAL_TFT)
+ #if ENABLED(TFT_LVGL_UI_SPI)
uint16_t i, width, height;
uint16_t clr_temp;
uint8_t tbuf[480 * 2];
@@ -525,7 +517,9 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/
W25QXX.init(SPI_QUARTER_SPEED);
- #else
+
+ #else // !TFT_LVGL_UI_SPI
+
#if 1
uint16_t i, width, height;
uint16_t clr_temp;
@@ -543,7 +537,8 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/
#endif
- #endif // SPI_GRAPHICAL_TFT
+
+ #endif // !TFT_LVGL_UI_SPI
}
#define TICK_CYCLE 1
@@ -554,7 +549,7 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
return TICK_CYCLE * (lastTick <= curTick ? (curTick - lastTick) : (0xFFFFFFFF - lastTick + curTick));
}
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
#ifndef USE_XPT2046
#define USE_XPT2046 1
@@ -564,12 +559,12 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
#endif
#if USE_XPT2046
- #define XPT2046_HOR_RES 480
- #define XPT2046_VER_RES 320
- #define XPT2046_X_MIN 201
- #define XPT2046_Y_MIN 164
- #define XPT2046_X_MAX 3919
- #define XPT2046_Y_MAX 3776
+ #define XPT2046_HOR_RES 480
+ #define XPT2046_VER_RES 320
+ #define XPT2046_X_MIN 201
+ #define XPT2046_Y_MIN 164
+ #define XPT2046_X_MAX 3919
+ #define XPT2046_Y_MAX 3776
#define XPT2046_AVG 4
#define XPT2046_INV 1
#endif
@@ -579,34 +574,34 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
#ifndef USE_XPT2046
#define USE_XPT2046 1
#ifndef XPT2046_XY_SWAP
- #define XPT2046_XY_SWAP 1
+ #define XPT2046_XY_SWAP 1
#endif
#ifndef XPT2046_X_INV
- #define XPT2046_X_INV 0
+ #define XPT2046_X_INV 0
#endif
#ifndef XPT2046_Y_INV
- #define XPT2046_Y_INV 1
+ #define XPT2046_Y_INV 1
#endif
#endif
#if USE_XPT2046
#ifndef XPT2046_HOR_RES
- #define XPT2046_HOR_RES 480
+ #define XPT2046_HOR_RES 480
#endif
#ifndef XPT2046_VER_RES
- #define XPT2046_VER_RES 320
+ #define XPT2046_VER_RES 320
#endif
#ifndef XPT2046_X_MIN
- #define XPT2046_X_MIN 201
+ #define XPT2046_X_MIN 201
#endif
#ifndef XPT2046_Y_MIN
- #define XPT2046_Y_MIN 164
+ #define XPT2046_Y_MIN 164
#endif
#ifndef XPT2046_X_MAX
- #define XPT2046_X_MAX 3919
+ #define XPT2046_X_MAX 3919
#endif
#ifndef XPT2046_Y_MAX
- #define XPT2046_Y_MAX 3776
+ #define XPT2046_Y_MAX 3776
#endif
#ifndef XPT2046_AVG
#define XPT2046_AVG 4
@@ -637,39 +632,25 @@ static void xpt2046_corr(uint16_t *x, uint16_t *y) {
#endif
}
-#define times 4
+#define times 4
#define CHX 0x90
#define CHY 0xD0
int SPI2_ReadWrite2Bytes(void) {
- volatile uint16_t ans = 0;
- uint16_t temp = 0;
- #if ENABLED(SPI_GRAPHICAL_TFT)
- temp = SPI_TFT.spi_read_write_byte(0xFF);
- ans = temp << 8;
- temp = SPI_TFT.spi_read_write_byte(0xFF);
- ans |= temp;
- ans >>= 3;
- #else
- temp = W25QXX.spi_flash_read_write_byte(0xFF);
- ans = temp << 8;
- temp = W25QXX.spi_flash_read_write_byte(0xFF);
- ans |= temp;
- ans >>= 3;
- #endif
- return ans & 0x0FFF;
+ #define SPI_READ_WRITE_BYTE(B) TERN(TFT_LVGL_UI_SPI, SPI_TFT.spi_read_write_byte, W25QXX.spi_flash_read_write_byte)(B)
+ const uint16_t t1 = SPI_READ_WRITE_BYTE(0xFF),
+ t2 = SPI_READ_WRITE_BYTE(0xFF);
+ return (((t1 << 8) | t2) >> 3) & 0x0FFF;
}
uint16_t x_addata[times], y_addata[times];
void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
uint16_t i, j, k;
- #if ENABLED(SPI_GRAPHICAL_TFT)
- SPI_TFT.spi_init(SPI_QUARTER_SPEED);
- #endif
+ TERN(TFT_LVGL_UI_SPI, SPI_TFT.spi_init, W25QXX.init)(SPI_SPEED_6);
for (i = 0; i < times; i++) {
- #if ENABLED(SPI_GRAPHICAL_TFT)
+ #if ENABLED(TFT_LVGL_UI_SPI)
OUT_WRITE(TOUCH_CS_PIN, LOW);
SPI_TFT.spi_read_write_byte(CHX);
y_addata[i] = SPI2_ReadWrite2Bytes();
@@ -692,6 +673,7 @@ void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
#endif
}
+ TERN(TFT_LVGL_UI_SPI,,W25QXX.init(SPI_QUARTER_SPEED));
for (i = 0; i < times; i++)
for (j = i + 1; j < times; j++)
@@ -726,8 +708,10 @@ void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
#define ADC_VALID_OFFSET 10
uint8_t TOUCH_PressValid(uint16_t _usX, uint16_t _usY) {
- if ( (_usX <= ADC_VALID_OFFSET) || (_usY <= ADC_VALID_OFFSET)
- || (_usX >= 4095 - ADC_VALID_OFFSET) || (_usY >= 4095 - ADC_VALID_OFFSET)
+ if ( (_usX <= ADC_VALID_OFFSET)
+ || (_usY <= ADC_VALID_OFFSET)
+ || (_usX >= 4095 - ADC_VALID_OFFSET)
+ || (_usY >= 4095 - ADC_VALID_OFFSET)
) return 0;
return 1;
}
@@ -754,7 +738,7 @@ bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) {
data->state = LV_INDEV_STATE_PR;
- /*Set the coordinates (if released use the last pressed coordinates)*/
+ /* Set the coordinates (if released use the last pressed coordinates) */
// SERIAL_ECHOLNPAIR("antes X: ", last_x, ", y: ", last_y);
xpt2046_corr((uint16_t *)&last_x, (uint16_t *)&last_y);
@@ -774,4 +758,4 @@ bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) {
return false; /*Return `false` because we are not buffering and no more data to read*/
}
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
index 81ff4b1b037d..1b33d6e6bfb3 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
@@ -30,7 +30,7 @@
//extern "C" {
//#endif
-#include "lvgl.h"
+#include
void tft_lvgl_init();
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
index cdee6880e210..1ea47cef2dd4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
@@ -21,53 +21,689 @@
*/
#include "../../../../inc/MarlinConfigPre.h"
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#include "../../../../MarlinCore.h"
#include "draw_ui.h"
#include "tft_multi_language.h"
-//********************************************//
-
-//*********************************************//
-
-common_menu_def common_menu;
-main_menu_def main_menu;
-preheat_menu_def preheat_menu;
-move_menu_def move_menu;
-home_menu_def home_menu;
-file_menu_def file_menu;
-extrude_menu_def extrude_menu;
-leveling_menu_def leveling_menu;
-set_menu_def set_menu;
-more_menu_def more_menu;
-wifi_menu_def wifi_menu;
-cloud_menu_def cloud_menu;
-about_menu_def about_menu;
-fan_menu_def fan_menu;
-filament_menu_def filament_menu;
-printing_menu_def printing_menu;
-operation_menu_def operation_menu;
-pause_menu_def pause_menu;
-speed_menu_def speed_menu;
-printing_more_menu_def printing_more_menu;
-dialog_menu_def dialog_menu;
-language_menu_def language_menu;
-print_file_dialog_menu_def print_file_dialog_menu;
-filesys_menu_def filesys_menu;
-zoffset_menu_def zoffset_menu;
-tool_menu_def tool_menu;
-MachinePara_menu_def MachinePara_menu;
-MachineSettings_menu_def MachineSettings_menu;
+// ********************************************* //
+
+common_menu_def common_menu;
+main_menu_def main_menu;
+preheat_menu_def preheat_menu;
+move_menu_def move_menu;
+home_menu_def home_menu;
+file_menu_def file_menu;
+extrude_menu_def extrude_menu;
+leveling_menu_def leveling_menu;
+set_menu_def set_menu;
+more_menu_def more_menu;
+wifi_menu_def wifi_menu;
+cloud_menu_def cloud_menu;
+about_menu_def about_menu;
+fan_menu_def fan_menu;
+filament_menu_def filament_menu;
+printing_menu_def printing_menu;
+operation_menu_def operation_menu;
+pause_menu_def pause_menu;
+speed_menu_def speed_menu;
+printing_more_menu_def printing_more_menu;
+dialog_menu_def dialog_menu;
+language_menu_def language_menu;
+print_file_dialog_menu_def print_file_dialog_menu;
+filesys_menu_def filesys_menu;
+zoffset_menu_def zoffset_menu;
+tool_menu_def tool_menu;
+MachinePara_menu_def MachinePara_menu;
+MachineSettings_menu_def MachineSettings_menu;
TemperatureSettings_menu_def TemperatureSettings_menu;
-pause_msg_def pause_msg_menu;
+pause_msg_def pause_msg_menu;
+eeprom_def eeprom_menu;
+
+machine_common_def machine_menu;
+void machine_setting_disp() {
+ if (gCfgItems.language == LANG_SIMPLE_CHINESE) {
+ MachinePara_menu.title = MACHINE_PARA_TITLE_CN;
+ MachinePara_menu.MachineSetting = MACHINE_TYPE_CNOFIG_CN;
+ MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_CN;
+ MachinePara_menu.MotorSetting = MOTOR_CONFIG_CN;
+ MachinePara_menu.AdvanceSetting = ADVANCE_CONFIG_CN;
+
+ machine_menu.default_value = DEFAULT_CN;
+ machine_menu.next = NEXT_CN;
+ machine_menu.previous = PREVIOUS_CN;
+
+ machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_CN;
+ machine_menu.MachineType = MACHINE_TYPE_CN;
+ machine_menu.Stroke = MACHINE_STROKE_CN;
+ machine_menu.HomeDir = MACHINE_HOMEDIR_CN;
+ machine_menu.EndStopType = MACHINE_ENDSTOP_TYPE_CN;
+ machine_menu.FilamentConf = MACHINE_FILAMENT_CONFIG_CN;
+ machine_menu.LevelingConf = MACHINE_LEVELING_CONFIG_CN;
+
+ machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_CN;
+ machine_menu.xyz = MACHINE_TYPE_XYZ_CN;
+ machine_menu.delta = MACHINE_TYPE_DELTA_CN;
+ machine_menu.corexy = MACHINE_TYPE_COREXY_CN;
+
+ machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_CN;
+ machine_menu.xStroke = X_MAX_LENGTH_CN;
+ machine_menu.yStroke = Y_MAX_LENGTH_CN;
+ machine_menu.zStroke = Z_MAX_LENGTH_CN;
+
+ machine_menu.xmin = X_MIN_LENGTH_CN;
+ machine_menu.ymin = Y_MIN_LENGTH_CN;
+ machine_menu.zmin = Z_MIN_LENGTH_CN;
+
+ machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_CN;
+ machine_menu.xHomeDir = HOME_DIR_X_CN;
+ machine_menu.yHomeDir = HOME_DIR_Y_CN;
+ machine_menu.zHomeDir = HOME_DIR_Z_CN;
+ machine_menu.min = HOME_MIN_CN;
+ machine_menu.max = HOME_MAX_CN;
+
+ machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_CN;
+ machine_menu.xEndstop_min = MIN_ENDSTOP_X_CN;
+ machine_menu.yEndstop_min = MIN_ENDSTOP_Y_CN;
+ machine_menu.zEndstop_min = MIN_ENDSTOP_Z_CN;
+ machine_menu.xEndstop_max = MAX_ENDSTOP_X_CN;
+ machine_menu.yEndstop_max = MAX_ENDSTOP_Y_CN;
+ machine_menu.zEndstop_max = MAX_ENDSTOP_Z_CN;
+ machine_menu.FilamentEndstop = ENDSTOP_FIL_CN;
+ machine_menu.LevelingEndstop = ENDSTOP_LEVEL_CN;
+ machine_menu.opened = ENDSTOP_OPENED_CN;
+ machine_menu.closed = ENDSTOP_CLOSED_CN;
+
+ machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_CN;
+ machine_menu.InTemperature = FILAMENT_IN_TEMPERATURE_CN;
+ machine_menu.InLength = FILAMENT_IN_LENGTH_CN;
+ machine_menu.InSpeed = FILAMENT_IN_SPEED_CN;
+ machine_menu.OutTemperature = FILAMENT_OUT_TEMPERATURE_CN;
+ machine_menu.OutLength = FILAMENT_OUT_LENGTH_CN;
+ machine_menu.OutSpeed = FILAMENT_OUT_SPEED_CN;
+
+ machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_CN;
+ machine_menu.LevelingParaConf = LEVELING_PARA_CONF_CN;
+ machine_menu.DeltaLevelConf = LEVELING_DELTA_CN;
+ machine_menu.XYZLevelconf = LEVELING_XYZ_CN;
+
+ machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_CN;
+ machine_menu.AutoLevelEnable = AUTO_LEVELING_ENABLE_CN;
+ machine_menu.BLtouchEnable = BLTOUCH_LEVELING_ENABLE_CN;
+ machine_menu.ProbePort = PROBE_PORT_CN;
+ machine_menu.ProbeXoffset = PROBE_X_OFFSET_CN;
+ machine_menu.ProbeYoffset = PROBE_Y_OFFSET_CN;
+ machine_menu.ProbeZoffset = PROBE_Z_OFFSET_CN;
+ machine_menu.ProbeXYspeed = PROBE_XY_SPEED_CN;
+ machine_menu.ProbeZspeed = PROBE_Z_SPEED_CN;
+ machine_menu.enable = ENABLE_CN;
+ machine_menu.disable = DISABLE_CN;
+ machine_menu.z_min = Z_MIN_CN;
+ machine_menu.z_max = Z_MAX_CN;
+
+ machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_CN;
+ machine_menu.MachineRadius = DELTA_MACHINE_RADIUS_CN;
+ machine_menu.DiagonalRod = DELTA_DIAGONAL_ROD_CN;
+ machine_menu.PrintableRadius = DELTA_PRINT_RADIUS_CN;
+ machine_menu.DeltaHeight = DELTA_HEIGHT_CN;
+ machine_menu.SmoothRodOffset = SMOOTH_ROD_OFFSET_CN;
+ machine_menu.EffectorOffset = EFFECTOR_OFFSET_CN;
+ machine_menu.CalibrationRadius = CALIBRATION_RADIUS_CN;
+
+ machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_CN;
+ // machine_menu.ProbeMaxLeft=PROBE_REACH_MAX_LEFT_CN;
+ // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_CN;
+ // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_CN;
+ // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_CN;
+
+ machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_CN;
+ machine_menu.NozzleConf = NOZZLE_CONF_CN;
+ machine_menu.HotBedConf = HOTBED_CONF_CN;
+ machine_menu.PreheatTemperConf = PREHEAT_TEMPER_CN;
+
+ machine_menu.NozzleConfTitle = NOZZLE_CONF_TITLE_CN;
+ machine_menu.NozzleCnt = NOZZLECNT_CN;
+ machine_menu.NozzleType = NOZZLE_TYPE_CN;
+ machine_menu.NozzleAdjustType = NOZZLE_ADJUST_TYPE_CN;
+ machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_CN;
+ machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_CN;
+ machine_menu.Extrude_Min_Temper = EXTRUD_MIN_TEMPER_CN;
+
+ // machine_menu.HotbedEnable=HOTBED_ENABLE_CN;
+ machine_menu.HotbedConfTitle = HOTBED_CONF_TITLE_CN;
+ machine_menu.HotbedAjustType = HOTBED_ADJUST_CN;
+ machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_CN;
+ machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_CN;
+
+ machine_menu.MotorConfTitle = MOTOR_CONF_TITLE_CN;
+ machine_menu.MaxFeedRateConf = MAXFEEDRATE_CONF_CN;
+ machine_menu.AccelerationConf = ACCELERATION_CONF_CN;
+ machine_menu.JerkConf = JERKCONF_CN;
+ machine_menu.StepsConf = STEPSCONF_CN;
+ machine_menu.TMCcurrentConf = TMC_CURRENT_CN;
+ machine_menu.TMCStepModeConf = TMC_STEP_MODE_CN;
+ machine_menu.MotorDirConf = MOTORDIRCONF_CN;
+ machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_CN;
+ machine_menu.PausePosition = PAUSE_POSITION_CN;
+
+ machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_CN;
+ machine_menu.XMaxFeedRate = X_MAXFEEDRATE_CN;
+ machine_menu.YMaxFeedRate = Y_MAXFEEDRATE_CN;
+ machine_menu.ZMaxFeedRate = Z_MAXFEEDRATE_CN;
+ machine_menu.E0MaxFeedRate = E0_MAXFEEDRATE_CN;
+ machine_menu.E1MaxFeedRate = E1_MAXFEEDRATE_CN;
+
+ machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_CN;
+ machine_menu.PrintAcceleration = PRINT_ACCELERATION_CN;
+ machine_menu.RetractAcceleration = RETRACT_ACCELERATION_CN;
+ machine_menu.TravelAcceleration = TRAVEL_ACCELERATION_CN;
+ machine_menu.X_Acceleration = X_ACCELERATION_CN;
+ machine_menu.Y_Acceleration = Y_ACCELERATION_CN;
+ machine_menu.Z_Acceleration = Z_ACCELERATION_CN;
+ machine_menu.E0_Acceleration = E0_ACCELERATION_CN;
+ machine_menu.E1_Acceleration = E1_ACCELERATION_CN;
+
+ machine_menu.JerkConfTitle = JERK_CONF_TITLE_CN;
+ machine_menu.X_Jerk = X_JERK_CN;
+ machine_menu.Y_Jerk = Y_JERK_CN;
+ machine_menu.Z_Jerk = Z_JERK_CN;
+ machine_menu.E_Jerk = E_JERK_CN;
+
+ machine_menu.StepsConfTitle = STEPS_CONF_TITLE_CN;
+ machine_menu.X_Steps = X_STEPS_CN;
+ machine_menu.Y_Steps = Y_STEPS_CN;
+ machine_menu.Z_Steps = Z_STEPS_CN;
+ machine_menu.E0_Steps = E0_STEPS_CN;
+ machine_menu.E1_Steps = E1_STEPS_CN;
+
+ machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_CN;
+ machine_menu.X_Current = X_TMC_CURRENT_CN;
+ machine_menu.Y_Current = Y_TMC_CURRENT_CN;
+ machine_menu.Z_Current = Z_TMC_CURRENT_CN;
+ machine_menu.E0_Current = E0_TMC_CURRENT_CN;
+ machine_menu.E1_Current = E1_TMC_CURRENT_CN;
+
+ machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_CN;
+ machine_menu.X_StepMode = X_TMC_MODE_CN;
+ machine_menu.Y_StepMode = Y_TMC_MODE_CN;
+ machine_menu.Z_StepMode = Z_TMC_MODE_CN;
+ machine_menu.E0_StepMode = E0_TMC_MODE_CN;
+ machine_menu.E1_StepMode = E1_TMC_MODE_CN;
+
+ machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_CN;
+ machine_menu.X_MotorDir = X_MOTORDIR_CN;
+ machine_menu.Y_MotorDir = Y_MOTORDIR_CN;
+ machine_menu.Z_MotorDir = Z_MOTORDIR_CN;
+ machine_menu.E0_MotorDir = E0_MOTORDIR_CN;
+ machine_menu.E1_MotorDir = E1_MOTORDIR_CN;
+ machine_menu.Invert_0 = INVERT_P_CN;
+ machine_menu.Invert_1 = INVERT_N_CN;
+
+ machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_CN;
+ machine_menu.XY_HomeFeedRate = X_HOMESPEED_CN;
+ // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_CN;
+ machine_menu.Z_HomeFeedRate = Z_HOMESPEED_CN;
+
+ machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_CN;
+ machine_menu.PwrOffDection = PWROFF_DECTION_CN;
+ machine_menu.PwrOffAfterPrint = PWROFF_AFTER_PRINT_CN;
+ machine_menu.HaveUps = HAVE_UPS_CN;
+ machine_menu.Z2andZ2Endstop = Z2_AND_Z2ENDSTOP_CONF_CN;
+ machine_menu.EnablePinsInvert = ENABLE_PINS_CONF_CN;
+
+ machine_menu.Z2ConfTitle = Z2_AND_Z2ENDSTOP_CONF_TITLE_CN;
+ machine_menu.Z2Enable = Z2_ENABLE_CN;
+ machine_menu.Z2EndstopEnable = Z2_ENDSTOP_CN;
+ machine_menu.Z2Port = Z2_PORT_CN;
+
+ machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_CN;
+ machine_menu.XInvert = X_ENABLE_PINS_INVERT_CN;
+ machine_menu.YInvert = Y_ENABLE_PINS_INVERT_CN;
+ machine_menu.ZInvert = Z_ENABLE_PINS_INVERT_CN;
+ machine_menu.EInvert = E_ENABLE_PINS_INVERT_CN;
+
+ machine_menu.key_back = KEY_BACK_CN;
+ machine_menu.key_reset = KEY_REST_CN;
+ machine_menu.key_confirm = KEY_CONFIRM_CN;
+
+ machine_menu.PausePosText = PAUSE_POSITION_CN;
+ machine_menu.xPos = PAUSE_POSITION_X_CN;
+ machine_menu.yPos = PAUSE_POSITION_Y_CN;
+ machine_menu.zPos = PAUSE_POSITION_Z_CN;
+ }
+ else if (gCfgItems.language == LANG_COMPLEX_CHINESE) {
+ MachinePara_menu.title = MACHINE_PARA_TITLE_T_CN;
+ MachinePara_menu.MachineSetting = MACHINE_TYPE_CNOFIG_T_CN;
+ MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_T_CN;
+ MachinePara_menu.MotorSetting = MOTOR_CONFIG_T_CN;
+ MachinePara_menu.AdvanceSetting = ADVANCE_CONFIG_T_CN;
+
+ machine_menu.default_value = DEFAULT_T_CN;
+ machine_menu.next = NEXT_T_CN;
+ machine_menu.previous = PREVIOUS_T_CN;
+
+ machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_T_CN;
+ machine_menu.MachineType = MACHINE_TYPE_T_CN;
+ machine_menu.Stroke = MACHINE_STROKE_T_CN;
+ machine_menu.HomeDir = MACHINE_HOMEDIR_T_CN;
+ machine_menu.EndStopType = MACHINE_ENDSTOP_TYPE_T_CN;
+ machine_menu.FilamentConf = MACHINE_FILAMENT_CONFIG_T_CN;
+ machine_menu.LevelingConf = MACHINE_LEVELING_CONFIG_T_CN;
+
+ machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_T_CN;
+ machine_menu.xyz = MACHINE_TYPE_XYZ_T_CN;
+ machine_menu.delta = MACHINE_TYPE_DELTA_T_CN;
+ machine_menu.corexy = MACHINE_TYPE_COREXY_T_CN;
+
+ machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_T_CN;
+ machine_menu.xStroke = X_MAX_LENGTH_T_CN;
+ machine_menu.yStroke = Y_MAX_LENGTH_T_CN;
+ machine_menu.zStroke = Z_MAX_LENGTH_T_CN;
+
+ machine_menu.xmin = X_MIN_LENGTH_T_CN;
+ machine_menu.ymin = Y_MIN_LENGTH_T_CN;
+ machine_menu.zmin = Z_MIN_LENGTH_T_CN;
+
+ machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_T_CN;
+ machine_menu.xHomeDir = HOME_DIR_X_T_CN;
+ machine_menu.yHomeDir = HOME_DIR_Y_T_CN;
+ machine_menu.zHomeDir = HOME_DIR_Z_T_CN;
+ machine_menu.min = HOME_MIN_T_CN;
+ machine_menu.max = HOME_MAX_T_CN;
+
+ machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_T_CN;
+ machine_menu.xEndstop_min = MIN_ENDSTOP_X_T_CN;
+ machine_menu.yEndstop_min = MIN_ENDSTOP_Y_T_CN;
+ machine_menu.zEndstop_min = MIN_ENDSTOP_Z_T_CN;
+ machine_menu.xEndstop_max = MAX_ENDSTOP_X_T_CN;
+ machine_menu.yEndstop_max = MAX_ENDSTOP_Y_T_CN;
+ machine_menu.zEndstop_max = MAX_ENDSTOP_Z_T_CN;
+ machine_menu.FilamentEndstop = ENDSTOP_FIL_T_CN;
+ machine_menu.LevelingEndstop = ENDSTOP_LEVEL_T_CN;
+ machine_menu.opened = ENDSTOP_OPENED_T_CN;
+ machine_menu.closed = ENDSTOP_CLOSED_T_CN;
+
+ machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_T_CN;
+ machine_menu.InTemperature = FILAMENT_IN_TEMPERATURE_T_CN;
+ machine_menu.InLength = FILAMENT_IN_LENGTH_T_CN;
+ machine_menu.InSpeed = FILAMENT_IN_SPEED_T_CN;
+ machine_menu.OutTemperature = FILAMENT_OUT_TEMPERATURE_T_CN;
+ machine_menu.OutLength = FILAMENT_OUT_LENGTH_T_CN;
+ machine_menu.OutSpeed = FILAMENT_OUT_SPEED_T_CN;
+
+ machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_T_CN;
+ machine_menu.LevelingParaConf = LEVELING_PARA_CONF_T_CN;
+ machine_menu.DeltaLevelConf = LEVELING_DELTA_T_CN;
+ machine_menu.XYZLevelconf = LEVELING_XYZ_T_CN;
+
+ machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_T_CN;
+ machine_menu.AutoLevelEnable = AUTO_LEVELING_ENABLE_T_CN;
+ machine_menu.BLtouchEnable = BLTOUCH_LEVELING_ENABLE_T_CN;
+ machine_menu.ProbePort = PROBE_PORT_T_CN;
+ machine_menu.ProbeXoffset = PROBE_X_OFFSET_T_CN;
+ machine_menu.ProbeYoffset = PROBE_Y_OFFSET_T_CN;
+ machine_menu.ProbeZoffset = PROBE_Z_OFFSET_T_CN;
+ machine_menu.ProbeXYspeed = PROBE_XY_SPEED_T_CN;
+ machine_menu.ProbeZspeed = PROBE_Z_SPEED_T_CN;
+ machine_menu.enable = ENABLE_T_CN;
+ machine_menu.disable = DISABLE_T_CN;
+ machine_menu.z_min = Z_MIN_T_CN;
+ machine_menu.z_max = Z_MAX_T_CN;
+
+ machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_T_CN;
+ machine_menu.MachineRadius = DELTA_MACHINE_RADIUS_T_CN;
+ machine_menu.DiagonalRod = DELTA_DIAGONAL_ROD_T_CN;
+ machine_menu.PrintableRadius = DELTA_PRINT_RADIUS_T_CN;
+ machine_menu.DeltaHeight = DELTA_HEIGHT_T_CN;
+ machine_menu.SmoothRodOffset = SMOOTH_ROD_OFFSET_T_CN;
+ machine_menu.EffectorOffset = EFFECTOR_OFFSET_T_CN;
+ machine_menu.CalibrationRadius = CALIBRATION_RADIUS_T_CN;
+
+ machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_T_CN;
+ // machine_menu.ProbeMaxLeft=PROBE_REACH_MAX_LEFT_T_CN;
+ // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_T_CN;
+ // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_T_CN;
+ // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_T_CN;
+
+ machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_T_CN;
+ machine_menu.NozzleConf = NOZZLE_CONF_T_CN;
+ machine_menu.HotBedConf = HOTBED_CONF_T_CN;
+ machine_menu.PreheatTemperConf = PREHEAT_TEMPER_T_CN;
+
+ machine_menu.NozzleConfTitle = NOZZLE_CONF_TITLE_T_CN;
+ machine_menu.NozzleCnt = NOZZLECNT_T_CN;
+ machine_menu.NozzleType = NOZZLE_TYPE_T_CN;
+ machine_menu.NozzleAdjustType = NOZZLE_ADJUST_TYPE_T_CN;
+ machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_T_CN;
+ machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_T_CN;
+ machine_menu.Extrude_Min_Temper = EXTRUD_MIN_TEMPER_T_CN;
+
+ // machine_menu.HotbedEnable=HOTBED_ENABLE_T_CN;
+ machine_menu.HotbedConfTitle = HOTBED_CONF_TITLE_T_CN;
+ machine_menu.HotbedAjustType = HOTBED_ADJUST_T_CN;
+ machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_T_CN;
+ machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_T_CN;
+
+ machine_menu.MotorConfTitle = MOTOR_CONF_TITLE_T_CN;
+ machine_menu.MaxFeedRateConf = MAXFEEDRATE_CONF_T_CN;
+ machine_menu.AccelerationConf = ACCELERATION_CONF_T_CN;
+ machine_menu.JerkConf = JERKCONF_T_CN;
+ machine_menu.StepsConf = STEPSCONF_T_CN;
+ machine_menu.TMCcurrentConf = TMC_CURRENT_T_CN;
+ machine_menu.TMCStepModeConf = TMC_STEP_MODE_T_CN;
+ machine_menu.MotorDirConf = MOTORDIRCONF_T_CN;
+ machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_T_CN;
+ machine_menu.PausePosition = PAUSE_POSITION_T_CN;
+
+ machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_T_CN;
+ machine_menu.XMaxFeedRate = X_MAXFEEDRATE_T_CN;
+ machine_menu.YMaxFeedRate = Y_MAXFEEDRATE_T_CN;
+ machine_menu.ZMaxFeedRate = Z_MAXFEEDRATE_T_CN;
+ machine_menu.E0MaxFeedRate = E0_MAXFEEDRATE_T_CN;
+ machine_menu.E1MaxFeedRate = E1_MAXFEEDRATE_T_CN;
+
+ machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_T_CN;
+ machine_menu.PrintAcceleration = PRINT_ACCELERATION_T_CN;
+ machine_menu.RetractAcceleration = RETRACT_ACCELERATION_T_CN;
+ machine_menu.TravelAcceleration = TRAVEL_ACCELERATION_T_CN;
+ machine_menu.X_Acceleration = X_ACCELERATION_T_CN;
+ machine_menu.Y_Acceleration = Y_ACCELERATION_T_CN;
+ machine_menu.Z_Acceleration = Z_ACCELERATION_T_CN;
+ machine_menu.E0_Acceleration = E0_ACCELERATION_T_CN;
+ machine_menu.E1_Acceleration = E1_ACCELERATION_T_CN;
+
+ machine_menu.JerkConfTitle = JERK_CONF_TITLE_T_CN;
+ machine_menu.X_Jerk = X_JERK_T_CN;
+ machine_menu.Y_Jerk = Y_JERK_T_CN;
+ machine_menu.Z_Jerk = Z_JERK_T_CN;
+ machine_menu.E_Jerk = E_JERK_T_CN;
+
+ machine_menu.StepsConfTitle = STEPS_CONF_TITLE_T_CN;
+ machine_menu.X_Steps = X_STEPS_T_CN;
+ machine_menu.Y_Steps = Y_STEPS_T_CN;
+ machine_menu.Z_Steps = Z_STEPS_T_CN;
+ machine_menu.E0_Steps = E0_STEPS_T_CN;
+ machine_menu.E1_Steps = E1_STEPS_T_CN;
+
+ machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_T_CN;
+ machine_menu.X_Current = X_TMC_CURRENT_T_CN;
+ machine_menu.Y_Current = Y_TMC_CURRENT_T_CN;
+ machine_menu.Z_Current = Z_TMC_CURRENT_T_CN;
+ machine_menu.E0_Current = E0_TMC_CURRENT_T_CN;
+ machine_menu.E1_Current = E1_TMC_CURRENT_T_CN;
+
+ machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_T_CN;
+ machine_menu.X_StepMode = X_TMC_MODE_T_CN;
+ machine_menu.Y_StepMode = Y_TMC_MODE_T_CN;
+ machine_menu.Z_StepMode = Z_TMC_MODE_T_CN;
+ machine_menu.E0_StepMode = E0_TMC_MODE_T_CN;
+ machine_menu.E1_StepMode = E1_TMC_MODE_T_CN;
+
+ machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_T_CN;
+ machine_menu.X_MotorDir = X_MOTORDIR_T_CN;
+ machine_menu.Y_MotorDir = Y_MOTORDIR_T_CN;
+ machine_menu.Z_MotorDir = Z_MOTORDIR_T_CN;
+ machine_menu.E0_MotorDir = E0_MOTORDIR_T_CN;
+ machine_menu.E1_MotorDir = E1_MOTORDIR_T_CN;
+ machine_menu.Invert_0 = INVERT_P_T_CN;
+ machine_menu.Invert_1 = INVERT_N_T_CN;
+
+ machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_T_CN;
+ machine_menu.XY_HomeFeedRate = X_HOMESPEED_T_CN;
+ // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_T_CN;
+ machine_menu.Z_HomeFeedRate = Z_HOMESPEED_T_CN;
+
+ machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_T_CN;
+ machine_menu.PwrOffDection = PWROFF_DECTION_T_CN;
+ machine_menu.PwrOffAfterPrint = PWROFF_AFTER_PRINT_T_CN;
+ machine_menu.HaveUps = HAVE_UPS_T_CN;
+ machine_menu.Z2andZ2Endstop = Z2_AND_Z2ENDSTOP_CONF_T_CN;
+ machine_menu.EnablePinsInvert = ENABLE_PINS_CONF_T_CN;
+
+ machine_menu.Z2ConfTitle = Z2_AND_Z2ENDSTOP_CONF_TITLE_T_CN;
+ machine_menu.Z2Enable = Z2_ENABLE_T_CN;
+ machine_menu.Z2EndstopEnable = Z2_ENDSTOP_T_CN;
+ machine_menu.Z2Port = Z2_PORT_T_CN;
+
+ machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_T_CN;
+ machine_menu.XInvert = X_ENABLE_PINS_INVERT_T_CN;
+ machine_menu.YInvert = Y_ENABLE_PINS_INVERT_T_CN;
+ machine_menu.ZInvert = Z_ENABLE_PINS_INVERT_T_CN;
+ machine_menu.EInvert = E_ENABLE_PINS_INVERT_T_CN;
+
+ machine_menu.key_back = KEY_BACK_T_CN;
+ machine_menu.key_reset = KEY_REST_T_CN;
+ machine_menu.key_confirm = KEY_CONFIRM_T_CN;
+ // machine_menu.high_level = MOTOR_EN_HIGH_LEVEL_T_CN;
+ // machine_menu.low_level = MOTOR_EN_LOW_LEVEL_T_CN;
+
+ machine_menu.PausePosText = PAUSE_POSITION_T_CN;
+ machine_menu.xPos = PAUSE_POSITION_X_T_CN;
+ machine_menu.yPos = PAUSE_POSITION_Y_T_CN;
+ machine_menu.zPos = PAUSE_POSITION_Z_T_CN;
+
+ }
+ else {
+ MachinePara_menu.title = MACHINE_PARA_TITLE_EN;
+ MachinePara_menu.MachineSetting = MACHINE_TYPE_CNOFIG_EN;
+ MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_EN;
+ MachinePara_menu.MotorSetting = MOTOR_CONFIG_EN;
+ MachinePara_menu.AdvanceSetting = ADVANCE_CONFIG_EN;
+
+ machine_menu.default_value = DEFAULT_EN;
+ machine_menu.next = NEXT_EN;
+ machine_menu.previous = PREVIOUS_EN;
+
+ machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_EN;
+ machine_menu.MachineType = MACHINE_TYPE_EN;
+ machine_menu.Stroke = MACHINE_STROKE_EN;
+ machine_menu.HomeDir = MACHINE_HOMEDIR_EN;
+ machine_menu.EndStopType = MACHINE_ENDSTOP_TYPE_EN;
+ machine_menu.FilamentConf = MACHINE_FILAMENT_CONFIG_EN;
+ machine_menu.LevelingConf = MACHINE_LEVELING_CONFIG_EN;
+
+ machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_EN;
+ machine_menu.xyz = MACHINE_TYPE_XYZ_EN;
+ machine_menu.delta = MACHINE_TYPE_DELTA_EN;
+ machine_menu.corexy = MACHINE_TYPE_COREXY_EN;
+
+ machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_EN;
+ machine_menu.xStroke = X_MAX_LENGTH_EN;
+ machine_menu.yStroke = Y_MAX_LENGTH_EN;
+ machine_menu.zStroke = Z_MAX_LENGTH_EN;
+
+ machine_menu.xmin = X_MIN_LENGTH_EN;
+ machine_menu.ymin = Y_MIN_LENGTH_EN;
+ machine_menu.zmin = Z_MIN_LENGTH_EN;
+
+ machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_EN;
+ machine_menu.xHomeDir = HOME_DIR_X_EN;
+ machine_menu.yHomeDir = HOME_DIR_Y_EN;
+ machine_menu.zHomeDir = HOME_DIR_Z_EN;
+ machine_menu.min = HOME_MIN_EN;
+ machine_menu.max = HOME_MAX_EN;
+
+ machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_EN;
+ machine_menu.xEndstop_min = MIN_ENDSTOP_X_EN;
+ machine_menu.yEndstop_min = MIN_ENDSTOP_Y_EN;
+ machine_menu.zEndstop_min = MIN_ENDSTOP_Z_EN;
+ machine_menu.xEndstop_max = MAX_ENDSTOP_X_EN;
+ machine_menu.yEndstop_max = MAX_ENDSTOP_Y_EN;
+ machine_menu.zEndstop_max = MAX_ENDSTOP_Z_EN;
+ machine_menu.FilamentEndstop = ENDSTOP_FIL_EN;
+ machine_menu.LevelingEndstop = ENDSTOP_LEVEL_EN;
+ machine_menu.opened = ENDSTOP_OPENED_EN;
+ machine_menu.closed = ENDSTOP_CLOSED_EN;
+
+ machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_EN;
+ machine_menu.InTemperature = FILAMENT_IN_TEMPERATURE_EN;
+ machine_menu.InLength = FILAMENT_IN_LENGTH_EN;
+ machine_menu.InSpeed = FILAMENT_IN_SPEED_EN;
+ machine_menu.OutTemperature = FILAMENT_OUT_TEMPERATURE_EN;
+ machine_menu.OutLength = FILAMENT_OUT_LENGTH_EN;
+ machine_menu.OutSpeed = FILAMENT_OUT_SPEED_EN;
+
+ machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_EN;
+ machine_menu.LevelingParaConf = LEVELING_PARA_CONF_EN;
+ machine_menu.DeltaLevelConf = LEVELING_DELTA_EN;
+ machine_menu.XYZLevelconf = LEVELING_XYZ_EN;
+
+ machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_EN;
+ machine_menu.AutoLevelEnable = AUTO_LEVELING_ENABLE_EN;
+ machine_menu.BLtouchEnable = BLTOUCH_LEVELING_ENABLE_EN;
+ machine_menu.ProbePort = PROBE_PORT_EN;
+ machine_menu.ProbeXoffset = PROBE_X_OFFSET_EN;
+ machine_menu.ProbeYoffset = PROBE_Y_OFFSET_EN;
+ machine_menu.ProbeZoffset = PROBE_Z_OFFSET_EN;
+ machine_menu.ProbeXYspeed = PROBE_XY_SPEED_EN;
+ machine_menu.ProbeZspeed = PROBE_Z_SPEED_EN;
+ machine_menu.enable = ENABLE_EN;
+ machine_menu.disable = DISABLE_EN;
+ machine_menu.z_min = Z_MIN_EN;
+ machine_menu.z_max = Z_MAX_EN;
+
+ machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_EN;
+ machine_menu.MachineRadius = DELTA_MACHINE_RADIUS_EN;
+ machine_menu.DiagonalRod = DELTA_DIAGONAL_ROD_EN;
+ machine_menu.PrintableRadius = DELTA_PRINT_RADIUS_EN;
+ machine_menu.DeltaHeight = DELTA_HEIGHT_EN;
+ machine_menu.SmoothRodOffset = SMOOTH_ROD_OFFSET_EN;
+ machine_menu.EffectorOffset = EFFECTOR_OFFSET_EN;
+ machine_menu.CalibrationRadius = CALIBRATION_RADIUS_EN;
+
+ machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_EN;
+ // machine_menu.Level_positon=PROBE_REACH_MAX_LEFT_EN;
+ // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_EN;
+ // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_EN;
+ // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_EN;
+
+ machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_EN;
+ machine_menu.NozzleConf = NOZZLE_CONF_EN;
+ machine_menu.HotBedConf = HOTBED_CONF_EN;
+ machine_menu.PreheatTemperConf = PREHEAT_TEMPER_EN;
+
+ machine_menu.NozzleConfTitle = NOZZLE_CONF_TITLE_EN;
+ machine_menu.NozzleCnt = NOZZLECNT_EN;
+ machine_menu.NozzleType = NOZZLE_TYPE_EN;
+ machine_menu.NozzleAdjustType = NOZZLE_ADJUST_TYPE_EN;
+ machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_EN;
+ machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_EN;
+ machine_menu.Extrude_Min_Temper = EXTRUD_MIN_TEMPER_EN;
+
+ machine_menu.HotbedEnable = HOTBED_ENABLE_EN;
+ machine_menu.HotbedConfTitle = HOTBED_CONF_TITLE_EN;
+ machine_menu.HotbedAjustType = HOTBED_ADJUST_EN;
+ machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_EN;
+ machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_EN;
+
+ machine_menu.MotorConfTitle = MOTOR_CONF_TITLE_EN;
+ machine_menu.MaxFeedRateConf = MAXFEEDRATE_CONF_EN;
+ machine_menu.AccelerationConf = ACCELERATION_CONF_EN;
+ machine_menu.JerkConf = JERKCONF_EN;
+ machine_menu.StepsConf = STEPSCONF_EN;
+ machine_menu.TMCcurrentConf = TMC_CURRENT_EN;
+ machine_menu.TMCStepModeConf = TMC_STEP_MODE_EN;
+ machine_menu.MotorDirConf = MOTORDIRCONF_EN;
+ machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_EN;
+ machine_menu.PausePosition = PAUSE_POSITION_EN;
+
+ machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_EN;
+ machine_menu.XMaxFeedRate = X_MAXFEEDRATE_EN;
+ machine_menu.YMaxFeedRate = Y_MAXFEEDRATE_EN;
+ machine_menu.ZMaxFeedRate = Z_MAXFEEDRATE_EN;
+ machine_menu.E0MaxFeedRate = E0_MAXFEEDRATE_EN;
+ machine_menu.E1MaxFeedRate = E1_MAXFEEDRATE_EN;
+
+ machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_EN;
+ machine_menu.PrintAcceleration = PRINT_ACCELERATION_EN;
+ machine_menu.RetractAcceleration = RETRACT_ACCELERATION_EN;
+ machine_menu.TravelAcceleration = TRAVEL_ACCELERATION_EN;
+ machine_menu.X_Acceleration = X_ACCELERATION_EN;
+ machine_menu.Y_Acceleration = Y_ACCELERATION_EN;
+ machine_menu.Z_Acceleration = Z_ACCELERATION_EN;
+ machine_menu.E0_Acceleration = E0_ACCELERATION_EN;
+ machine_menu.E1_Acceleration = E1_ACCELERATION_EN;
+
+ machine_menu.JerkConfTitle = JERK_CONF_TITLE_EN;
+ machine_menu.X_Jerk = X_JERK_EN;
+ machine_menu.Y_Jerk = Y_JERK_EN;
+ machine_menu.Z_Jerk = Z_JERK_EN;
+ machine_menu.E_Jerk = E_JERK_EN;
+
+ machine_menu.StepsConfTitle = STEPS_CONF_TITLE_EN;
+ machine_menu.X_Steps = X_STEPS_EN;
+ machine_menu.Y_Steps = Y_STEPS_EN;
+ machine_menu.Z_Steps = Z_STEPS_EN;
+ machine_menu.E0_Steps = E0_STEPS_EN;
+ machine_menu.E1_Steps = E1_STEPS_EN;
+
+ machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_EN;
+ machine_menu.X_Current = X_TMC_CURRENT_EN;
+ machine_menu.Y_Current = Y_TMC_CURRENT_EN;
+ machine_menu.Z_Current = Z_TMC_CURRENT_EN;
+ machine_menu.E0_Current = E0_TMC_CURRENT_EN;
+ machine_menu.E1_Current = E1_TMC_CURRENT_EN;
+
+ machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_EN;
+ machine_menu.X_StepMode = X_TMC_MODE_EN;
+ machine_menu.Y_StepMode = Y_TMC_MODE_EN;
+ machine_menu.Z_StepMode = Z_TMC_MODE_EN;
+ machine_menu.E0_StepMode = E0_TMC_MODE_EN;
+ machine_menu.E1_StepMode = E1_TMC_MODE_EN;
+
+ machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_EN;
+ machine_menu.X_MotorDir = X_MOTORDIR_EN;
+ machine_menu.Y_MotorDir = Y_MOTORDIR_EN;
+ machine_menu.Z_MotorDir = Z_MOTORDIR_EN;
+ machine_menu.E0_MotorDir = E0_MOTORDIR_EN;
+ machine_menu.E1_MotorDir = E1_MOTORDIR_EN;
+ machine_menu.Invert_0 = INVERT_P_EN;
+ machine_menu.Invert_1 = INVERT_N_EN;
+
+ machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_EN;
+ machine_menu.XY_HomeFeedRate = X_HOMESPEED_EN;
+ // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_EN;
+ machine_menu.Z_HomeFeedRate = Z_HOMESPEED_EN;
+
+ machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_EN;
+ machine_menu.PwrOffDection = PWROFF_DECTION_EN;
+ machine_menu.PwrOffAfterPrint = PWROFF_AFTER_PRINT_EN;
+ machine_menu.HaveUps = HAVE_UPS_EN;
+ machine_menu.Z2andZ2Endstop = Z2_AND_Z2ENDSTOP_CONF_EN;
+ machine_menu.EnablePinsInvert = ENABLE_PINS_CONF_EN;
+
+ machine_menu.Z2ConfTitle = Z2_AND_Z2ENDSTOP_CONF_TITLE_EN;
+ machine_menu.Z2Enable = Z2_ENABLE_EN;
+ machine_menu.Z2EndstopEnable = Z2_ENDSTOP_EN;
+ machine_menu.Z2Port = Z2_PORT_EN;
+
+ machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_EN;
+ machine_menu.XInvert = X_ENABLE_PINS_INVERT_EN;
+ machine_menu.YInvert = Y_ENABLE_PINS_INVERT_EN;
+ machine_menu.ZInvert = Z_ENABLE_PINS_INVERT_EN;
+ machine_menu.EInvert = E_ENABLE_PINS_INVERT_EN;
+
+ machine_menu.key_back = KEY_BACK_EN;
+ machine_menu.key_reset = KEY_REST_EN;
+ machine_menu.key_confirm = KEY_CONFIRM_EN;
+ //
+ machine_menu.high_level = MOTOR_EN_HIGH_LEVEL_EN;
+ machine_menu.low_level = MOTOR_EN_LOW_LEVEL_EN;
+
+ machine_menu.PausePosText = PAUSE_POSITION_EN;
+ machine_menu.xPos = PAUSE_POSITION_X_EN;
+ machine_menu.yPos = PAUSE_POSITION_Y_EN;
+ machine_menu.zPos = PAUSE_POSITION_Z_EN;
+ }
+}
void disp_language_init() {
preheat_menu.value_state = TEXT_VALUE;
- preheat_menu.step_1c = TEXT_1C;
- preheat_menu.step_5c = TEXT_5C;
- preheat_menu.step_10c = TEXT_10C;
+ preheat_menu.step_1c = TEXT_1C;
+ preheat_menu.step_5c = TEXT_5C;
+ preheat_menu.step_10c = TEXT_10C;
move_menu.x_add = AXIS_X_ADD_TEXT;
move_menu.x_dec = AXIS_X_DEC_TEXT;
@@ -78,1826 +714,1901 @@ void disp_language_init() {
move_menu.step_001mm = TEXT_001MM;
move_menu.step_005mm = TEXT_005MM;
- move_menu.step_01mm = TEXT_01MM;
- move_menu.step_1mm = TEXT_1MM;
- move_menu.step_10mm = TEXT_10MM;
+ move_menu.step_01mm = TEXT_01MM;
+ move_menu.step_1mm = TEXT_1MM;
+ move_menu.step_10mm = TEXT_10MM;
- home_menu.home_x = HOME_X_TEXT;
- home_menu.home_y = HOME_Y_TEXT;
- home_menu.home_z = HOME_Z_TEXT;
+ home_menu.home_x = HOME_X_TEXT;
+ home_menu.home_y = HOME_Y_TEXT;
+ home_menu.home_z = HOME_Z_TEXT;
home_menu.home_all = HOME_ALL_TEXT;
- extrude_menu.temp_value = TEXT_VALUE_T;
+ extrude_menu.temp_value = TEXT_VALUE_T;
extrude_menu.count_value_mm = TEXT_VALUE_mm;
extrude_menu.count_value_cm = TEXT_VALUE_cm;
- extrude_menu.count_value_m = TEXT_VALUE_m;
- extrude_menu.step_1mm = EXTRUDE_1MM_TEXT;
- extrude_menu.step_5mm = EXTRUDE_5MM_TEXT;
- extrude_menu.step_10mm = EXTRUDE_10MM_TEXT;
+ extrude_menu.count_value_m = TEXT_VALUE_m;
+ extrude_menu.step_1mm = EXTRUDE_1MM_TEXT;
+ extrude_menu.step_5mm = EXTRUDE_5MM_TEXT;
+ extrude_menu.step_10mm = EXTRUDE_10MM_TEXT;
fan_menu.full = FAN_OPEN_TEXT;
fan_menu.half = FAN_HALF_TEXT;
- fan_menu.off = FAN_CLOSE_TEXT;
+ fan_menu.off = FAN_CLOSE_TEXT;
- speed_menu.step_1percent = STEP_1PERCENT;
- speed_menu.step_5percent = STEP_5PERCENT;
+ speed_menu.step_1percent = STEP_1PERCENT;
+ speed_menu.step_5percent = STEP_5PERCENT;
speed_menu.step_10percent = STEP_10PERCENT;
- language_menu.chinese_s = LANGUAGE_S_CN;
- language_menu.chinese_t = LANGUAGE_T_CN;
- language_menu.english = LANGUAGE_EN;
- language_menu.russian = LANGUAGE_RU;
- language_menu.spanish = LANGUAGE_SP;
- language_menu.german = LANGUAGE_GE;
- language_menu.japan = LANGUAGE_JP;
- language_menu.korean = LANGUAGE_KR;
+ language_menu.chinese_s = LANGUAGE_S_CN;
+ language_menu.chinese_t = LANGUAGE_T_CN;
+ language_menu.english = LANGUAGE_EN;
+ language_menu.russian = LANGUAGE_RU;
+ language_menu.spanish = LANGUAGE_SP;
+ language_menu.german = LANGUAGE_GE;
+ language_menu.japan = LANGUAGE_JP;
+ language_menu.korean = LANGUAGE_KR;
language_menu.portuguese = LANGUAGE_PR;
- language_menu.italy = LANGUAGE_IT;
- language_menu.brazil = LANGUAGE_BR;
- language_menu.french = LANGUAGE_FR;
+ language_menu.italy = LANGUAGE_IT;
+ language_menu.brazil = LANGUAGE_BR;
+ language_menu.french = LANGUAGE_FR;
- about_menu.type_name = ABOUT_TYPE_TEXT;
+ about_menu.type_name = ABOUT_TYPE_TEXT;
about_menu.firmware_v = ABOUT_VERSION_TEXT;
- //about_menu.wifi = ABOUT_WIFI_TEXT;
-
- wifi_menu.ip = WIFI_IP_TEXT;
- wifi_menu.wifi = WIFI_NAME_TEXT;
- wifi_menu.key = WIFI_KEY_TEXT;
- wifi_menu.state_ap = WIFI_STATE_AP_TEXT;
- wifi_menu.state_sta = WIFI_STATE_STA_TEXT;
- wifi_menu.connected = WIFI_CONNECTED_TEXT;
+ // about_menu.wifi = ABOUT_WIFI_TEXT;
+
+ wifi_menu.ip = WIFI_IP_TEXT;
+ wifi_menu.wifi = WIFI_NAME_TEXT;
+ wifi_menu.key = WIFI_KEY_TEXT;
+ wifi_menu.state_ap = WIFI_STATE_AP_TEXT;
+ wifi_menu.state_sta = WIFI_STATE_STA_TEXT;
+ wifi_menu.connected = WIFI_CONNECTED_TEXT;
wifi_menu.disconnected = WIFI_DISCONNECTED_TEXT;
- wifi_menu.exception = WIFI_EXCEPTION_TEXT;
+ wifi_menu.exception = WIFI_EXCEPTION_TEXT;
- printing_menu.temp1 = TEXT_VALUE;
- printing_menu.temp2 = TEXT_VALUE;
+ printing_menu.temp1 = TEXT_VALUE;
+ printing_menu.temp2 = TEXT_VALUE;
printing_menu.bed_temp = TEXT_VALUE;
filament_menu.stat_temp = TEXT_VALUE;
zoffset_menu.step001 = ZOFFSET_STEP001;
- zoffset_menu.step01 = ZOFFSET_STEP01;
- zoffset_menu.step1 = ZOFFSET_STEP1;
-
- //wifi-list
+ zoffset_menu.step01 = ZOFFSET_STEP01;
+ zoffset_menu.step1 = ZOFFSET_STEP1;
+
+ machine_menu.key_0 = KEYBOARD_KEY0_EN;
+ machine_menu.key_1 = KEYBOARD_KEY1_EN;
+ machine_menu.key_2 = KEYBOARD_KEY2_EN;
+ machine_menu.key_3 = KEYBOARD_KEY3_EN;
+ machine_menu.key_4 = KEYBOARD_KEY4_EN;
+ machine_menu.key_5 = KEYBOARD_KEY5_EN;
+ machine_menu.key_6 = KEYBOARD_KEY6_EN;
+ machine_menu.key_7 = KEYBOARD_KEY7_EN;
+ machine_menu.key_8 = KEYBOARD_KEY8_EN;
+ machine_menu.key_9 = KEYBOARD_KEY9_EN;
+ machine_menu.key_point = KEYBOARD_KEY_POINT_EN;
+ machine_menu.negative = KEYBOARD_KEY_NEGATIVE_EN;
+ // wifi-list
#if 0
- list_menu.title = TEXT_WIFI_MENU_TITLE_EN;
+ list_menu.title = TEXT_WIFI_MENU_TITLE_EN;
list_menu.file_pages = FILE_PAGES_EN;
- //keyboard
- keyboard_menu.apply = MANUAL_IP_APPLY_EN;
+ // keyboard
+ keyboard_menu.apply = MANUAL_IP_APPLY_EN;
keyboard_menu.password = TEXT_WIFI_PASSWORD_EN;
- keyboard_menu.space = TEXT_WIFI_SAPCE_EN;
- keyboard_menu.letter = TEXT_WIFI_LETTER_EN;
- keyboard_menu.digital = TEXT_WIFI_DIGITAL_EN;
- keyboard_menu.symbol = TEXT_WIFI_SYMBOL_EN;
- //tips
- tips_menu.pointBold = TEXT_WIFI_POINT_BOLD_EN;
- tips_menu.joining = TEXT_WIFI_JOINING_EN;
- tips_menu.failedJoin = TEXT_WIFI_FAILED_JOIN_EN;
+ keyboard_menu.space = TEXT_WIFI_SAPCE_EN;
+ keyboard_menu.letter = TEXT_WIFI_LETTER_EN;
+ keyboard_menu.digital = TEXT_WIFI_DIGITAL_EN;
+ keyboard_menu.symbol = TEXT_WIFI_SYMBOL_EN;
+ // tips
+ tips_menu.pointBold = TEXT_WIFI_POINT_BOLD_EN;
+ tips_menu.joining = TEXT_WIFI_JOINING_EN;
+ tips_menu.failedJoin = TEXT_WIFI_FAILED_JOIN_EN;
tips_menu.wifiConected = TEXT_WIFI_WIFI_CONECTED_EN;
#endif
+ machine_setting_disp();
+
operation_menu.babystep = TEXT_BABY_STEP_EN;
switch (gCfgItems.language) {
case LANG_SIMPLE_CHINESE:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_CN;
- common_menu.text_back = BACK_TEXT_CN;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_CN;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_CN;
- common_menu.print_special_title = PRINTING_GBK;
- common_menu.pause_special_title = PRINTING_PAUSE_GBK;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_CN;
+ common_menu.text_back = BACK_TEXT_CN;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_CN;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_CN;
+ common_menu.print_special_title = PRINTING_GBK;
+ common_menu.pause_special_title = PRINTING_PAUSE_GBK;
common_menu.operate_special_title = PRINTING_OPERATION_GBK;
//
- main_menu.title = TITLE_READYPRINT_CN;
- main_menu.preheat = PREHEAT_TEXT_CN;
- main_menu.move = MOVE_TEXT_CN;
- main_menu.home = HOME_TEXT_CN;
- main_menu.print = PRINT_TEXT_CN;
- main_menu.extrude = EXTRUDE_TEXT_CN;
- main_menu.leveling = LEVELING_TEXT_CN;
+ main_menu.title = TITLE_READYPRINT_CN;
+ main_menu.preheat = PREHEAT_TEXT_CN;
+ main_menu.move = MOVE_TEXT_CN;
+ main_menu.home = HOME_TEXT_CN;
+ main_menu.print = PRINT_TEXT_CN;
+ main_menu.extrude = EXTRUDE_TEXT_CN;
+ main_menu.leveling = LEVELING_TEXT_CN;
main_menu.autoleveling = AUTO_LEVELING_TEXT_CN;
- main_menu.fan = FAN_TEXT_CN;
- main_menu.set = SET_TEXT_CN;
- main_menu.more = MORE_TEXT_CN;
- main_menu.tool = TOOL_TEXT_CN;
- //TOOL
- tool_menu.title = TOOL_TEXT_CN;
- tool_menu.preheat = TOOL_PREHEAT_CN;
- tool_menu.extrude = TOOL_EXTRUDE_CN;
- tool_menu.move = TOOL_MOVE_CN;
- tool_menu.home = TOOL_HOME_CN;
- tool_menu.leveling = TOOL_LEVELING_CN;
+ main_menu.fan = FAN_TEXT_CN;
+ main_menu.set = SET_TEXT_CN;
+ main_menu.more = MORE_TEXT_CN;
+ main_menu.tool = TOOL_TEXT_CN;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_CN;
+ tool_menu.preheat = TOOL_PREHEAT_CN;
+ tool_menu.extrude = TOOL_EXTRUDE_CN;
+ tool_menu.move = TOOL_MOVE_CN;
+ tool_menu.home = TOOL_HOME_CN;
+ tool_menu.leveling = TOOL_LEVELING_CN;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_CN;
- tool_menu.filament = TOOL_FILAMENT_CN;
- tool_menu.more = TOOL_MORE_CN;
+ tool_menu.filament = TOOL_FILAMENT_CN;
+ tool_menu.more = TOOL_MORE_CN;
//
preheat_menu.adjust_title = TITLE_ADJUST_CN;
- preheat_menu.title = TITLE_PREHEAT_CN;
- preheat_menu.add = ADD_TEXT_CN;
- preheat_menu.dec = DEC_TEXT_CN;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_CN;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_CN;
- preheat_menu.hotbed = HEATBED_TEXT_CN;
- preheat_menu.off = CLOSE_TEXT_CN;
+ preheat_menu.title = TITLE_PREHEAT_CN;
+ preheat_menu.add = ADD_TEXT_CN;
+ preheat_menu.dec = DEC_TEXT_CN;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_CN;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_CN;
+ preheat_menu.hotbed = HEATBED_TEXT_CN;
+ preheat_menu.off = CLOSE_TEXT_CN;
preheat_menu.value_state = TEXT_VALUE_CN;
- preheat_menu.step_1c = TEXT_1C_CN;
- preheat_menu.step_5c = TEXT_5C_CN;
- preheat_menu.step_10c = TEXT_10C_CN;
+ preheat_menu.step_1c = TEXT_1C_CN;
+ preheat_menu.step_5c = TEXT_5C_CN;
+ preheat_menu.step_10c = TEXT_10C_CN;
//
move_menu.title = MOVE_TEXT_CN;
//
- home_menu.title = TITLE_HOME_CN;
+ home_menu.title = TITLE_HOME_CN;
home_menu.stopmove = HOME_STOPMOVE_CN;
//
- file_menu.title = TITLE_CHOOSEFILE_CN;
- file_menu.page_up = PAGE_UP_TEXT_CN;
- file_menu.page_down = PAGE_DOWN_TEXT_CN;
- file_menu.file_loading = FILE_LOADING_CN;
- file_menu.no_file = NO_FILE_CN;
- file_menu.no_file_and_check = NO_FILE_CN;//NO_FILE_AND_CHECK_CN;
+ file_menu.title = TITLE_CHOOSEFILE_CN;
+ file_menu.page_up = PAGE_UP_TEXT_CN;
+ file_menu.page_down = PAGE_DOWN_TEXT_CN;
+ file_menu.file_loading = FILE_LOADING_CN;
+ file_menu.no_file = NO_FILE_CN;
+ file_menu.no_file_and_check = NO_FILE_CN;// NO_FILE_AND_CHECK_CN;
//
- extrude_menu.title = TITLE_EXTRUDE_CN;
- extrude_menu.in = EXTRUDER_IN_TEXT_CN;
- extrude_menu.out = EXTRUDER_OUT_TEXT_CN;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_CN;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_CN;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_CN;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_CN;
+ extrude_menu.title = TITLE_EXTRUDE_CN;
+ extrude_menu.in = EXTRUDER_IN_TEXT_CN;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_CN;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_CN;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_CN;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_CN;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_CN;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_CN;
- extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_CN;
+ extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_CN;
//
- leveling_menu.title = TITLE_LEVELING_CN;
+ leveling_menu.title = TITLE_LEVELING_CN;
leveling_menu.position1 = LEVELING_POINT1_TEXT_CN;
leveling_menu.position2 = LEVELING_POINT2_TEXT_CN;
leveling_menu.position3 = LEVELING_POINT3_TEXT_CN;
leveling_menu.position4 = LEVELING_POINT4_TEXT_CN;
leveling_menu.position5 = LEVELING_POINT5_TEXT_CN;
//
- set_menu.title = TITLE_SET_CN;
- set_menu.filesys = FILESYS_TEXT_CN;
- set_menu.wifi = WIFI_TEXT_CN;
- set_menu.about = ABOUT_TEXT_CN;
- set_menu.fan = FAN_TEXT_CN;
- set_menu.filament = FILAMENT_TEXT_CN;
- set_menu.breakpoint = BREAK_POINT_TEXT_CN;
- set_menu.motoroff = MOTOR_OFF_TEXT_CN;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_CN;
- set_menu.language = LANGUAGE_TEXT_CN;
- set_menu.shutdown = SHUTDOWN_TEXT_CN;
- //set_menu.machine_para = MACHINE_PARA_CN;
-
+ set_menu.title = TITLE_SET_CN;
+ set_menu.filesys = FILESYS_TEXT_CN;
+ set_menu.wifi = WIFI_TEXT_CN;
+ set_menu.about = ABOUT_TEXT_CN;
+ set_menu.fan = FAN_TEXT_CN;
+ set_menu.filament = FILAMENT_TEXT_CN;
+ set_menu.breakpoint = BREAK_POINT_TEXT_CN;
+ set_menu.motoroff = MOTOR_OFF_TEXT_CN;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_CN;
+ set_menu.language = LANGUAGE_TEXT_CN;
+ set_menu.shutdown = SHUTDOWN_TEXT_CN;
+ set_menu.machine_para = MACHINE_PARA_CN;
+ set_menu.eepromSet = EEPROM_SETTINGS_CN;
//
- filesys_menu.title = TITLE_FILESYS_CN;
- filesys_menu.sd_sys = SD_CARD_TEXT_CN;
+ filesys_menu.title = TITLE_FILESYS_CN;
+ filesys_menu.sd_sys = SD_CARD_TEXT_CN;
filesys_menu.usb_sys = U_DISK_TEXT_CN;
//
- more_menu.title = TITLE_MORE_CN;
+ more_menu.title = TITLE_MORE_CN;
more_menu.zoffset = ZOFFSET_CN;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_CN;
- //wifi_menu.ip = WIFI_IP_TEXT_CN;
- //wifi_menu.state = WIFI_STA_TEXT_CN;
- wifi_menu.cloud = CLOUD_TEXT_CN;
+ // wifi_menu.key = WIFI_KEY_TEXT_CN;
+ // wifi_menu.ip = WIFI_IP_TEXT_CN;
+ // wifi_menu.state = WIFI_STA_TEXT_CN;
+ wifi_menu.cloud = CLOUD_TEXT_CN;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_CN;
- //CLOUD
- cloud_menu.title = TITLE_CLOUD_TEXT_CN;
- cloud_menu.bind = CLOUD_BINDED_CN;
- cloud_menu.binded = CLOUD_BINDED_CN;
- cloud_menu.unbind = CLOUD_UNBIND_CN;
- cloud_menu.unbinding = CLOUD_UNBINDED_CN;
+ // CLOUD
+ cloud_menu.title = TITLE_CLOUD_TEXT_CN;
+ cloud_menu.bind = CLOUD_BINDED_CN;
+ cloud_menu.binded = CLOUD_BINDED_CN;
+ cloud_menu.unbind = CLOUD_UNBIND_CN;
+ cloud_menu.unbinding = CLOUD_UNBINDED_CN;
cloud_menu.disconnected = CLOUD_DISCONNECTED_CN;
- cloud_menu.disable = CLOUD_DISABLE_CN;
+ cloud_menu.disable = CLOUD_DISABLE_CN;
//
- about_menu.title = ABOUT_TEXT_CN;
- about_menu.type = ABOUT_TYPE_TEXT_CN;
+ about_menu.title = ABOUT_TEXT_CN;
+ about_menu.type = ABOUT_TYPE_TEXT_CN;
about_menu.version = ABOUT_VERSION_TEXT_CN;
- about_menu.wifi = ABOUT_WIFI_TEXT_CN;
+ about_menu.wifi = ABOUT_WIFI_TEXT_CN;
//
fan_menu.title = FAN_TEXT_CN;
- fan_menu.add = FAN_ADD_TEXT_CN;
- fan_menu.dec = FAN_DEC_TEXT_CN;
+ fan_menu.add = FAN_ADD_TEXT_CN;
+ fan_menu.dec = FAN_DEC_TEXT_CN;
fan_menu.state = FAN_TIPS1_TEXT_CN;
//
- filament_menu.title = TITLE_FILAMENT_CN;
- filament_menu.in = FILAMENT_IN_TEXT_CN;
- filament_menu.out = FILAMENT_OUT_TEXT_CN;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_CN;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_CN;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_CN;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_CN;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
+ filament_menu.title = TITLE_FILAMENT_CN;
+ filament_menu.in = FILAMENT_IN_TEXT_CN;
+ filament_menu.out = FILAMENT_OUT_TEXT_CN;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_CN;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_CN;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_CN;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_CN;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_CN;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
//
language_menu.title = TITLE_LANGUAGE_CN;
- language_menu.next = PAGE_DOWN_TEXT_CN;
- language_menu.up = PAGE_UP_TEXT_CN;
+ language_menu.next = PAGE_DOWN_TEXT_CN;
+ language_menu.up = PAGE_UP_TEXT_CN;
//
- printing_menu.title = TITLE_PRINTING_CN;
+ printing_menu.title = TITLE_PRINTING_CN;
printing_menu.option = PRINTING_OPERATION_CN;
- printing_menu.stop = PRINTING_STOP_CN;
- printing_menu.pause = PRINTING_PAUSE_CN;
+ printing_menu.stop = PRINTING_STOP_CN;
+ printing_menu.pause = PRINTING_PAUSE_CN;
printing_menu.resume = PRINTING_RESUME_CN;
//
- operation_menu.title = TITLE_OPERATION_CN;
- operation_menu.pause = PRINTING_PAUSE_CN;
- operation_menu.stop = PRINTING_STOP_CN;
- operation_menu.temp = PRINTING_TEMP_CN;
- operation_menu.fan = FAN_TEXT_CN;
- operation_menu.filament = FILAMENT_TEXT_CN;
- operation_menu.extr = PRINTING_EXTRUDER_CN;
- operation_menu.speed = PRINTING_CHANGESPEED_CN;
- operation_menu.more = PRINTING_MORE_CN;
- operation_menu.move = PRINTING_MOVE_CN;
- operation_menu.auto_off = AUTO_SHUTDOWN_CN;
+ operation_menu.title = TITLE_OPERATION_CN;
+ operation_menu.pause = PRINTING_PAUSE_CN;
+ operation_menu.stop = PRINTING_STOP_CN;
+ operation_menu.temp = PRINTING_TEMP_CN;
+ operation_menu.fan = FAN_TEXT_CN;
+ operation_menu.filament = FILAMENT_TEXT_CN;
+ operation_menu.extr = PRINTING_EXTRUDER_CN;
+ operation_menu.speed = PRINTING_CHANGESPEED_CN;
+ operation_menu.more = PRINTING_MORE_CN;
+ operation_menu.move = PRINTING_MOVE_CN;
+ operation_menu.auto_off = AUTO_SHUTDOWN_CN;
operation_menu.manual_off = MANUAL_SHUTDOWN_CN;
//
- pause_menu.title = TITLE_PAUSE_CN;
- pause_menu.resume = PRINTING_RESUME_CN;
- pause_menu.stop = PRINTING_STOP_CN;
- pause_menu.extrude = PRINTING_EXTRUDER_CN;
- pause_menu.move = PRINTING_MOVE_CN;
+ pause_menu.title = TITLE_PAUSE_CN;
+ pause_menu.resume = PRINTING_RESUME_CN;
+ pause_menu.stop = PRINTING_STOP_CN;
+ pause_menu.extrude = PRINTING_EXTRUDER_CN;
+ pause_menu.move = PRINTING_MOVE_CN;
pause_menu.filament = FILAMENT_TEXT_CN;
- pause_menu.more = PRINTING_MORE_CN;
+ pause_menu.more = PRINTING_MORE_CN;
//
- speed_menu.title = PRINTING_CHANGESPEED_CN;
- speed_menu.add = ADD_TEXT_CN;
- speed_menu.dec = DEC_TEXT_CN;
- speed_menu.move = MOVE_SPEED_CN;
- speed_menu.extrude = EXTRUDER_SPEED_CN;
+ speed_menu.title = PRINTING_CHANGESPEED_CN;
+ speed_menu.add = ADD_TEXT_CN;
+ speed_menu.dec = DEC_TEXT_CN;
+ speed_menu.move = MOVE_SPEED_CN;
+ speed_menu.extrude = EXTRUDER_SPEED_CN;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_CN;
- speed_menu.move_speed = MOVE_SPEED_STATE_CN;
+ speed_menu.move_speed = MOVE_SPEED_STATE_CN;
//
- printing_more_menu.title = TITLE_MORE_CN;
- printing_more_menu.fan = FAN_TEXT_CN;
+ printing_more_menu.title = TITLE_MORE_CN;
+ printing_more_menu.fan = FAN_TEXT_CN;
printing_more_menu.auto_close = AUTO_SHUTDOWN_CN;
- printing_more_menu.manual = MANUAL_SHUTDOWN_CN;
- printing_more_menu.speed = PRINTING_CHANGESPEED_CN;
- printing_more_menu.temp = PRINTING_TEMP_CN;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_CN;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_CN;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_CN;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_CN;
- print_file_dialog_menu.retry = DIALOG_RETRY_CN;
- print_file_dialog_menu.stop = DIALOG_STOP_CN;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_CN;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_CN;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_CN;
+ printing_more_menu.temp = PRINTING_TEMP_CN;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_CN;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_CN;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_CN;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_CN;
+ print_file_dialog_menu.retry = DIALOG_RETRY_CN;
+ print_file_dialog_menu.stop = DIALOG_STOP_CN;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_CN;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_CN;
print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_CN;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_CN;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_CN;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_CN;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_CN;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_CN;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_CN;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_CN;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_CN;
print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_CN;
- //ZOFFSET
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_CN;
- zoffset_menu.inc = ZOFFSET_INC_CN;
- zoffset_menu.dec = ZOFFSET_DEC_CN;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_CN;
- pause_msg_menu.changing = MESSEGE_CHANGING_CN;
- pause_msg_menu.unload = MESSEGE_UNLOAD_CN;
- pause_msg_menu.waiting = MESSEGE_WAITING_CN;
- pause_msg_menu.insert = MESSEGE_INSERT_CN;
- pause_msg_menu.load = MESSEGE_LOAD_CN;
- pause_msg_menu.purge = MESSEGE_PURGE_CN;
- pause_msg_menu.resume = MESSEGE_RESUME_CN;
- pause_msg_menu.heat = MESSEGE_HEAT_CN;
- pause_msg_menu.heating = MESSEGE_HEATING_CN;
- pause_msg_menu.option = MESSEGE_OPTION_CN;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_CN;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_CN;
+ zoffset_menu.inc = ZOFFSET_INC_CN;
+ zoffset_menu.dec = ZOFFSET_DEC_CN;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_CN;
+ pause_msg_menu.changing = MESSAGE_CHANGING_CN;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_CN;
+ pause_msg_menu.waiting = MESSAGE_WAITING_CN;
+ pause_msg_menu.insert = MESSAGE_INSERT_CN;
+ pause_msg_menu.load = MESSAGE_LOAD_CN;
+ pause_msg_menu.purge = MESSAGE_PURGE_CN;
+ pause_msg_menu.resume = MESSAGE_RESUME_CN;
+ pause_msg_menu.heat = MESSAGE_HEAT_CN;
+ pause_msg_menu.heating = MESSAGE_HEATING_CN;
+ pause_msg_menu.option = MESSAGE_OPTION_CN;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_CN;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_CN;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_CN;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_CN;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_CN;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_CN;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_CN;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_CN;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_CN;
break;
#if 1
#if 1
case LANG_COMPLEX_CHINESE:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_CN;
- common_menu.text_back = BACK_TEXT_CN;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_CN;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_CN;
- common_menu.print_special_title = PRINTING_GBK;
- common_menu.pause_special_title = PRINTING_PAUSE_GBK;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_T_CN;
+ common_menu.text_back = BACK_TEXT_T_CN;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_T_CN;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_T_CN;
+ common_menu.print_special_title = PRINTING_GBK;
+ common_menu.pause_special_title = PRINTING_PAUSE_GBK;
common_menu.operate_special_title = PRINTING_OPERATION_GBK;
//
- main_menu.title = TITLE_READYPRINT_CN;
- main_menu.preheat = PREHEAT_TEXT_CN;
- main_menu.move = MOVE_TEXT_CN;
- main_menu.home = HOME_TEXT_CN;
- main_menu.print = PRINT_TEXT_CN;
- main_menu.extrude = EXTRUDE_TEXT_CN;
- main_menu.leveling = LEVELING_TEXT_CN;
- main_menu.autoleveling = AUTO_LEVELING_TEXT_CN;
- main_menu.fan = FAN_TEXT_CN;
- main_menu.set = SET_TEXT_CN;
- main_menu.more = MORE_TEXT_CN;
- main_menu.tool = TOOL_TEXT_CN;
- //TOOL
- tool_menu.title = TOOL_TEXT_CN;
- tool_menu.preheat = TOOL_PREHEAT_CN;
- tool_menu.extrude = TOOL_EXTRUDE_CN;
- tool_menu.move = TOOL_MOVE_CN;
- tool_menu.home = TOOL_HOME_CN;
- tool_menu.leveling = TOOL_LEVELING_CN;
- tool_menu.autoleveling = TOOL_AUTO_LEVELING_CN;
- tool_menu.filament = TOOL_FILAMENT_CN;
- tool_menu.more = TOOL_MORE_CN;
- //
- preheat_menu.adjust_title = TITLE_ADJUST_CN;
- preheat_menu.title = TITLE_PREHEAT_CN;
- preheat_menu.add = ADD_TEXT_CN;
- preheat_menu.dec = DEC_TEXT_CN;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_CN;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_CN;
- preheat_menu.hotbed = HEATBED_TEXT_CN;
- preheat_menu.off = CLOSE_TEXT_CN;
- preheat_menu.value_state = TEXT_VALUE_CN;
- preheat_menu.step_1c = TEXT_1C_CN;
- preheat_menu.step_5c = TEXT_5C_CN;
- preheat_menu.step_10c = TEXT_10C_CN;
- //
- move_menu.title = MOVE_TEXT_CN;
- more_menu.zoffset = ZOFFSET_CN;
- //
- home_menu.title = TITLE_HOME_CN;
- home_menu.stopmove = HOME_STOPMOVE_CN;
- //
- file_menu.title = TITLE_CHOOSEFILE_CN;
- file_menu.page_up = PAGE_UP_TEXT_CN;
- file_menu.page_down = PAGE_DOWN_TEXT_CN;
- file_menu.file_loading = FILE_LOADING_CN;
- file_menu.no_file = NO_FILE_CN;
- file_menu.no_file_and_check = NO_FILE_CN;//NO_FILE_AND_CHECK_T_CN;
- //
- extrude_menu.title = TITLE_EXTRUDE_CN;
- extrude_menu.in = EXTRUDER_IN_TEXT_CN;
- extrude_menu.out = EXTRUDER_OUT_TEXT_CN;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_CN;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_CN;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_CN;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_CN;
- extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_CN;
- extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_CN;
- //
- leveling_menu.title = TITLE_LEVELING_CN;
- leveling_menu.position1 = LEVELING_POINT1_TEXT_CN;
- leveling_menu.position2 = LEVELING_POINT2_TEXT_CN;
- leveling_menu.position3 = LEVELING_POINT3_TEXT_CN;
- leveling_menu.position4 = LEVELING_POINT4_TEXT_CN;
- leveling_menu.position5 = LEVELING_POINT5_TEXT_CN;
- //
- set_menu.title = TITLE_SET_CN;
- set_menu.filesys = FILESYS_TEXT_CN;
- set_menu.wifi = WIFI_TEXT_CN;
- set_menu.about = ABOUT_TEXT_CN;
- set_menu.fan = FAN_TEXT_CN;
- set_menu.filament = FILAMENT_TEXT_CN;
- set_menu.breakpoint = BREAK_POINT_TEXT_CN;
- set_menu.motoroff = MOTOR_OFF_TEXT_CN;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_CN;
- set_menu.language = LANGUAGE_TEXT_CN;
- set_menu.shutdown = SHUTDOWN_TEXT_CN;
- //set_menu.machine_para = MACHINE_PARA_CN;
- //
- filesys_menu.title = TITLE_FILESYS_CN;
- filesys_menu.sd_sys = SD_CARD_TEXT_CN;
- filesys_menu.usb_sys = U_DISK_TEXT_CN;
- //
- more_menu.title = TITLE_MORE_CN;
- //WIFI
+ main_menu.title = TITLE_READYPRINT_T_CN;
+ main_menu.preheat = PREHEAT_TEXT_T_CN;
+ main_menu.move = MOVE_TEXT_T_CN;
+ main_menu.home = HOME_TEXT_T_CN;
+ main_menu.print = PRINT_TEXT_T_CN;
+ main_menu.extrude = EXTRUDE_TEXT_T_CN;
+ main_menu.leveling = LEVELING_TEXT_T_CN;
+ main_menu.autoleveling = AUTO_LEVELING_TEXT_T_CN;
+ main_menu.fan = FAN_TEXT_T_CN;
+ main_menu.set = SET_TEXT_T_CN;
+ main_menu.more = MORE_TEXT_T_CN;
+ main_menu.tool = TOOL_TEXT_T_CN;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_T_CN;
+ tool_menu.preheat = TOOL_PREHEAT_T_CN;
+ tool_menu.extrude = TOOL_EXTRUDE_T_CN;
+ tool_menu.move = TOOL_MOVE_T_CN;
+ tool_menu.home = TOOL_HOME_T_CN;
+ tool_menu.leveling = TOOL_LEVELING_T_CN;
+ tool_menu.autoleveling = TOOL_AUTO_LEVELING_T_CN;
+ tool_menu.filament = TOOL_FILAMENT_T_CN;
+ tool_menu.more = TOOL_MORE_T_CN;
+ //
+ preheat_menu.adjust_title = TITLE_ADJUST_T_CN;
+ preheat_menu.title = TITLE_PREHEAT_T_CN;
+ preheat_menu.add = ADD_TEXT_T_CN;
+ preheat_menu.dec = DEC_TEXT_T_CN;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_T_CN;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_T_CN;
+ preheat_menu.hotbed = HEATBED_TEXT_T_CN;
+ preheat_menu.off = CLOSE_TEXT_T_CN;
+ preheat_menu.value_state = TEXT_VALUE_T_CN;
+ preheat_menu.step_1c = TEXT_1C_T_CN;
+ preheat_menu.step_5c = TEXT_5C_T_CN;
+ preheat_menu.step_10c = TEXT_10C_T_CN;
+ //
+ move_menu.title = MOVE_TEXT_T_CN;
+ more_menu.zoffset = ZOFFSET_T_CN;
+ //
+ home_menu.title = TITLE_HOME_T_CN;
+ home_menu.stopmove = HOME_STOPMOVE_T_CN;
+ //
+ file_menu.title = TITLE_CHOOSEFILE_T_CN;
+ file_menu.page_up = PAGE_UP_TEXT_T_CN;
+ file_menu.page_down = PAGE_DOWN_TEXT_T_CN;
+ file_menu.file_loading = FILE_LOADING_T_CN;
+ file_menu.no_file = NO_FILE_T_CN;
+ file_menu.no_file_and_check = NO_FILE_T_CN;// NO_FILE_AND_CHECK_T_CN;
+ //
+ extrude_menu.title = TITLE_EXTRUDE_T_CN;
+ extrude_menu.in = EXTRUDER_IN_TEXT_T_CN;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_T_CN;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_T_CN;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_T_CN;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_T_CN;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_T_CN;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_T_CN;
+ extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_T_CN;
+ extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_T_CN;
+ //
+ leveling_menu.title = TITLE_LEVELING_CN;
+ leveling_menu.position1 = LEVELING_POINT1_TEXT_T_CN;
+ leveling_menu.position2 = LEVELING_POINT2_TEXT_T_CN;
+ leveling_menu.position3 = LEVELING_POINT3_TEXT_T_CN;
+ leveling_menu.position4 = LEVELING_POINT4_TEXT_T_CN;
+ leveling_menu.position5 = LEVELING_POINT5_TEXT_T_CN;
+ //
+ set_menu.title = TITLE_SET_T_CN;
+ set_menu.filesys = FILESYS_TEXT_T_CN;
+ set_menu.wifi = WIFI_TEXT_T_CN;
+ set_menu.about = ABOUT_TEXT_T_CN;
+ set_menu.fan = FAN_TEXT_T_CN;
+ set_menu.filament = FILAMENT_TEXT_T_CN;
+ set_menu.breakpoint = BREAK_POINT_TEXT_T_CN;
+ set_menu.motoroff = MOTOR_OFF_TEXT_T_CN;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_T_CN;
+ set_menu.language = LANGUAGE_TEXT_T_CN;
+ set_menu.shutdown = SHUTDOWN_TEXT_T_CN;
+ set_menu.machine_para = MACHINE_PARA_T_CN;
+ set_menu.eepromSet = EEPROM_SETTINGS_T_CN;
+ filesys_menu.title = TITLE_FILESYS_T_CN;
+ filesys_menu.sd_sys = SD_CARD_TEXT_T_CN;
+ filesys_menu.usb_sys = U_DISK_TEXT_T_CN;
+ //
+ more_menu.title = TITLE_MORE_T_CN;
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_CN;
- //wifi_menu.ip = WIFI_IP_TEXT_CN;
- //wifi_menu.state = WIFI_STA_TEXT_CN;
- wifi_menu.cloud = CLOUD_TEXT_CN;
- wifi_menu.reconnect = WIFI_RECONNECT_TEXT_CN;
- //CLOUD
- cloud_menu.title = TITLE_CLOUD_TEXT_CN;
- cloud_menu.bind = CLOUD_BINDED_CN;
- cloud_menu.binded = CLOUD_BINDED_CN;
- cloud_menu.unbind = CLOUD_UNBIND_CN;
- cloud_menu.unbinding = CLOUD_UNBINDED_CN;
- cloud_menu.disconnected = CLOUD_DISCONNECTED_CN;
- cloud_menu.disable = CLOUD_DISABLE_CN;
- //
- about_menu.title = ABOUT_TEXT_CN;
- about_menu.type = ABOUT_TYPE_TEXT_CN;
- about_menu.version = ABOUT_VERSION_TEXT_CN;
- about_menu.wifi = ABOUT_WIFI_TEXT_CN;
-
- //
- fan_menu.title = FAN_TEXT_CN;
- fan_menu.add = FAN_ADD_TEXT_CN;
- fan_menu.dec = FAN_DEC_TEXT_CN;
- fan_menu.state = FAN_TIPS1_TEXT_CN;
- //
- filament_menu.title = TITLE_FILAMENT_CN;
- filament_menu.in = FILAMENT_IN_TEXT_CN;
- filament_menu.out = FILAMENT_OUT_TEXT_CN;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_CN;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_CN;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_CN;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_CN;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
- filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_CN;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
-
-
- //
- language_menu.title = TITLE_LANGUAGE_CN;
- language_menu.next = PAGE_DOWN_TEXT_CN;
- language_menu.up = PAGE_UP_TEXT_CN;
-
- //
- printing_menu.title = TITLE_PRINTING_CN;
- printing_menu.option = PRINTING_OPERATION_CN;
- printing_menu.stop = PRINTING_STOP_CN;
- printing_menu.pause = PRINTING_PAUSE_CN;
- printing_menu.resume = PRINTING_RESUME_CN;
-
- //
- operation_menu.title = TITLE_OPERATION_CN;
- operation_menu.pause = PRINTING_PAUSE_CN;
- operation_menu.stop = PRINTING_STOP_CN;
- operation_menu.temp = PRINTING_TEMP_CN;
- operation_menu.fan = FAN_TEXT_CN;
- operation_menu.extr = PRINTING_EXTRUDER_CN;
- operation_menu.speed = PRINTING_CHANGESPEED_CN;
- operation_menu.filament = FILAMENT_TEXT_CN;
- operation_menu.more = PRINTING_MORE_CN;
- operation_menu.move = PRINTING_MOVE_CN;
- operation_menu.auto_off = AUTO_SHUTDOWN_CN;
- operation_menu.manual_off = MANUAL_SHUTDOWN_CN;
- //
- pause_menu.title = TITLE_PAUSE_CN;
- pause_menu.resume = PRINTING_RESUME_CN;
- pause_menu.stop = PRINTING_STOP_CN;
- pause_menu.extrude = PRINTING_EXTRUDER_CN;
- pause_menu.move = PRINTING_MOVE_CN;
- pause_menu.filament = FILAMENT_TEXT_CN;
- pause_menu.more = PRINTING_MORE_CN;
-
- //
- speed_menu.title = PRINTING_CHANGESPEED_CN;
- speed_menu.add = ADD_TEXT_CN;
- speed_menu.dec = DEC_TEXT_CN;
- speed_menu.move = MOVE_SPEED_CN;
- speed_menu.extrude = EXTRUDER_SPEED_CN;
- speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_CN;
- speed_menu.move_speed = MOVE_SPEED_STATE_CN;
- //
- printing_more_menu.title = TITLE_MORE_CN;
- printing_more_menu.fan = FAN_TEXT_CN;
- printing_more_menu.auto_close = AUTO_SHUTDOWN_CN;
- printing_more_menu.manual = MANUAL_SHUTDOWN_CN;
- printing_more_menu.speed = PRINTING_CHANGESPEED_CN;
- printing_more_menu.temp = PRINTING_TEMP_CN;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_CN;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_CN;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_CN;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_CN;
- print_file_dialog_menu.retry = DIALOG_RETRY_CN;
- print_file_dialog_menu.stop = DIALOG_STOP_CN;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_CN;
- print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_CN;
-
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_CN;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_CN;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_CN;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_CN;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_CN;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_CN;
- //ZOFFSET
- zoffset_menu.title = TITLE_ZOFFSET_CN;
- zoffset_menu.inc = ZOFFSET_INC_CN;
- zoffset_menu.dec = ZOFFSET_DEC_CN;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_CN;
- pause_msg_menu.changing = MESSEGE_CHANGING_CN;
- pause_msg_menu.unload = MESSEGE_UNLOAD_CN;
- pause_msg_menu.waiting = MESSEGE_WAITING_CN;
- pause_msg_menu.insert = MESSEGE_INSERT_CN;
- pause_msg_menu.load = MESSEGE_LOAD_CN;
- pause_msg_menu.purge = MESSEGE_PURGE_CN;
- pause_msg_menu.resume = MESSEGE_RESUME_CN;
- pause_msg_menu.heat = MESSEGE_HEAT_CN;
- pause_msg_menu.heating = MESSEGE_HEATING_CN;
- pause_msg_menu.option = MESSEGE_OPTION_CN;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_CN;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_CN;
+ // wifi_menu.key = WIFI_KEY_TEXT_CN;
+ // wifi_menu.ip = WIFI_IP_TEXT_CN;
+ // wifi_menu.state= WIFI_STA_TEXT_CN;
+ wifi_menu.cloud = CLOUD_TEXT_T_CN;
+ wifi_menu.reconnect = WIFI_RECONNECT_TEXT_T_CN;
+ // CLOUD
+ cloud_menu.title = TITLE_CLOUD_TEXT_T_CN;
+ cloud_menu.bind = CLOUD_BINDED_T_CN;
+ cloud_menu.binded = CLOUD_BINDED_T_CN;
+ cloud_menu.unbind = CLOUD_UNBIND_T_CN;
+ cloud_menu.unbinding = CLOUD_UNBINDED_T_CN;
+ cloud_menu.disconnected = CLOUD_DISCONNECTED_T_CN;
+ cloud_menu.disable = CLOUD_DISABLE_T_CN;
+ //
+ about_menu.title = ABOUT_TEXT_T_CN;
+ about_menu.type = ABOUT_TYPE_TEXT_T_CN;
+ about_menu.version = ABOUT_VERSION_TEXT_T_CN;
+ about_menu.wifi = ABOUT_WIFI_TEXT_T_CN;
+
+ //
+ fan_menu.title = FAN_TEXT_T_CN;
+ fan_menu.add = FAN_ADD_TEXT_T_CN;
+ fan_menu.dec = FAN_DEC_TEXT_T_CN;
+ fan_menu.state = FAN_TIPS1_TEXT_T_CN;
+ //
+ filament_menu.title = TITLE_FILAMENT_T_CN;
+ filament_menu.in = FILAMENT_IN_TEXT_T_CN;
+ filament_menu.out = FILAMENT_OUT_TEXT_T_CN;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_T_CN;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_T_CN;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_T_CN;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_T_CN;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_T_CN;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_T_CN;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_T_CN;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_T_CN;
+ filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_T_CN;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_T_CN;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_T_CN;
+
+
+ //
+ language_menu.title = TITLE_LANGUAGE_T_CN;
+ language_menu.next = PAGE_DOWN_TEXT_T_CN;
+ language_menu.up = PAGE_UP_TEXT_T_CN;
+
+ //
+ printing_menu.title = TITLE_PRINTING_T_CN;
+ printing_menu.option = PRINTING_OPERATION_T_CN;
+ printing_menu.stop = PRINTING_STOP_T_CN;
+ printing_menu.pause = PRINTING_PAUSE_T_CN;
+ printing_menu.resume = PRINTING_RESUME_T_CN;
+
+ //
+ operation_menu.title = TITLE_OPERATION_T_CN;
+ operation_menu.pause = PRINTING_PAUSE_T_CN;
+ operation_menu.stop = PRINTING_STOP_T_CN;
+ operation_menu.temp = PRINTING_TEMP_T_CN;
+ operation_menu.fan = FAN_TEXT_T_CN;
+ operation_menu.extr = PRINTING_EXTRUDER_T_CN;
+ operation_menu.speed = PRINTING_CHANGESPEED_T_CN;
+ operation_menu.filament = FILAMENT_TEXT_T_CN;
+ operation_menu.more = PRINTING_MORE_T_CN;
+ operation_menu.move = PRINTING_MOVE_T_CN;
+ operation_menu.auto_off = AUTO_SHUTDOWN_T_CN;
+ operation_menu.manual_off = MANUAL_SHUTDOWN_T_CN;
+ //
+ pause_menu.title = TITLE_PAUSE_T_CN;
+ pause_menu.resume = PRINTING_RESUME_T_CN;
+ pause_menu.stop = PRINTING_STOP_T_CN;
+ pause_menu.extrude = PRINTING_EXTRUDER_T_CN;
+ pause_menu.move = PRINTING_MOVE_T_CN;
+ pause_menu.filament = FILAMENT_TEXT_T_CN;
+ pause_menu.more = PRINTING_MORE_T_CN;
+
+ //
+ speed_menu.title = PRINTING_CHANGESPEED_T_CN;
+ speed_menu.add = ADD_TEXT_T_CN;
+ speed_menu.dec = DEC_TEXT_T_CN;
+ speed_menu.move = MOVE_SPEED_T_CN;
+ speed_menu.extrude = EXTRUDER_SPEED_T_CN;
+ speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_T_CN;
+ speed_menu.move_speed = MOVE_SPEED_STATE_T_CN;
+ //
+ printing_more_menu.title = TITLE_MORE_T_CN;
+ printing_more_menu.fan = FAN_TEXT_T_CN;
+ printing_more_menu.auto_close = AUTO_SHUTDOWN_T_CN;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_T_CN;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_T_CN;
+ printing_more_menu.temp = PRINTING_TEMP_T_CN;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_T_CN;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_T_CN;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_T_CN;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_T_CN;
+ print_file_dialog_menu.retry = DIALOG_RETRY_T_CN;
+ print_file_dialog_menu.stop = DIALOG_STOP_T_CN;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_T_CN;
+ print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_T_CN;
+
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_T_CN;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_T_CN;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_T_CN;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_T_CN;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_T_CN;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_T_CN;
+ // ZOFFSET
+ zoffset_menu.title = TITLE_ZOFFSET_T_CN;
+ zoffset_menu.inc = ZOFFSET_INC_T_CN;
+ zoffset_menu.dec = ZOFFSET_DEC_T_CN;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_T_CN;
+ pause_msg_menu.changing = MESSAGE_CHANGING_T_CN;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_T_CN;
+ pause_msg_menu.waiting = MESSAGE_WAITING_T_CN;
+ pause_msg_menu.insert = MESSAGE_INSERT_T_CN;
+ pause_msg_menu.load = MESSAGE_LOAD_T_CN;
+ pause_msg_menu.purge = MESSAGE_PURGE_T_CN;
+ pause_msg_menu.resume = MESSAGE_RESUME_T_CN;
+ pause_msg_menu.heat = MESSAGE_HEAT_T_CN;
+ pause_msg_menu.heating = MESSAGE_HEATING_T_CN;
+ pause_msg_menu.option = MESSAGE_OPTION_T_CN;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_T_CN;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_T_CN;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_T_CN;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_T_CN;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_T_CN;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_T_CN;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_T_CN;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_T_CN;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_T_CN;
break;
case LANG_ENGLISH:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
- common_menu.text_back = BACK_TEXT_EN;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
- common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
- common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
+ common_menu.text_back = BACK_TEXT_EN;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
+ common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
+ common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
//
- main_menu.title = TITLE_READYPRINT_EN;
- main_menu.preheat = PREHEAT_TEXT_EN;
- main_menu.move = MOVE_TEXT_EN;
- main_menu.home = HOME_TEXT_EN;
- main_menu.print = PRINT_TEXT_EN;
- main_menu.extrude = EXTRUDE_TEXT_EN;
- main_menu.leveling = LEVELING_TEXT_EN;
+ main_menu.title = TITLE_READYPRINT_EN;
+ main_menu.preheat = PREHEAT_TEXT_EN;
+ main_menu.move = MOVE_TEXT_EN;
+ main_menu.home = HOME_TEXT_EN;
+ main_menu.print = PRINT_TEXT_EN;
+ main_menu.extrude = EXTRUDE_TEXT_EN;
+ main_menu.leveling = LEVELING_TEXT_EN;
main_menu.autoleveling = AUTO_LEVELING_TEXT_EN;
- main_menu.fan = FAN_TEXT_EN;
- main_menu.set = SET_TEXT_EN;
- main_menu.more = MORE_TEXT_EN;
- main_menu.tool = TOOL_TEXT_EN;
- //TOOL
- tool_menu.title = TOOL_TEXT_EN;
- tool_menu.preheat = TOOL_PREHEAT_EN;
- tool_menu.extrude = TOOL_EXTRUDE_EN;
- tool_menu.move = TOOL_MOVE_EN;
- tool_menu.home = TOOL_HOME_EN;
- tool_menu.leveling = TOOL_LEVELING_EN;
+ main_menu.fan = FAN_TEXT_EN;
+ main_menu.set = SET_TEXT_EN;
+ main_menu.more = MORE_TEXT_EN;
+ main_menu.tool = TOOL_TEXT_EN;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_EN;
+ tool_menu.preheat = TOOL_PREHEAT_EN;
+ tool_menu.extrude = TOOL_EXTRUDE_EN;
+ tool_menu.move = TOOL_MOVE_EN;
+ tool_menu.home = TOOL_HOME_EN;
+ tool_menu.leveling = TOOL_LEVELING_EN;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_EN;
- tool_menu.filament = TOOL_FILAMENT_EN;
- tool_menu.more = TOOL_MORE_EN;
+ tool_menu.filament = TOOL_FILAMENT_EN;
+ tool_menu.more = TOOL_MORE_EN;
//
preheat_menu.adjust_title = TITLE_ADJUST_EN;
- preheat_menu.title = TITLE_PREHEAT_EN;
- preheat_menu.add = ADD_TEXT_EN;
- preheat_menu.dec = DEC_TEXT_EN;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
- preheat_menu.hotbed = HEATBED_TEXT_EN;
- preheat_menu.off = CLOSE_TEXT_EN;
+ preheat_menu.title = TITLE_PREHEAT_EN;
+ preheat_menu.add = ADD_TEXT_EN;
+ preheat_menu.dec = DEC_TEXT_EN;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
+ preheat_menu.hotbed = HEATBED_TEXT_EN;
+ preheat_menu.off = CLOSE_TEXT_EN;
//
move_menu.title = TITLE_MOVE_EN;
//
- home_menu.title = TITLE_HOME_EN;
+ home_menu.title = TITLE_HOME_EN;
home_menu.stopmove = HOME_STOPMOVE_EN;
//
- file_menu.title = TITLE_CHOOSEFILE_EN;
- file_menu.page_up = PAGE_UP_TEXT_EN;
- file_menu.page_down = PAGE_DOWN_TEXT_EN;
- file_menu.file_loading = FILE_LOADING_EN;
- file_menu.no_file = NO_FILE_EN;
- file_menu.no_file_and_check = NO_FILE_EN;//NO_FILE_AND_CHECK_EN;
- //
- extrude_menu.title = TITLE_EXTRUDE_EN;
- extrude_menu.in = EXTRUDER_IN_TEXT_EN;
- extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
+ file_menu.title = TITLE_CHOOSEFILE_EN;
+ file_menu.page_up = PAGE_UP_TEXT_EN;
+ file_menu.page_down = PAGE_DOWN_TEXT_EN;
+ file_menu.file_loading = FILE_LOADING_EN;
+ file_menu.no_file = NO_FILE_EN;
+ file_menu.no_file_and_check = NO_FILE_EN;// NO_FILE_AND_CHECK_EN;
+ //
+ extrude_menu.title = TITLE_EXTRUDE_EN;
+ extrude_menu.in = EXTRUDER_IN_TEXT_EN;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_EN;
//
- leveling_menu.title = TITLE_LEVELING_EN;
+ leveling_menu.title = TITLE_LEVELING_EN;
leveling_menu.position1 = LEVELING_POINT1_TEXT_EN;
leveling_menu.position2 = LEVELING_POINT2_TEXT_EN;
leveling_menu.position3 = LEVELING_POINT3_TEXT_EN;
leveling_menu.position4 = LEVELING_POINT4_TEXT_EN;
leveling_menu.position5 = LEVELING_POINT5_TEXT_EN;
//
- set_menu.title = TITLE_SET_EN;
- set_menu.filesys = FILESYS_TEXT_EN;
- set_menu.wifi = WIFI_TEXT_EN;
- set_menu.about = ABOUT_TEXT_EN;
- set_menu.fan = FAN_TEXT_EN;
- set_menu.filament = FILAMENT_TEXT_EN;
- set_menu.breakpoint = BREAK_POINT_TEXT_EN;
- set_menu.motoroff = MOTOR_OFF_TEXT_EN;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
- set_menu.language = LANGUAGE_TEXT_EN;
- set_menu.shutdown = SHUTDOWN_TEXT_EN;
- //set_menu.machine_para = MACHINE_PARA_EN;
- //
- more_menu.title = TITLE_MORE_EN;
- more_menu.zoffset = ZOFFSET_EN;
- //
- filesys_menu.title = TITLE_FILESYS_EN;
- filesys_menu.sd_sys = SD_CARD_TEXT_EN;
+ set_menu.title = TITLE_SET_EN;
+ set_menu.filesys = FILESYS_TEXT_EN;
+ set_menu.wifi = WIFI_TEXT_EN;
+ set_menu.about = ABOUT_TEXT_EN;
+ set_menu.fan = FAN_TEXT_EN;
+ set_menu.filament = FILAMENT_TEXT_EN;
+ set_menu.breakpoint = BREAK_POINT_TEXT_EN;
+ set_menu.motoroff = MOTOR_OFF_TEXT_EN;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
+ set_menu.language = LANGUAGE_TEXT_EN;
+ set_menu.shutdown = SHUTDOWN_TEXT_EN;
+ set_menu.machine_para = MACHINE_PARA_EN;
+ set_menu.eepromSet = EEPROM_SETTINGS_EN;
+ more_menu.title = TITLE_MORE_EN;
+ more_menu.zoffset = ZOFFSET_EN;
+ //
+ filesys_menu.title = TITLE_FILESYS_EN;
+ filesys_menu.sd_sys = SD_CARD_TEXT_EN;
filesys_menu.usb_sys = U_DISK_TEXT_EN;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_EN;
- //wifi_menu.ip = WIFI_IP_TEXT_EN;
- //wifi_menu.state = WIFI_STA_TEXT_EN;
- wifi_menu.cloud = CLOUD_TEXT_EN;
+ // wifi_menu.key = WIFI_KEY_TEXT_EN;
+ // wifi_menu.ip = WIFI_IP_TEXT_EN;
+ // wifi_menu.state = WIFI_STA_TEXT_EN;
+ wifi_menu.cloud = CLOUD_TEXT_EN;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_EN;
- cloud_menu.title = TITLE_CLOUD_TEXT_EN;
- cloud_menu.bind = CLOUD_BINDED_EN;
- cloud_menu.binded = CLOUD_BINDED_EN;
- cloud_menu.unbind = CLOUD_UNBIND_EN;
- cloud_menu.unbinding = CLOUD_UNBINDED_EN;
+ cloud_menu.title = TITLE_CLOUD_TEXT_EN;
+ cloud_menu.bind = CLOUD_BINDED_EN;
+ cloud_menu.binded = CLOUD_BINDED_EN;
+ cloud_menu.unbind = CLOUD_UNBIND_EN;
+ cloud_menu.unbinding = CLOUD_UNBINDED_EN;
cloud_menu.disconnected = CLOUD_DISCONNECTED_EN;
- cloud_menu.disable = CLOUD_DISABLE_EN;
+ cloud_menu.disable = CLOUD_DISABLE_EN;
//
- about_menu.title = TITLE_ABOUT_EN;
- about_menu.type = ABOUT_TYPE_TEXT_EN;
+ about_menu.title = TITLE_ABOUT_EN;
+ about_menu.type = ABOUT_TYPE_TEXT_EN;
about_menu.version = ABOUT_VERSION_TEXT_EN;
- about_menu.wifi = ABOUT_WIFI_TEXT_EN;
+ about_menu.wifi = ABOUT_WIFI_TEXT_EN;
//
fan_menu.title = TITLE_FAN_EN;
- fan_menu.add = FAN_ADD_TEXT_EN;
- fan_menu.dec = FAN_DEC_TEXT_EN;
+ fan_menu.add = FAN_ADD_TEXT_EN;
+ fan_menu.dec = FAN_DEC_TEXT_EN;
fan_menu.state = FAN_TIPS1_TEXT_EN;
//
- filament_menu.title = TITLE_FILAMENT_EN;
- filament_menu.in = FILAMENT_IN_TEXT_EN;
- filament_menu.out = FILAMENT_OUT_TEXT_EN;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
+ filament_menu.title = TITLE_FILAMENT_EN;
+ filament_menu.in = FILAMENT_IN_TEXT_EN;
+ filament_menu.out = FILAMENT_OUT_TEXT_EN;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
//
language_menu.title = TITLE_LANGUAGE_EN;
- language_menu.next = PAGE_DOWN_TEXT_EN;
- language_menu.up = PAGE_UP_TEXT_EN;
+ language_menu.next = PAGE_DOWN_TEXT_EN;
+ language_menu.up = PAGE_UP_TEXT_EN;
//
- printing_menu.title = TITLE_PRINTING_EN;
+ printing_menu.title = TITLE_PRINTING_EN;
printing_menu.option = PRINTING_OPERATION_EN;
- printing_menu.stop = PRINTING_STOP_EN;
- printing_menu.pause = PRINTING_PAUSE_EN;
+ printing_menu.stop = PRINTING_STOP_EN;
+ printing_menu.pause = PRINTING_PAUSE_EN;
printing_menu.resume = PRINTING_RESUME_EN;
//
- operation_menu.title = TITLE_OPERATION_EN;
- operation_menu.pause = PRINTING_PAUSE_EN;
- operation_menu.stop = PRINTING_STOP_EN;
- operation_menu.temp = PRINTING_TEMP_EN;
- operation_menu.fan = FAN_TEXT_EN;
- operation_menu.extr = PRINTING_EXTRUDER_EN;
- operation_menu.speed = PRINTING_CHANGESPEED_EN;
- operation_menu.filament = FILAMENT_TEXT_EN;
- operation_menu.more = PRINTING_MORE_EN;
- operation_menu.move = PRINTING_MOVE_EN;
- operation_menu.auto_off = AUTO_SHUTDOWN_EN;
+ operation_menu.title = TITLE_OPERATION_EN;
+ operation_menu.pause = PRINTING_PAUSE_EN;
+ operation_menu.stop = PRINTING_STOP_EN;
+ operation_menu.temp = PRINTING_TEMP_EN;
+ operation_menu.fan = FAN_TEXT_EN;
+ operation_menu.extr = PRINTING_EXTRUDER_EN;
+ operation_menu.speed = PRINTING_CHANGESPEED_EN;
+ operation_menu.filament = FILAMENT_TEXT_EN;
+ operation_menu.more = PRINTING_MORE_EN;
+ operation_menu.move = PRINTING_MOVE_EN;
+ operation_menu.auto_off = AUTO_SHUTDOWN_EN;
operation_menu.manual_off = MANUAL_SHUTDOWN_EN;
//
- pause_menu.title = TITLE_PAUSE_EN;
- pause_menu.resume = PRINTING_RESUME_EN;
- pause_menu.stop = PRINTING_STOP_EN;
- pause_menu.extrude = PRINTING_EXTRUDER_EN;
- pause_menu.move = PRINTING_MOVE_EN;
+ pause_menu.title = TITLE_PAUSE_EN;
+ pause_menu.resume = PRINTING_RESUME_EN;
+ pause_menu.stop = PRINTING_STOP_EN;
+ pause_menu.extrude = PRINTING_EXTRUDER_EN;
+ pause_menu.move = PRINTING_MOVE_EN;
pause_menu.filament = FILAMENT_TEXT_EN;
- pause_menu.more = PRINTING_MORE_EN;
+ pause_menu.more = PRINTING_MORE_EN;
//
- speed_menu.title = TITLE_CHANGESPEED_EN;
- speed_menu.add = ADD_TEXT_EN;
- speed_menu.dec = DEC_TEXT_EN;
- speed_menu.move = MOVE_SPEED_EN;
- speed_menu.extrude = EXTRUDER_SPEED_EN;
+ speed_menu.title = TITLE_CHANGESPEED_EN;
+ speed_menu.add = ADD_TEXT_EN;
+ speed_menu.dec = DEC_TEXT_EN;
+ speed_menu.move = MOVE_SPEED_EN;
+ speed_menu.extrude = EXTRUDER_SPEED_EN;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_EN;
- speed_menu.move_speed = MOVE_SPEED_STATE_EN;
+ speed_menu.move_speed = MOVE_SPEED_STATE_EN;
//
- printing_more_menu.title = TITLE_MORE_EN;
- printing_more_menu.fan = FAN_TEXT_EN;
+ printing_more_menu.title = TITLE_MORE_EN;
+ printing_more_menu.fan = FAN_TEXT_EN;
printing_more_menu.auto_close = AUTO_SHUTDOWN_EN;
- printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
- printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
- printing_more_menu.temp = PRINTING_TEMP_EN;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
- print_file_dialog_menu.retry = DIALOG_RETRY_EN;
- print_file_dialog_menu.stop = DIALOG_STOP_EN;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
+ printing_more_menu.temp = PRINTING_TEMP_EN;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
+ print_file_dialog_menu.retry = DIALOG_RETRY_EN;
+ print_file_dialog_menu.stop = DIALOG_STOP_EN;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_EN;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_EN;
- zoffset_menu.inc = ZOFFSET_INC_EN;
- zoffset_menu.dec = ZOFFSET_DEC_EN;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_EN;
- pause_msg_menu.changing = MESSEGE_CHANGING_EN;
- pause_msg_menu.unload = MESSEGE_UNLOAD_EN;
- pause_msg_menu.waiting = MESSEGE_WAITING_EN;
- pause_msg_menu.insert = MESSEGE_INSERT_EN;
- pause_msg_menu.load = MESSEGE_LOAD_EN;
- pause_msg_menu.purge = MESSEGE_PURGE_EN;
- pause_msg_menu.resume = MESSEGE_RESUME_EN;
- pause_msg_menu.heat = MESSEGE_HEAT_EN;
- pause_msg_menu.heating = MESSEGE_HEATING_EN;
- pause_msg_menu.option = MESSEGE_OPTION_EN;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_EN;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_EN;
+ zoffset_menu.inc = ZOFFSET_INC_EN;
+ zoffset_menu.dec = ZOFFSET_DEC_EN;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_EN;
+ pause_msg_menu.changing = MESSAGE_CHANGING_EN;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_EN;
+ pause_msg_menu.waiting = MESSAGE_WAITING_EN;
+ pause_msg_menu.insert = MESSAGE_INSERT_EN;
+ pause_msg_menu.load = MESSAGE_LOAD_EN;
+ pause_msg_menu.purge = MESSAGE_PURGE_EN;
+ pause_msg_menu.resume = MESSAGE_RESUME_EN;
+ pause_msg_menu.heat = MESSAGE_HEAT_EN;
+ pause_msg_menu.heating = MESSAGE_HEATING_EN;
+ pause_msg_menu.option = MESSAGE_OPTION_EN;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_EN;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_EN;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_EN;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_EN;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_EN;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_EN;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_EN;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_EN;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_EN;
break;
case LANG_RUSSIAN:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_RU;
- common_menu.text_back = BACK_TEXT_RU;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_RU;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_RU;
- common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
- common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_RU;
+ common_menu.text_back = BACK_TEXT_RU;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_RU;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_RU;
+ common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
+ common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
//
- main_menu.title = TITLE_READYPRINT_RU;
- main_menu.preheat = PREHEAT_TEXT_RU;
- main_menu.move = MOVE_TEXT_RU;
- main_menu.home = HOME_TEXT_RU;
- main_menu.print = PRINT_TEXT_RU;
- main_menu.extrude = EXTRUDE_TEXT_RU;
- main_menu.leveling = LEVELING_TEXT_RU;
+ main_menu.title = TITLE_READYPRINT_RU;
+ main_menu.preheat = PREHEAT_TEXT_RU;
+ main_menu.move = MOVE_TEXT_RU;
+ main_menu.home = HOME_TEXT_RU;
+ main_menu.print = PRINT_TEXT_RU;
+ main_menu.extrude = EXTRUDE_TEXT_RU;
+ main_menu.leveling = LEVELING_TEXT_RU;
main_menu.autoleveling = AUTO_LEVELING_TEXT_RU;
- main_menu.fan = FAN_TEXT_RU;
- main_menu.set = SET_TEXT_RU;
- main_menu.more = MORE_TEXT_RU;
- main_menu.tool = TOOL_TEXT_RU;
- //TOOL
- tool_menu.title = TOOL_TEXT_RU;
- tool_menu.preheat = TOOL_PREHEAT_RU;
- tool_menu.extrude = TOOL_EXTRUDE_RU;
- tool_menu.move = TOOL_MOVE_RU;
- tool_menu.home = TOOL_HOME_RU;
- tool_menu.leveling = TOOL_LEVELING_RU;
+ main_menu.fan = FAN_TEXT_RU;
+ main_menu.set = SET_TEXT_RU;
+ main_menu.more = MORE_TEXT_RU;
+ main_menu.tool = TOOL_TEXT_RU;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_RU;
+ tool_menu.preheat = TOOL_PREHEAT_RU;
+ tool_menu.extrude = TOOL_EXTRUDE_RU;
+ tool_menu.move = TOOL_MOVE_RU;
+ tool_menu.home = TOOL_HOME_RU;
+ tool_menu.leveling = TOOL_LEVELING_RU;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_RU;
- tool_menu.filament = TOOL_FILAMENT_RU;
- tool_menu.more = TOOL_MORE_RU;
+ tool_menu.filament = TOOL_FILAMENT_RU;
+ tool_menu.more = TOOL_MORE_RU;
//
preheat_menu.adjust_title = TITLE_ADJUST_RU;
- preheat_menu.title = TITLE_PREHEAT_RU;
- preheat_menu.add = ADD_TEXT_RU;
- preheat_menu.dec = DEC_TEXT_RU;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_RU;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_RU;
- preheat_menu.hotbed = HEATBED_TEXT_RU;
- preheat_menu.off = CLOSE_TEXT_RU;
+ preheat_menu.title = TITLE_PREHEAT_RU;
+ preheat_menu.add = ADD_TEXT_RU;
+ preheat_menu.dec = DEC_TEXT_RU;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_RU;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_RU;
+ preheat_menu.hotbed = HEATBED_TEXT_RU;
+ preheat_menu.off = CLOSE_TEXT_RU;
//
move_menu.title = MOVE_TEXT_RU;
//
- home_menu.title = TITLE_HOME_RU;
+ home_menu.title = TITLE_HOME_RU;
home_menu.stopmove = HOME_STOPMOVE_RU;
//
- file_menu.title = TITLE_CHOOSEFILE_RU;
- file_menu.page_up = PAGE_UP_TEXT_RU;
- file_menu.page_down = PAGE_DOWN_TEXT_RU;
- file_menu.file_loading = FILE_LOADING_RU;
- file_menu.no_file = NO_FILE_RU;
- file_menu.no_file_and_check = NO_FILE_RU;//NO_FILE_AND_CHECK_RU;
- //
- extrude_menu.title = TITLE_EXTRUDE_RU;
- extrude_menu.in = EXTRUDER_IN_TEXT_RU;
- extrude_menu.out = EXTRUDER_OUT_TEXT_RU;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_RU;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_RU;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_RU;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_RU;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_RU;
+ file_menu.title = TITLE_CHOOSEFILE_RU;
+ file_menu.page_up = PAGE_UP_TEXT_RU;
+ file_menu.page_down = PAGE_DOWN_TEXT_RU;
+ file_menu.file_loading = FILE_LOADING_RU;
+ file_menu.no_file = NO_FILE_RU;
+ file_menu.no_file_and_check = NO_FILE_RU;// NO_FILE_AND_CHECK_RU;
+ //
+ extrude_menu.title = TITLE_EXTRUDE_RU;
+ extrude_menu.in = EXTRUDER_IN_TEXT_RU;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_RU;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_RU;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_RU;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_RU;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_RU;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_RU;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_RU;
//
- leveling_menu.title = TITLE_LEVELING_RU;
+ leveling_menu.title = TITLE_LEVELING_RU;
leveling_menu.position1 = LEVELING_POINT1_TEXT_RU;
leveling_menu.position2 = LEVELING_POINT2_TEXT_RU;
leveling_menu.position3 = LEVELING_POINT3_TEXT_RU;
leveling_menu.position4 = LEVELING_POINT4_TEXT_RU;
leveling_menu.position5 = LEVELING_POINT5_TEXT_RU;
//
- set_menu.title = TITLE_SET_RU;
- set_menu.filesys = FILESYS_TEXT_RU;
- set_menu.wifi = WIFI_TEXT_RU;
- set_menu.about = ABOUT_TEXT_RU;
- set_menu.fan = FAN_TEXT_RU;
- set_menu.filament = FILAMENT_TEXT_RU;
- set_menu.breakpoint = BREAK_POINT_TEXT_RU;
- set_menu.motoroff = MOTOR_OFF_TEXT_RU;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_RU;
- set_menu.language = LANGUAGE_TEXT_RU;
- set_menu.shutdown = SHUTDOWN_TEXT_RU;
- //
- more_menu.title = TITLE_MORE_RU;
- more_menu.zoffset = ZOFFSET_RU;
- //
- filesys_menu.title = TITLE_FILESYS_RU;
- filesys_menu.sd_sys = SD_CARD_TEXT_RU;
+ set_menu.title = TITLE_SET_RU;
+ set_menu.filesys = FILESYS_TEXT_RU;
+ set_menu.wifi = WIFI_TEXT_RU;
+ set_menu.about = ABOUT_TEXT_RU;
+ set_menu.fan = FAN_TEXT_RU;
+ set_menu.filament = FILAMENT_TEXT_RU;
+ set_menu.breakpoint = BREAK_POINT_TEXT_RU;
+ set_menu.motoroff = MOTOR_OFF_TEXT_RU;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_RU;
+ set_menu.language = LANGUAGE_TEXT_RU;
+ set_menu.shutdown = SHUTDOWN_TEXT_RU;
+ set_menu.machine_para = MACHINE_PARA_RU;
+ set_menu.eepromSet = EEPROM_SETTINGS_RU;
+ more_menu.title = TITLE_MORE_RU;
+ more_menu.zoffset = ZOFFSET_RU;
+ //
+ filesys_menu.title = TITLE_FILESYS_RU;
+ filesys_menu.sd_sys = SD_CARD_TEXT_RU;
filesys_menu.usb_sys = U_DISK_TEXT_RU;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_RU;
- //wifi_menu.ip = WIFI_IP_TEXT_RU;
- //wifi_menu.state = WIFI_STA_TEXT_RU;
- wifi_menu.cloud = CLOUD_TEXT_RU;
+ // wifi_menu.key = WIFI_KEY_TEXT_RU;
+ // wifi_menu.ip = WIFI_IP_TEXT_RU;
+ // wifi_menu.state = WIFI_STA_TEXT_RU;
+ wifi_menu.cloud = CLOUD_TEXT_RU;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_RU;
- cloud_menu.title = TITLE_CLOUD_TEXT_RU;
- cloud_menu.bind = CLOUD_BINDED_RU;
- cloud_menu.binded = CLOUD_BINDED_RU;
- cloud_menu.unbind = CLOUD_UNBIND_RU;
- cloud_menu.unbinding = CLOUD_UNBINDED_RU;
+ cloud_menu.title = TITLE_CLOUD_TEXT_RU;
+ cloud_menu.bind = CLOUD_BINDED_RU;
+ cloud_menu.binded = CLOUD_BINDED_RU;
+ cloud_menu.unbind = CLOUD_UNBIND_RU;
+ cloud_menu.unbinding = CLOUD_UNBINDED_RU;
cloud_menu.disconnected = CLOUD_DISCONNECTED_RU;
- cloud_menu.disable = CLOUD_DISABLE_RU;
+ cloud_menu.disable = CLOUD_DISABLE_RU;
//
- about_menu.title = ABOUT_TEXT_RU;
- about_menu.type = ABOUT_TYPE_TEXT_RU;
+ about_menu.title = ABOUT_TEXT_RU;
+ about_menu.type = ABOUT_TYPE_TEXT_RU;
about_menu.version = ABOUT_VERSION_TEXT_RU;
- about_menu.wifi = ABOUT_WIFI_TEXT_RU;
+ about_menu.wifi = ABOUT_WIFI_TEXT_RU;
//
fan_menu.title = FAN_TEXT_RU;
- fan_menu.add = FAN_ADD_TEXT_RU;
- fan_menu.dec = FAN_DEC_TEXT_RU;
+ fan_menu.add = FAN_ADD_TEXT_RU;
+ fan_menu.dec = FAN_DEC_TEXT_RU;
fan_menu.state = FAN_TIPS1_TEXT_RU;
//
- filament_menu.title = TITLE_FILAMENT_RU;
- filament_menu.in = FILAMENT_IN_TEXT_RU;
- filament_menu.out = FILAMENT_OUT_TEXT_RU;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_RU;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_RU;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_RU;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_RU;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU;
+ filament_menu.title = TITLE_FILAMENT_RU;
+ filament_menu.in = FILAMENT_IN_TEXT_RU;
+ filament_menu.out = FILAMENT_OUT_TEXT_RU;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_RU;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_RU;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_RU;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_RU;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_RU;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_RU;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_RU;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU;
//
language_menu.title = LANGUAGE_TEXT_RU;
- language_menu.next = PAGE_DOWN_TEXT_RU;
- language_menu.up = PAGE_UP_TEXT_RU;
+ language_menu.next = PAGE_DOWN_TEXT_RU;
+ language_menu.up = PAGE_UP_TEXT_RU;
//
- printing_menu.title = TITLE_PRINTING_RU;
+ printing_menu.title = TITLE_PRINTING_RU;
printing_menu.option = PRINTING_OPERATION_RU;
- printing_menu.stop = PRINTING_STOP_RU;
- printing_menu.pause = PRINTING_PAUSE_RU;
+ printing_menu.stop = PRINTING_STOP_RU;
+ printing_menu.pause = PRINTING_PAUSE_RU;
printing_menu.resume = PRINTING_RESUME_RU;
//
- operation_menu.title = TITLE_OPERATION_RU;
- operation_menu.pause = PRINTING_PAUSE_RU;
- operation_menu.stop = PRINTING_STOP_RU;
- operation_menu.temp = PRINTING_TEMP_RU;
- operation_menu.fan = FAN_TEXT_RU;
- operation_menu.extr = PRINTING_EXTRUDER_RU;
- operation_menu.speed = PRINTING_CHANGESPEED_RU;
- operation_menu.filament = FILAMENT_TEXT_RU;
- operation_menu.more = PRINTING_MORE_RU;
- operation_menu.move = PRINTING_MOVE_RU;
- operation_menu.auto_off = AUTO_SHUTDOWN_RU;
+ operation_menu.title = TITLE_OPERATION_RU;
+ operation_menu.pause = PRINTING_PAUSE_RU;
+ operation_menu.stop = PRINTING_STOP_RU;
+ operation_menu.temp = PRINTING_TEMP_RU;
+ operation_menu.fan = FAN_TEXT_RU;
+ operation_menu.extr = PRINTING_EXTRUDER_RU;
+ operation_menu.speed = PRINTING_CHANGESPEED_RU;
+ operation_menu.filament = FILAMENT_TEXT_RU;
+ operation_menu.more = PRINTING_MORE_RU;
+ operation_menu.move = PRINTING_MOVE_RU;
+ operation_menu.auto_off = AUTO_SHUTDOWN_RU;
operation_menu.manual_off = MANUAL_SHUTDOWN_RU;
//
- pause_menu.title = TITLE_PAUSE_RU;
- pause_menu.resume = PRINTING_RESUME_RU;
- pause_menu.stop = PRINTING_STOP_RU;
- pause_menu.extrude = PRINTING_EXTRUDER_RU;
- pause_menu.move = PRINTING_MOVE_RU;
+ pause_menu.title = TITLE_PAUSE_RU;
+ pause_menu.resume = PRINTING_RESUME_RU;
+ pause_menu.stop = PRINTING_STOP_RU;
+ pause_menu.extrude = PRINTING_EXTRUDER_RU;
+ pause_menu.move = PRINTING_MOVE_RU;
pause_menu.filament = FILAMENT_TEXT_RU;
- pause_menu.more = PRINTING_MORE_RU;
+ pause_menu.more = PRINTING_MORE_RU;
//
- speed_menu.title = PRINTING_CHANGESPEED_RU;
- speed_menu.add = ADD_TEXT_RU;
- speed_menu.dec = DEC_TEXT_RU;
- speed_menu.move = MOVE_SPEED_RU;
- speed_menu.extrude = EXTRUDER_SPEED_RU;
+ speed_menu.title = PRINTING_CHANGESPEED_RU;
+ speed_menu.add = ADD_TEXT_RU;
+ speed_menu.dec = DEC_TEXT_RU;
+ speed_menu.move = MOVE_SPEED_RU;
+ speed_menu.extrude = EXTRUDER_SPEED_RU;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_RU;
- speed_menu.move_speed = MOVE_SPEED_STATE_RU;
+ speed_menu.move_speed = MOVE_SPEED_STATE_RU;
//
- printing_more_menu.title = TITLE_MORE_RU;
- printing_more_menu.fan = FAN_TEXT_RU;
+ printing_more_menu.title = TITLE_MORE_RU;
+ printing_more_menu.fan = FAN_TEXT_RU;
printing_more_menu.auto_close = AUTO_SHUTDOWN_RU;
- printing_more_menu.manual = MANUAL_SHUTDOWN_RU;
- printing_more_menu.speed = PRINTING_CHANGESPEED_RU;
- printing_more_menu.temp = PRINTING_TEMP_RU;
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_RU;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_RU;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_RU;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_RU;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_RU;
- print_file_dialog_menu.retry = DIALOG_RETRY_RU;
- print_file_dialog_menu.stop = DIALOG_STOP_RU;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_RU;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_RU;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_RU;
+ printing_more_menu.temp = PRINTING_TEMP_RU;
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_RU;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_RU;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_RU;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_RU;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_RU;
+ print_file_dialog_menu.retry = DIALOG_RETRY_RU;
+ print_file_dialog_menu.stop = DIALOG_STOP_RU;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_RU;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_RU;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_RU;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_RU;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_RU;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_RU;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_RU;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_RU;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_RU;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_RU;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_RU;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_RU;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_RU;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_RU;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_RU;
- zoffset_menu.inc = ZOFFSET_INC_RU;
- zoffset_menu.dec = ZOFFSET_DEC_RU;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_RU;
- pause_msg_menu.changing = MESSEGE_CHANGING_RU;
- pause_msg_menu.unload = MESSEGE_UNLOAD_RU;
- pause_msg_menu.waiting = MESSEGE_WAITING_RU;
- pause_msg_menu.insert = MESSEGE_INSERT_RU;
- pause_msg_menu.load = MESSEGE_LOAD_RU;
- pause_msg_menu.purge = MESSEGE_PURGE_RU;
- pause_msg_menu.resume = MESSEGE_RESUME_RU;
- pause_msg_menu.heat = MESSEGE_HEAT_RU;
- pause_msg_menu.heating = MESSEGE_HEATING_RU;
- pause_msg_menu.option = MESSEGE_OPTION_RU;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_RU;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_RU;
+ zoffset_menu.inc = ZOFFSET_INC_RU;
+ zoffset_menu.dec = ZOFFSET_DEC_RU;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_RU;
+ pause_msg_menu.changing = MESSAGE_CHANGING_RU;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_RU;
+ pause_msg_menu.waiting = MESSAGE_WAITING_RU;
+ pause_msg_menu.insert = MESSAGE_INSERT_RU;
+ pause_msg_menu.load = MESSAGE_LOAD_RU;
+ pause_msg_menu.purge = MESSAGE_PURGE_RU;
+ pause_msg_menu.resume = MESSAGE_RESUME_RU;
+ pause_msg_menu.heat = MESSAGE_HEAT_RU;
+ pause_msg_menu.heating = MESSAGE_HEATING_RU;
+ pause_msg_menu.option = MESSAGE_OPTION_RU;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_RU;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_RU;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_RU;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_RU;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_RU;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_RU;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_RU;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_RU;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_RU;
break;
case LANG_SPANISH:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_SP;
- common_menu.text_back = BACK_TEXT_SP;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_SP;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_SP;
- common_menu.print_special_title = PRINTING_SP;
- common_menu.pause_special_title = PRINTING_PAUSAR_SP;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_SP;
+ common_menu.text_back = BACK_TEXT_SP;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_SP;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_SP;
+ common_menu.print_special_title = PRINTING_SP;
+ common_menu.pause_special_title = PRINTING_PAUSAR_SP;
common_menu.operate_special_title = PRINTING_AJUSTES_SP;
//
- main_menu.title = TITLE_READYPRINT_SP;
- main_menu.preheat = PREHEAT_TEXT_SP;
- main_menu.move = MOVE_TEXT_SP;
- main_menu.home = HOME_TEXT_SP;
- main_menu.print = PRINT_TEXT_SP;
- main_menu.extrude = EXTRUDE_TEXT_SP;
- main_menu.leveling = LEVELING_TEXT_SP;
+ main_menu.title = TITLE_READYPRINT_SP;
+ main_menu.preheat = PREHEAT_TEXT_SP;
+ main_menu.move = MOVE_TEXT_SP;
+ main_menu.home = HOME_TEXT_SP;
+ main_menu.print = PRINT_TEXT_SP;
+ main_menu.extrude = EXTRUDE_TEXT_SP;
+ main_menu.leveling = LEVELING_TEXT_SP;
main_menu.autoleveling = AUTO_LEVELING_TEXT_SP;
- main_menu.fan = FAN_TEXT_SP;
- main_menu.set = SET_TEXT_SP;
- main_menu.more = MORE_TEXT_SP;
- main_menu.tool = TOOL_TEXT_SP;
- //TOOL
- tool_menu.title = TOOL_TEXT_SP;
- tool_menu.preheat = TOOL_PREHEAT_SP;
- tool_menu.extrude = TOOL_EXTRUDE_SP;
- tool_menu.move = TOOL_MOVE_SP;
- tool_menu.home = TOOL_HOME_SP;
- tool_menu.leveling = TOOL_LEVELING_SP;
+ main_menu.fan = FAN_TEXT_SP;
+ main_menu.set = SET_TEXT_SP;
+ main_menu.more = MORE_TEXT_SP;
+ main_menu.tool = TOOL_TEXT_SP;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_SP;
+ tool_menu.preheat = TOOL_PREHEAT_SP;
+ tool_menu.extrude = TOOL_EXTRUDE_SP;
+ tool_menu.move = TOOL_MOVE_SP;
+ tool_menu.home = TOOL_HOME_SP;
+ tool_menu.leveling = TOOL_LEVELING_SP;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_SP;
- tool_menu.filament = TOOL_FILAMENT_SP;
- tool_menu.more = TOOL_MORE_SP;
+ tool_menu.filament = TOOL_FILAMENT_SP;
+ tool_menu.more = TOOL_MORE_SP;
//
preheat_menu.adjust_title = TITLE_ADJUST_SP;
- preheat_menu.title = TITLE_PREHEAT_SP;
- preheat_menu.add = ADD_TEXT_SP;
- preheat_menu.dec = DEC_TEXT_SP;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_SP;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_SP;
- preheat_menu.hotbed = HEATBED_TEXT_SP;
- preheat_menu.off = CLOSE_TEXT_SP;
+ preheat_menu.title = TITLE_PREHEAT_SP;
+ preheat_menu.add = ADD_TEXT_SP;
+ preheat_menu.dec = DEC_TEXT_SP;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_SP;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_SP;
+ preheat_menu.hotbed = HEATBED_TEXT_SP;
+ preheat_menu.off = CLOSE_TEXT_SP;
//
move_menu.title = MOVE_TEXT_SP;
//
- home_menu.title = TITLE_HOME_SP;
- home_menu.home_x = HOME_X_TEXT_SP;
- home_menu.home_y = HOME_Y_TEXT_SP;
- home_menu.home_z = HOME_Z_TEXT_SP;
+ home_menu.title = TITLE_HOME_SP;
+ home_menu.home_x = HOME_X_TEXT_SP;
+ home_menu.home_y = HOME_Y_TEXT_SP;
+ home_menu.home_z = HOME_Z_TEXT_SP;
home_menu.home_all = HOME_ALL_TEXT_SP;
home_menu.stopmove = HOME_STOPMOVE_SP;
//
- file_menu.title = TITLE_CHOOSEFILE_SP;
- file_menu.page_up = PAGE_UP_TEXT_SP;
- file_menu.page_down = PAGE_DOWN_TEXT_SP;
- file_menu.file_loading = FILE_LOADING_SP;
- file_menu.no_file = NO_FILE_SP;
- file_menu.no_file_and_check = NO_FILE_SP;//NO_FILE_AND_CHECK_SP;
- //
- extrude_menu.title = TITLE_EXTRUDE_SP;
- extrude_menu.in = EXTRUDER_IN_TEXT_SP;
- extrude_menu.out = EXTRUDER_OUT_TEXT_SP;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_SP;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_SP;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_SP;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_SP;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_SP;
+ file_menu.title = TITLE_CHOOSEFILE_SP;
+ file_menu.page_up = PAGE_UP_TEXT_SP;
+ file_menu.page_down = PAGE_DOWN_TEXT_SP;
+ file_menu.file_loading = FILE_LOADING_SP;
+ file_menu.no_file = NO_FILE_SP;
+ file_menu.no_file_and_check = NO_FILE_SP;// NO_FILE_AND_CHECK_SP;
+ //
+ extrude_menu.title = TITLE_EXTRUDE_SP;
+ extrude_menu.in = EXTRUDER_IN_TEXT_SP;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_SP;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_SP;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_SP;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_SP;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_SP;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_SP;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_SP;
//
- leveling_menu.title = TITLE_LEVELING_SP;
+ leveling_menu.title = TITLE_LEVELING_SP;
leveling_menu.position1 = LEVELING_POINT1_TEXT_SP;
leveling_menu.position2 = LEVELING_POINT2_TEXT_SP;
leveling_menu.position3 = LEVELING_POINT3_TEXT_SP;
leveling_menu.position4 = LEVELING_POINT4_TEXT_SP;
leveling_menu.position5 = LEVELING_POINT5_TEXT_SP;
//
- set_menu.title = TITLE_SET_SP;
- set_menu.filesys = FILESYS_TEXT_SP;
- set_menu.wifi = WIFI_TEXT_SP;
- set_menu.about = ABOUT_TEXT_SP;
- set_menu.fan = FAN_TEXT_SP;
- set_menu.filament = FILAMENT_TEXT_SP;
- set_menu.breakpoint = BREAK_POINT_TEXT_SP;
- set_menu.motoroff = MOTOR_OFF_TEXT_SP;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_SP;
- set_menu.language = LANGUAGE_TEXT_SP;
- set_menu.shutdown = SHUTDOWN_TEXT_SP;
- //
- more_menu.title = TITLE_MORE_SP;
- more_menu.zoffset = ZOFFSET_SP;
- //
- filesys_menu.title = TITLE_FILESYS_SP;
- filesys_menu.sd_sys = SD_CARD_TEXT_SP;
+ set_menu.title = TITLE_SET_SP;
+ set_menu.filesys = FILESYS_TEXT_SP;
+ set_menu.wifi = WIFI_TEXT_SP;
+ set_menu.about = ABOUT_TEXT_SP;
+ set_menu.fan = FAN_TEXT_SP;
+ set_menu.filament = FILAMENT_TEXT_SP;
+ set_menu.breakpoint = BREAK_POINT_TEXT_SP;
+ set_menu.motoroff = MOTOR_OFF_TEXT_SP;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_SP;
+ set_menu.language = LANGUAGE_TEXT_SP;
+ set_menu.shutdown = SHUTDOWN_TEXT_SP;
+ set_menu.machine_para = MACHINE_PARA_SP;
+ set_menu.eepromSet = EEPROM_SETTINGS_SP;
+ more_menu.title = TITLE_MORE_SP;
+ more_menu.zoffset = ZOFFSET_SP;
+ //
+ filesys_menu.title = TITLE_FILESYS_SP;
+ filesys_menu.sd_sys = SD_CARD_TEXT_SP;
filesys_menu.usb_sys = U_DISK_TEXT_SP;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_SP;
- //wifi_menu.ip = WIFI_IP_TEXT_SP;
- //wifi_menu.state = WIFI_STA_TEXT_SP;
- wifi_menu.cloud = CLOUD_TEXT_SP;
+ // wifi_menu.key = WIFI_KEY_TEXT_SP;
+ // wifi_menu.ip = WIFI_IP_TEXT_SP;
+ // wifi_menu.state = WIFI_STA_TEXT_SP;
+ wifi_menu.cloud = CLOUD_TEXT_SP;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_SP;
- cloud_menu.title = TITLE_CLOUD_TEXT_SP;
- cloud_menu.bind = CLOUD_BINDED_SP;
- cloud_menu.binded = CLOUD_BINDED_SP;
- cloud_menu.unbind = CLOUD_UNBIND_SP;
- cloud_menu.unbinding = CLOUD_UNBINDED_SP;
+ cloud_menu.title = TITLE_CLOUD_TEXT_SP;
+ cloud_menu.bind = CLOUD_BINDED_SP;
+ cloud_menu.binded = CLOUD_BINDED_SP;
+ cloud_menu.unbind = CLOUD_UNBIND_SP;
+ cloud_menu.unbinding = CLOUD_UNBINDED_SP;
cloud_menu.disconnected = CLOUD_DISCONNECTED_SP;
- cloud_menu.disable = CLOUD_DISABLE_SP;
+ cloud_menu.disable = CLOUD_DISABLE_SP;
//
- about_menu.title = ABOUT_TEXT_SP;
- about_menu.type = ABOUT_TYPE_TEXT_SP;
+ about_menu.title = ABOUT_TEXT_SP;
+ about_menu.type = ABOUT_TYPE_TEXT_SP;
about_menu.version = ABOUT_VERSION_TEXT_SP;
- about_menu.wifi = ABOUT_WIFI_TEXT_SP;
+ about_menu.wifi = ABOUT_WIFI_TEXT_SP;
//
fan_menu.title = FAN_TEXT_SP;
- fan_menu.add = FAN_ADD_TEXT_SP;
- fan_menu.dec = FAN_DEC_TEXT_SP;
+ fan_menu.add = FAN_ADD_TEXT_SP;
+ fan_menu.dec = FAN_DEC_TEXT_SP;
fan_menu.state = FAN_TIPS1_TEXT_SP;
//
- filament_menu.title = TITLE_FILAMENT_SP;
- filament_menu.in = FILAMENT_IN_TEXT_SP;
- filament_menu.out = FILAMENT_OUT_TEXT_SP;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_SP;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_SP;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_SP;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_SP;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP;
+ filament_menu.title = TITLE_FILAMENT_SP;
+ filament_menu.in = FILAMENT_IN_TEXT_SP;
+ filament_menu.out = FILAMENT_OUT_TEXT_SP;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_SP;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_SP;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_SP;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_SP;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_SP;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_SP;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_SP;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP;
//
language_menu.title = LANGUAGE_TEXT_SP;
- language_menu.next = PAGE_DOWN_TEXT_SP;
- language_menu.up = PAGE_UP_TEXT_SP;
+ language_menu.next = PAGE_DOWN_TEXT_SP;
+ language_menu.up = PAGE_UP_TEXT_SP;
//
- printing_menu.title = TITLE_PRINTING_SP;
+ printing_menu.title = TITLE_PRINTING_SP;
printing_menu.option = PRINTING_OPERATION_SP;
- printing_menu.stop = PRINTING_STOP_SP;
- printing_menu.pause = PRINTING_PAUSE_SP;
+ printing_menu.stop = PRINTING_STOP_SP;
+ printing_menu.pause = PRINTING_PAUSE_SP;
printing_menu.resume = PRINTING_RESUME_SP;
//
- operation_menu.title = TITLE_OPERATION_SP;
- operation_menu.pause = PRINTING_PAUSE_SP;
- operation_menu.stop = PRINTING_STOP_SP;
- operation_menu.temp = PRINTING_TEMP_SP;
- operation_menu.fan = FAN_TEXT_SP;
- operation_menu.extr = PRINTING_EXTRUDER_SP;
- operation_menu.speed = PRINTING_CHANGESPEED_SP;
- operation_menu.filament = FILAMENT_TEXT_SP;
- operation_menu.more = PRINTING_MORE_SP;
- operation_menu.move = PRINTING_MOVE_SP;
- operation_menu.auto_off = AUTO_SHUTDOWN_SP;
+ operation_menu.title = TITLE_OPERATION_SP;
+ operation_menu.pause = PRINTING_PAUSE_SP;
+ operation_menu.stop = PRINTING_STOP_SP;
+ operation_menu.temp = PRINTING_TEMP_SP;
+ operation_menu.fan = FAN_TEXT_SP;
+ operation_menu.extr = PRINTING_EXTRUDER_SP;
+ operation_menu.speed = PRINTING_CHANGESPEED_SP;
+ operation_menu.filament = FILAMENT_TEXT_SP;
+ operation_menu.more = PRINTING_MORE_SP;
+ operation_menu.move = PRINTING_MOVE_SP;
+ operation_menu.auto_off = AUTO_SHUTDOWN_SP;
operation_menu.manual_off = MANUAL_SHUTDOWN_SP;
//
- pause_menu.title = TITLE_PAUSE_RU;
- pause_menu.resume = PRINTING_RESUME_SP;
- pause_menu.stop = PRINTING_STOP_SP;
- pause_menu.extrude = PRINTING_EXTRUDER_SP;
- pause_menu.move = PRINTING_MOVE_SP;
+ pause_menu.title = TITLE_PAUSE_RU;
+ pause_menu.resume = PRINTING_RESUME_SP;
+ pause_menu.stop = PRINTING_STOP_SP;
+ pause_menu.extrude = PRINTING_EXTRUDER_SP;
+ pause_menu.move = PRINTING_MOVE_SP;
pause_menu.filament = FILAMENT_TEXT_SP;
- pause_menu.more = PRINTING_MORE_SP;
+ pause_menu.more = PRINTING_MORE_SP;
//
- speed_menu.title = PRINTING_CHANGESPEED_SP;
- speed_menu.add = ADD_TEXT_SP;
- speed_menu.dec = DEC_TEXT_SP;
- speed_menu.move = MOVE_SPEED_SP;
- speed_menu.extrude = EXTRUDER_SPEED_SP;
+ speed_menu.title = PRINTING_CHANGESPEED_SP;
+ speed_menu.add = ADD_TEXT_SP;
+ speed_menu.dec = DEC_TEXT_SP;
+ speed_menu.move = MOVE_SPEED_SP;
+ speed_menu.extrude = EXTRUDER_SPEED_SP;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_SP;
- speed_menu.move_speed = MOVE_SPEED_STATE_SP;
+ speed_menu.move_speed = MOVE_SPEED_STATE_SP;
//
- printing_more_menu.title = TITLE_MORE_SP;
- printing_more_menu.fan = FAN_TEXT_SP;
+ printing_more_menu.title = TITLE_MORE_SP;
+ printing_more_menu.fan = FAN_TEXT_SP;
printing_more_menu.auto_close = AUTO_SHUTDOWN_SP;
- printing_more_menu.manual = MANUAL_SHUTDOWN_SP;
- printing_more_menu.speed = PRINTING_CHANGESPEED_SP;
- printing_more_menu.temp = PRINTING_TEMP_SP;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_SP;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_SP;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_SP;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_SP;
- print_file_dialog_menu.retry = DIALOG_RETRY_SP;
- print_file_dialog_menu.stop = DIALOG_STOP_SP;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_SP;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_SP;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_SP;
+ printing_more_menu.temp = PRINTING_TEMP_SP;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_SP;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_SP;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_SP;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_SP;
+ print_file_dialog_menu.retry = DIALOG_RETRY_SP;
+ print_file_dialog_menu.stop = DIALOG_STOP_SP;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_SP;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_SP;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_SP;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_SP;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_SP;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_SP;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_SP;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_SP;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_SP;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_SP;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_SP;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_SP;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_SP;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_SP;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_SP;
- zoffset_menu.inc = ZOFFSET_INC_SP;
- zoffset_menu.dec = ZOFFSET_DEC_SP;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_SP;
- pause_msg_menu.changing = MESSEGE_CHANGING_SP;
- pause_msg_menu.unload = MESSEGE_UNLOAD_SP;
- pause_msg_menu.waiting = MESSEGE_WAITING_SP;
- pause_msg_menu.insert = MESSEGE_INSERT_SP;
- pause_msg_menu.load = MESSEGE_LOAD_SP;
- pause_msg_menu.purge = MESSEGE_PURGE_SP;
- pause_msg_menu.resume = MESSEGE_RESUME_SP;
- pause_msg_menu.heat = MESSEGE_HEAT_SP;
- pause_msg_menu.heating = MESSEGE_HEATING_SP;
- pause_msg_menu.option = MESSEGE_OPTION_SP;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_SP;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_SP;
+ zoffset_menu.inc = ZOFFSET_INC_SP;
+ zoffset_menu.dec = ZOFFSET_DEC_SP;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_SP;
+ pause_msg_menu.changing = MESSAGE_CHANGING_SP;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_SP;
+ pause_msg_menu.waiting = MESSAGE_WAITING_SP;
+ pause_msg_menu.insert = MESSAGE_INSERT_SP;
+ pause_msg_menu.load = MESSAGE_LOAD_SP;
+ pause_msg_menu.purge = MESSAGE_PURGE_SP;
+ pause_msg_menu.resume = MESSAGE_RESUME_SP;
+ pause_msg_menu.heat = MESSAGE_HEAT_SP;
+ pause_msg_menu.heating = MESSAGE_HEATING_SP;
+ pause_msg_menu.option = MESSAGE_OPTION_SP;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_SP;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_SP;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_SP;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_SP;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_SP;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_SP;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_SP;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_SP;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_SP;
break;
- #endif
+ #endif // if 1
case LANG_FRENCH:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_FR;
- common_menu.text_back = BACK_TEXT_FR;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_FR;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_FR;
- common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
- common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_FR;
+ common_menu.text_back = BACK_TEXT_FR;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_FR;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_FR;
+ common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
+ common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
//
- main_menu.title = TITLE_READYPRINT_FR;
- main_menu.preheat = PREHEAT_TEXT_FR;
- main_menu.move = MOVE_TEXT_FR;
- main_menu.home = HOME_TEXT_FR;
- main_menu.print = PRINT_TEXT_FR;
- main_menu.extrude = EXTRUDE_TEXT_FR;
- main_menu.leveling = LEVELING_TEXT_FR;
+ main_menu.title = TITLE_READYPRINT_FR;
+ main_menu.preheat = PREHEAT_TEXT_FR;
+ main_menu.move = MOVE_TEXT_FR;
+ main_menu.home = HOME_TEXT_FR;
+ main_menu.print = PRINT_TEXT_FR;
+ main_menu.extrude = EXTRUDE_TEXT_FR;
+ main_menu.leveling = LEVELING_TEXT_FR;
main_menu.autoleveling = AUTO_LEVELING_TEXT_FR;
- main_menu.fan = FAN_TEXT_FR;
- main_menu.set = SET_TEXT_FR;
- main_menu.more = MORE_TEXT_FR;
- main_menu.tool = TOOL_TEXT_FR;
- //TOOL
- tool_menu.title = TOOL_TEXT_FR;
- tool_menu.preheat = TOOL_PREHEAT_FR;
- tool_menu.extrude = TOOL_EXTRUDE_FR;
- tool_menu.move = TOOL_MOVE_FR;
- tool_menu.home = TOOL_HOME_FR;
- tool_menu.leveling = TOOL_LEVELING_FR;
+ main_menu.fan = FAN_TEXT_FR;
+ main_menu.set = SET_TEXT_FR;
+ main_menu.more = MORE_TEXT_FR;
+ main_menu.tool = TOOL_TEXT_FR;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_FR;
+ tool_menu.preheat = TOOL_PREHEAT_FR;
+ tool_menu.extrude = TOOL_EXTRUDE_FR;
+ tool_menu.move = TOOL_MOVE_FR;
+ tool_menu.home = TOOL_HOME_FR;
+ tool_menu.leveling = TOOL_LEVELING_FR;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_FR;
- tool_menu.filament = TOOL_FILAMENT_FR;
- tool_menu.more = TOOL_MORE_FR;
+ tool_menu.filament = TOOL_FILAMENT_FR;
+ tool_menu.more = TOOL_MORE_FR;
//
preheat_menu.adjust_title = TITLE_ADJUST_FR;
- preheat_menu.title = TITLE_PREHEAT_FR;
- preheat_menu.add = ADD_TEXT_FR;
- preheat_menu.dec = DEC_TEXT_FR;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_FR;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_FR;
- preheat_menu.hotbed = HEATBED_TEXT_FR;
- preheat_menu.off = CLOSE_TEXT_FR;
+ preheat_menu.title = TITLE_PREHEAT_FR;
+ preheat_menu.add = ADD_TEXT_FR;
+ preheat_menu.dec = DEC_TEXT_FR;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_FR;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_FR;
+ preheat_menu.hotbed = HEATBED_TEXT_FR;
+ preheat_menu.off = CLOSE_TEXT_FR;
//
move_menu.title = MOVE_TEXT_FR;
//
- home_menu.title = TITLE_HOME_FR;
+ home_menu.title = TITLE_HOME_FR;
home_menu.stopmove = HOME_STOPMOVE_FR;
//
- file_menu.title = TITLE_CHOOSEFILE_FR;
- file_menu.page_up = PAGE_UP_TEXT_FR;
+ file_menu.title = TITLE_CHOOSEFILE_FR;
+ file_menu.page_up = PAGE_UP_TEXT_FR;
file_menu.page_down = PAGE_DOWN_TEXT_FR;
//
- extrude_menu.title = TITLE_EXTRUDE_FR;
- extrude_menu.in = EXTRUDER_IN_TEXT_FR;
- extrude_menu.out = EXTRUDER_OUT_TEXT_FR;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_FR;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_FR;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_FR;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_FR;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_FR;
+ extrude_menu.title = TITLE_EXTRUDE_FR;
+ extrude_menu.in = EXTRUDER_IN_TEXT_FR;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_FR;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_FR;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_FR;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_FR;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_FR;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_FR;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_FR;
//
- leveling_menu.title = TITLE_LEVELING_FR;
+ leveling_menu.title = TITLE_LEVELING_FR;
leveling_menu.position1 = LEVELING_POINT1_TEXT_FR;
leveling_menu.position2 = LEVELING_POINT2_TEXT_FR;
leveling_menu.position3 = LEVELING_POINT3_TEXT_FR;
leveling_menu.position4 = LEVELING_POINT4_TEXT_FR;
leveling_menu.position5 = LEVELING_POINT5_TEXT_FR;
//
- set_menu.title = TITLE_SET_FR;
- set_menu.filesys = FILESYS_TEXT_FR;
- set_menu.wifi = WIFI_TEXT_FR;
- set_menu.about = ABOUT_TEXT_FR;
- set_menu.fan = FAN_TEXT_FR;
- set_menu.filament = FILAMENT_TEXT_FR;
- set_menu.breakpoint = BREAK_POINT_TEXT_FR;
- set_menu.motoroff = MOTOR_OFF_TEXT_FR;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_FR;
- set_menu.language = LANGUAGE_TEXT_FR;
- set_menu.shutdown = SHUTDOWN_TEXT_FR;
+ set_menu.title = TITLE_SET_FR;
+ set_menu.filesys = FILESYS_TEXT_FR;
+ set_menu.wifi = WIFI_TEXT_FR;
+ set_menu.about = ABOUT_TEXT_FR;
+ set_menu.fan = FAN_TEXT_FR;
+ set_menu.filament = FILAMENT_TEXT_FR;
+ set_menu.breakpoint = BREAK_POINT_TEXT_FR;
+ set_menu.motoroff = MOTOR_OFF_TEXT_FR;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_FR;
+ set_menu.language = LANGUAGE_TEXT_FR;
+ set_menu.shutdown = SHUTDOWN_TEXT_FR;
+ set_menu.machine_para = MACHINE_PARA_FR;
+ set_menu.eepromSet = EEPROM_SETTINGS_FR;
+ more_menu.title = TITLE_MORE_FR;
+ more_menu.zoffset = ZOFFSET_FR;
//
- more_menu.title = TITLE_MORE_FR;
- more_menu.zoffset = ZOFFSET_FR;
- //
- filesys_menu.title = TITLE_FILESYS_FR;
- filesys_menu.sd_sys = SD_CARD_TEXT_FR;
- filesys_menu.usb_sys = U_DISK_TEXT_FR;
- file_menu.file_loading = FILE_LOADING_FR;
- file_menu.no_file = NO_FILE_FR;
- file_menu.no_file_and_check = NO_FILE_FR;//NO_FILE_AND_CHECK_FR;
- //WIFI
+ filesys_menu.title = TITLE_FILESYS_FR;
+ filesys_menu.sd_sys = SD_CARD_TEXT_FR;
+ filesys_menu.usb_sys = U_DISK_TEXT_FR;
+ file_menu.file_loading = FILE_LOADING_FR;
+ file_menu.no_file = NO_FILE_FR;
+ file_menu.no_file_and_check = NO_FILE_FR;// NO_FILE_AND_CHECK_FR;
+ // WIFI
wifi_menu.title = WIFI_NAME_TEXT_FR;
- //wifi_menu.key = WIFI_KEY_TEXT_FR;
- //wifi_menu.ip = WIFI_IP_TEXT_FR;
- //wifi_menu.state = WIFI_STA_TEXT_FR;
- //wifi_menu.cloud = CLOSE_TEXT_FR;
- wifi_menu.cloud = CLOUD_TEXT_FR;
+ // wifi_menu.key = WIFI_KEY_TEXT_FR;
+ // wifi_menu.ip = WIFI_IP_TEXT_FR;
+ // wifi_menu.state = WIFI_STA_TEXT_FR;
+ // wifi_menu.cloud = CLOSE_TEXT_FR;
+ wifi_menu.cloud = CLOUD_TEXT_FR;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_FR;
- cloud_menu.title = TITLE_CLOUD_TEXT_FR;
- cloud_menu.bind = CLOUD_BINDED_FR;
- cloud_menu.binded = CLOUD_BINDED_FR;
- cloud_menu.unbind = CLOUD_UNBIND_FR;
- cloud_menu.unbinding = CLOUD_UNBINDED_FR;
+ cloud_menu.title = TITLE_CLOUD_TEXT_FR;
+ cloud_menu.bind = CLOUD_BINDED_FR;
+ cloud_menu.binded = CLOUD_BINDED_FR;
+ cloud_menu.unbind = CLOUD_UNBIND_FR;
+ cloud_menu.unbinding = CLOUD_UNBINDED_FR;
cloud_menu.disconnected = CLOUD_DISCONNECTED_FR;
- cloud_menu.disable = CLOUD_DISABLE_FR;
+ cloud_menu.disable = CLOUD_DISABLE_FR;
//
- about_menu.title = ABOUT_TEXT_FR;
- about_menu.type = ABOUT_TYPE_TEXT_FR;
+ about_menu.title = ABOUT_TEXT_FR;
+ about_menu.type = ABOUT_TYPE_TEXT_FR;
about_menu.version = ABOUT_VERSION_TEXT_FR;
- about_menu.wifi = ABOUT_WIFI_TEXT_FR;
+ about_menu.wifi = ABOUT_WIFI_TEXT_FR;
//
fan_menu.title = FAN_TEXT_FR;
- fan_menu.add = FAN_ADD_TEXT_FR;
- fan_menu.dec = FAN_DEC_TEXT_FR;
+ fan_menu.add = FAN_ADD_TEXT_FR;
+ fan_menu.dec = FAN_DEC_TEXT_FR;
fan_menu.state = FAN_TIPS1_TEXT_FR;
//
- filament_menu.title = TITLE_FILAMENT_FR;
- filament_menu.in = FILAMENT_IN_TEXT_FR;
- filament_menu.out = FILAMENT_OUT_TEXT_FR;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_FR;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_FR;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_FR;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_FR;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR;
+ filament_menu.title = TITLE_FILAMENT_FR;
+ filament_menu.in = FILAMENT_IN_TEXT_FR;
+ filament_menu.out = FILAMENT_OUT_TEXT_FR;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_FR;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_FR;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_FR;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_FR;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_FR;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_FR;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_FR;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR;
//
language_menu.title = LANGUAGE_TEXT_FR;
//
- printing_menu.title = TITLE_PRINTING_FR;
+ printing_menu.title = TITLE_PRINTING_FR;
printing_menu.option = PRINTING_OPERATION_FR;
- printing_menu.stop = PRINTING_STOP_FR;
- printing_menu.pause = PRINTING_PAUSE_FR;
+ printing_menu.stop = PRINTING_STOP_FR;
+ printing_menu.pause = PRINTING_PAUSE_FR;
printing_menu.resume = PRINTING_RESUME_FR;
//
- operation_menu.title = TITLE_OPERATION_FR;
- operation_menu.pause = PRINTING_PAUSE_FR;
- operation_menu.stop = PRINTING_STOP_FR;
- operation_menu.temp = PRINTING_TEMP_FR;
- operation_menu.fan = FAN_TEXT_FR;
- operation_menu.extr = PRINTING_EXTRUDER_FR;
- operation_menu.speed = PRINTING_CHANGESPEED_FR;
- operation_menu.filament = FILAMENT_TEXT_FR;
- operation_menu.more = PRINTING_MORE_FR;
- operation_menu.move = PRINTING_MOVE_FR;
- operation_menu.auto_off = AUTO_SHUTDOWN_FR;
+ operation_menu.title = TITLE_OPERATION_FR;
+ operation_menu.pause = PRINTING_PAUSE_FR;
+ operation_menu.stop = PRINTING_STOP_FR;
+ operation_menu.temp = PRINTING_TEMP_FR;
+ operation_menu.fan = FAN_TEXT_FR;
+ operation_menu.extr = PRINTING_EXTRUDER_FR;
+ operation_menu.speed = PRINTING_CHANGESPEED_FR;
+ operation_menu.filament = FILAMENT_TEXT_FR;
+ operation_menu.more = PRINTING_MORE_FR;
+ operation_menu.move = PRINTING_MOVE_FR;
+ operation_menu.auto_off = AUTO_SHUTDOWN_FR;
operation_menu.manual_off = MANUAL_SHUTDOWN_FR;
//
- pause_menu.title = TITLE_PAUSE_FR;
- pause_menu.resume = PRINTING_RESUME_FR;
- pause_menu.stop = PRINTING_STOP_FR;
- pause_menu.extrude = PRINTING_EXTRUDER_FR;
- pause_menu.move = PRINTING_MOVE_FR;
+ pause_menu.title = TITLE_PAUSE_FR;
+ pause_menu.resume = PRINTING_RESUME_FR;
+ pause_menu.stop = PRINTING_STOP_FR;
+ pause_menu.extrude = PRINTING_EXTRUDER_FR;
+ pause_menu.move = PRINTING_MOVE_FR;
pause_menu.filament = FILAMENT_TEXT_FR;
- pause_menu.more = PRINTING_MORE_FR;
+ pause_menu.more = PRINTING_MORE_FR;
//
- speed_menu.title = PRINTING_CHANGESPEED_FR;
- speed_menu.add = ADD_TEXT_FR;
- speed_menu.dec = DEC_TEXT_FR;
- speed_menu.move = MOVE_SPEED_FR;
- speed_menu.extrude = EXTRUDER_SPEED_FR;
+ speed_menu.title = PRINTING_CHANGESPEED_FR;
+ speed_menu.add = ADD_TEXT_FR;
+ speed_menu.dec = DEC_TEXT_FR;
+ speed_menu.move = MOVE_SPEED_FR;
+ speed_menu.extrude = EXTRUDER_SPEED_FR;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_FR;
- speed_menu.move_speed = MOVE_SPEED_STATE_FR;
+ speed_menu.move_speed = MOVE_SPEED_STATE_FR;
//
- printing_more_menu.fan = FAN_TEXT_FR;
+ printing_more_menu.fan = FAN_TEXT_FR;
printing_more_menu.auto_close = AUTO_SHUTDOWN_FR;
- printing_more_menu.manual = MANUAL_SHUTDOWN_FR;
- printing_more_menu.speed = PRINTING_CHANGESPEED_FR;
- printing_more_menu.temp = PRINTING_TEMP_FR;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_FR;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_FR;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_FR;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_FR;
- print_file_dialog_menu.retry = DIALOG_RETRY_FR;
- print_file_dialog_menu.stop = DIALOG_STOP_FR;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_FR;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_FR;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_FR;
+ printing_more_menu.temp = PRINTING_TEMP_FR;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_FR;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_FR;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_FR;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_FR;
+ print_file_dialog_menu.retry = DIALOG_RETRY_FR;
+ print_file_dialog_menu.stop = DIALOG_STOP_FR;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_FR;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_FR;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_FR;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_FR;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_FR;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_FR;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_FR;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_FR;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_FR;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_FR;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_FR;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_FR;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_FR;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_FR;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_FR;
- zoffset_menu.inc = ZOFFSET_INC_FR;
- zoffset_menu.dec = ZOFFSET_DEC_FR;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_FR;
- pause_msg_menu.changing = MESSEGE_CHANGING_FR;
- pause_msg_menu.unload = MESSEGE_UNLOAD_FR;
- pause_msg_menu.waiting = MESSEGE_WAITING_FR;
- pause_msg_menu.insert = MESSEGE_INSERT_FR;
- pause_msg_menu.load = MESSEGE_LOAD_FR;
- pause_msg_menu.purge = MESSEGE_PURGE_FR;
- pause_msg_menu.resume = MESSEGE_RESUME_FR;
- pause_msg_menu.heat = MESSEGE_HEAT_FR;
- pause_msg_menu.heating = MESSEGE_HEATING_FR;
- pause_msg_menu.option = MESSEGE_OPTION_FR;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_FR;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_FR;
+ zoffset_menu.inc = ZOFFSET_INC_FR;
+ zoffset_menu.dec = ZOFFSET_DEC_FR;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_FR;
+ pause_msg_menu.changing = MESSAGE_CHANGING_FR;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_FR;
+ pause_msg_menu.waiting = MESSAGE_WAITING_FR;
+ pause_msg_menu.insert = MESSAGE_INSERT_FR;
+ pause_msg_menu.load = MESSAGE_LOAD_FR;
+ pause_msg_menu.purge = MESSAGE_PURGE_FR;
+ pause_msg_menu.resume = MESSAGE_RESUME_FR;
+ pause_msg_menu.heat = MESSAGE_HEAT_FR;
+ pause_msg_menu.heating = MESSAGE_HEATING_FR;
+ pause_msg_menu.option = MESSAGE_OPTION_FR;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_FR;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_FR;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_FR;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_FR;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_FR;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_FR;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_FR;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_FR;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_FR;
break;
case LANG_ITALY:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_IT;
- common_menu.text_back = BACK_TEXT_IT;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_IT;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_IT;
- common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
- common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_IT;
+ common_menu.text_back = BACK_TEXT_IT;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_IT;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_IT;
+ common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
+ common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
//
- main_menu.title = TITLE_READYPRINT_IT;
- main_menu.preheat = PREHEAT_TEXT_IT;
- main_menu.move = MOVE_TEXT_IT;
- main_menu.home = HOME_TEXT_IT;
- main_menu.print = PRINT_TEXT_IT;
- main_menu.extrude = EXTRUDE_TEXT_IT;
- main_menu.leveling = LEVELING_TEXT_IT;
+ main_menu.title = TITLE_READYPRINT_IT;
+ main_menu.preheat = PREHEAT_TEXT_IT;
+ main_menu.move = MOVE_TEXT_IT;
+ main_menu.home = HOME_TEXT_IT;
+ main_menu.print = PRINT_TEXT_IT;
+ main_menu.extrude = EXTRUDE_TEXT_IT;
+ main_menu.leveling = LEVELING_TEXT_IT;
main_menu.autoleveling = AUTO_LEVELING_TEXT_IT;
- main_menu.fan = FAN_TEXT_IT;
- main_menu.set = SET_TEXT_IT;
- main_menu.more = MORE_TEXT_IT;
- main_menu.tool = TOOL_TEXT_IT;
- //TOOL
- tool_menu.title = TOOL_TEXT_IT;
- tool_menu.preheat = TOOL_PREHEAT_IT;
- tool_menu.extrude = TOOL_EXTRUDE_IT;
- tool_menu.move = TOOL_MOVE_IT;
- tool_menu.home = TOOL_HOME_IT;
- tool_menu.leveling = TOOL_LEVELING_IT;
+ main_menu.fan = FAN_TEXT_IT;
+ main_menu.set = SET_TEXT_IT;
+ main_menu.more = MORE_TEXT_IT;
+ main_menu.tool = TOOL_TEXT_IT;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_IT;
+ tool_menu.preheat = TOOL_PREHEAT_IT;
+ tool_menu.extrude = TOOL_EXTRUDE_IT;
+ tool_menu.move = TOOL_MOVE_IT;
+ tool_menu.home = TOOL_HOME_IT;
+ tool_menu.leveling = TOOL_LEVELING_IT;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_IT;
- tool_menu.filament = TOOL_FILAMENT_IT;
- tool_menu.more = TOOL_MORE_IT;
+ tool_menu.filament = TOOL_FILAMENT_IT;
+ tool_menu.more = TOOL_MORE_IT;
//
preheat_menu.adjust_title = TITLE_ADJUST_IT;
- preheat_menu.title = TITLE_PREHEAT_IT;
- preheat_menu.add = ADD_TEXT_IT;
- preheat_menu.dec = DEC_TEXT_IT;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_IT;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_IT;
- preheat_menu.hotbed = HEATBED_TEXT_IT;
- preheat_menu.off = CLOSE_TEXT_IT;
+ preheat_menu.title = TITLE_PREHEAT_IT;
+ preheat_menu.add = ADD_TEXT_IT;
+ preheat_menu.dec = DEC_TEXT_IT;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_IT;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_IT;
+ preheat_menu.hotbed = HEATBED_TEXT_IT;
+ preheat_menu.off = CLOSE_TEXT_IT;
//
move_menu.title = MOVE_TEXT_IT;
//
- home_menu.title = TITLE_HOME_IT;
+ home_menu.title = TITLE_HOME_IT;
home_menu.stopmove = HOME_STOPMOVE_IT;
//
- file_menu.title = TITLE_CHOOSEFILE_IT;
- file_menu.page_up = PAGE_UP_TEXT_IT;
- file_menu.page_down = PAGE_DOWN_TEXT_IT;
- file_menu.file_loading = FILE_LOADING_IT;
- file_menu.no_file = NO_FILE_IT;
- file_menu.no_file_and_check = NO_FILE_IT;//NO_FILE_AND_CHECK_IT;
+ file_menu.title = TITLE_CHOOSEFILE_IT;
+ file_menu.page_up = PAGE_UP_TEXT_IT;
+ file_menu.page_down = PAGE_DOWN_TEXT_IT;
+ file_menu.file_loading = FILE_LOADING_IT;
+ file_menu.no_file = NO_FILE_IT;
+ file_menu.no_file_and_check = NO_FILE_IT;// NO_FILE_AND_CHECK_IT;
//
- extrude_menu.title = TITLE_EXTRUDE_IT;
- extrude_menu.in = EXTRUDER_IN_TEXT_IT;
- extrude_menu.out = EXTRUDER_OUT_TEXT_IT;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_IT;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_IT;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_IT;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_IT;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_IT;
+ extrude_menu.title = TITLE_EXTRUDE_IT;
+ extrude_menu.in = EXTRUDER_IN_TEXT_IT;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_IT;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_IT;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_IT;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_IT;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_IT;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_IT;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_IT;
//
- leveling_menu.title = TITLE_LEVELING_IT;
+ leveling_menu.title = TITLE_LEVELING_IT;
leveling_menu.position1 = LEVELING_POINT1_TEXT_IT;
leveling_menu.position2 = LEVELING_POINT2_TEXT_IT;
leveling_menu.position3 = LEVELING_POINT3_TEXT_IT;
leveling_menu.position4 = LEVELING_POINT4_TEXT_IT;
leveling_menu.position5 = LEVELING_POINT5_TEXT_IT;
//
- set_menu.title = TITLE_SET_IT;
- set_menu.filesys = FILESYS_TEXT_IT;
- set_menu.wifi = WIFI_TEXT_IT;
- set_menu.about = ABOUT_TEXT_IT;
- set_menu.fan = FAN_TEXT_IT;
- set_menu.filament = FILAMENT_TEXT_IT;
- set_menu.breakpoint = BREAK_POINT_TEXT_IT;
- set_menu.motoroff = MOTOR_OFF_TEXT_IT;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_IT;
- set_menu.language = LANGUAGE_TEXT_IT;
- set_menu.shutdown = SHUTDOWN_TEXT_IT;
- //
- more_menu.title = TITLE_MORE_IT;
- more_menu.zoffset = ZOFFSET_IT;
+ set_menu.title = TITLE_SET_IT;
+ set_menu.filesys = FILESYS_TEXT_IT;
+ set_menu.wifi = WIFI_TEXT_IT;
+ set_menu.about = ABOUT_TEXT_IT;
+ set_menu.fan = FAN_TEXT_IT;
+ set_menu.filament = FILAMENT_TEXT_IT;
+ set_menu.breakpoint = BREAK_POINT_TEXT_IT;
+ set_menu.motoroff = MOTOR_OFF_TEXT_IT;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_IT;
+ set_menu.language = LANGUAGE_TEXT_IT;
+ set_menu.shutdown = SHUTDOWN_TEXT_IT;
+ set_menu.machine_para = MACHINE_PARA_IT;
+ set_menu.eepromSet = EEPROM_SETTINGS_IT;
+ more_menu.title = TITLE_MORE_IT;
+ more_menu.zoffset = ZOFFSET_IT;
//
- filesys_menu.title = TITLE_FILESYS_IT;
- filesys_menu.sd_sys = SD_CARD_TEXT_IT;
+ filesys_menu.title = TITLE_FILESYS_IT;
+ filesys_menu.sd_sys = SD_CARD_TEXT_IT;
filesys_menu.usb_sys = U_DISK_TEXT_IT;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_NAME_TEXT_IT;
- //wifi_menu.key = WIFI_KEY_TEXT_IT;
- //wifi_menu.ip = WIFI_IP_TEXT_IT;
- //wifi_menu.state = WIFI_STA_TEXT_IT;
- wifi_menu.cloud = CLOSE_TEXT_IT;
+ // wifi_menu.key = WIFI_KEY_TEXT_IT;
+ // wifi_menu.ip = WIFI_IP_TEXT_IT;
+ // wifi_menu.state = WIFI_STA_TEXT_IT;
+ wifi_menu.cloud = CLOSE_TEXT_IT;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_IT;
- cloud_menu.title = TITLE_CLOUD_TEXT_IT;
- cloud_menu.bind = CLOUD_BINDED_IT;
- cloud_menu.binded = CLOUD_BINDED_IT;
- cloud_menu.unbind = CLOUD_UNBIND_IT;
- cloud_menu.unbinding = CLOUD_UNBINDED_IT;
+ cloud_menu.title = TITLE_CLOUD_TEXT_IT;
+ cloud_menu.bind = CLOUD_BINDED_IT;
+ cloud_menu.binded = CLOUD_BINDED_IT;
+ cloud_menu.unbind = CLOUD_UNBIND_IT;
+ cloud_menu.unbinding = CLOUD_UNBINDED_IT;
cloud_menu.disconnected = CLOUD_DISCONNECTED_IT;
- cloud_menu.disable = CLOUD_DISABLE_IT;
+ cloud_menu.disable = CLOUD_DISABLE_IT;
//
- about_menu.title = ABOUT_TEXT_IT;
- about_menu.type = ABOUT_TYPE_TEXT_IT;
+ about_menu.title = ABOUT_TEXT_IT;
+ about_menu.type = ABOUT_TYPE_TEXT_IT;
about_menu.version = ABOUT_VERSION_TEXT_IT;
- about_menu.wifi = ABOUT_WIFI_TEXT_IT;
+ about_menu.wifi = ABOUT_WIFI_TEXT_IT;
//
fan_menu.title = FAN_TEXT_IT;
- fan_menu.add = FAN_ADD_TEXT_IT;
- fan_menu.dec = FAN_DEC_TEXT_IT;
+ fan_menu.add = FAN_ADD_TEXT_IT;
+ fan_menu.dec = FAN_DEC_TEXT_IT;
fan_menu.state = FAN_TIPS1_TEXT_IT;
//
- filament_menu.title = TITLE_FILAMENT_IT;
- filament_menu.in = FILAMENT_IN_TEXT_IT;
- filament_menu.out = FILAMENT_OUT_TEXT_IT;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_IT;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_IT;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_IT;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_IT;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT;
+ filament_menu.title = TITLE_FILAMENT_IT;
+ filament_menu.in = FILAMENT_IN_TEXT_IT;
+ filament_menu.out = FILAMENT_OUT_TEXT_IT;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_IT;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_IT;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_IT;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_IT;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_IT;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_IT;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT;
//
language_menu.title = LANGUAGE_TEXT_IT;
//
- printing_menu.title = TITLE_PRINTING_IT;
+ printing_menu.title = TITLE_PRINTING_IT;
printing_menu.option = PRINTING_OPERATION_IT;
- printing_menu.stop = PRINTING_STOP_IT;
- printing_menu.pause = PRINTING_PAUSE_IT;
+ printing_menu.stop = PRINTING_STOP_IT;
+ printing_menu.pause = PRINTING_PAUSE_IT;
printing_menu.resume = PRINTING_RESUME_IT;
//
- operation_menu.title = TITLE_OPERATION_IT;
- operation_menu.pause = PRINTING_PAUSE_IT;
- operation_menu.stop = PRINTING_STOP_IT;
- operation_menu.temp = PRINTING_TEMP_IT;
- operation_menu.fan = FAN_TEXT_IT;
- operation_menu.extr = PRINTING_EXTRUDER_IT;
- operation_menu.speed = PRINTING_CHANGESPEED_IT;
- operation_menu.filament = FILAMENT_TEXT_IT;
- operation_menu.more = PRINTING_MORE_IT;
- operation_menu.move = PRINTING_MOVE_IT;
- operation_menu.auto_off = AUTO_SHUTDOWN_IT;
+ operation_menu.title = TITLE_OPERATION_IT;
+ operation_menu.pause = PRINTING_PAUSE_IT;
+ operation_menu.stop = PRINTING_STOP_IT;
+ operation_menu.temp = PRINTING_TEMP_IT;
+ operation_menu.fan = FAN_TEXT_IT;
+ operation_menu.extr = PRINTING_EXTRUDER_IT;
+ operation_menu.speed = PRINTING_CHANGESPEED_IT;
+ operation_menu.filament = FILAMENT_TEXT_IT;
+ operation_menu.more = PRINTING_MORE_IT;
+ operation_menu.move = PRINTING_MOVE_IT;
+ operation_menu.auto_off = AUTO_SHUTDOWN_IT;
operation_menu.manual_off = MANUAL_SHUTDOWN_IT;
//
- pause_menu.title = TITLE_PAUSE_IT;
- pause_menu.resume = PRINTING_RESUME_IT;
- pause_menu.stop = PRINTING_STOP_IT;
- pause_menu.extrude = PRINTING_EXTRUDER_IT;
- pause_menu.move = PRINTING_MOVE_IT;
+ pause_menu.title = TITLE_PAUSE_IT;
+ pause_menu.resume = PRINTING_RESUME_IT;
+ pause_menu.stop = PRINTING_STOP_IT;
+ pause_menu.extrude = PRINTING_EXTRUDER_IT;
+ pause_menu.move = PRINTING_MOVE_IT;
pause_menu.filament = FILAMENT_TEXT_IT;
- pause_menu.more = PRINTING_MORE_IT;
+ pause_menu.more = PRINTING_MORE_IT;
//
- speed_menu.title = PRINTING_CHANGESPEED_IT;
- speed_menu.add = ADD_TEXT_IT;
- speed_menu.dec = DEC_TEXT_IT;
- speed_menu.move = MOVE_SPEED_IT;
- speed_menu.extrude = EXTRUDER_SPEED_IT;
+ speed_menu.title = PRINTING_CHANGESPEED_IT;
+ speed_menu.add = ADD_TEXT_IT;
+ speed_menu.dec = DEC_TEXT_IT;
+ speed_menu.move = MOVE_SPEED_IT;
+ speed_menu.extrude = EXTRUDER_SPEED_IT;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_IT;
- speed_menu.move_speed = MOVE_SPEED_STATE_IT;
+ speed_menu.move_speed = MOVE_SPEED_STATE_IT;
//
- printing_more_menu.fan = FAN_TEXT_IT;
+ printing_more_menu.fan = FAN_TEXT_IT;
printing_more_menu.auto_close = AUTO_SHUTDOWN_IT;
- printing_more_menu.manual = MANUAL_SHUTDOWN_IT;
- printing_more_menu.temp = PRINTING_TEMP_IT;
- printing_more_menu.speed = PRINTING_CHANGESPEED_IT;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_IT;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_IT;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_IT;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_IT;
- print_file_dialog_menu.retry = DIALOG_RETRY_IT;
- print_file_dialog_menu.stop = DIALOG_STOP_IT;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_IT;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_IT;
+ printing_more_menu.temp = PRINTING_TEMP_IT;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_IT;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_IT;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_IT;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_IT;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_IT;
+ print_file_dialog_menu.retry = DIALOG_RETRY_IT;
+ print_file_dialog_menu.stop = DIALOG_STOP_IT;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_IT;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_IT;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_IT;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_IT;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_IT;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_IT;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_IT;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_IT;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_IT;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_IT;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_IT;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_IT;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_IT;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_IT;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_IT;
- zoffset_menu.inc = ZOFFSET_INC_IT;
- zoffset_menu.dec = ZOFFSET_DEC_IT;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_IT;
- pause_msg_menu.changing = MESSEGE_CHANGING_IT;
- pause_msg_menu.unload = MESSEGE_UNLOAD_IT;
- pause_msg_menu.waiting = MESSEGE_WAITING_IT;
- pause_msg_menu.insert = MESSEGE_INSERT_IT;
- pause_msg_menu.load = MESSEGE_LOAD_IT;
- pause_msg_menu.purge = MESSEGE_PURGE_IT;
- pause_msg_menu.resume = MESSEGE_RESUME_IT;
- pause_msg_menu.heat = MESSEGE_HEAT_IT;
- pause_msg_menu.heating = MESSEGE_HEATING_IT;
- pause_msg_menu.option = MESSEGE_OPTION_IT;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_IT;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_IT;
+ zoffset_menu.inc = ZOFFSET_INC_IT;
+ zoffset_menu.dec = ZOFFSET_DEC_IT;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_IT;
+ pause_msg_menu.changing = MESSAGE_CHANGING_IT;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_IT;
+ pause_msg_menu.waiting = MESSAGE_WAITING_IT;
+ pause_msg_menu.insert = MESSAGE_INSERT_IT;
+ pause_msg_menu.load = MESSAGE_LOAD_IT;
+ pause_msg_menu.purge = MESSAGE_PURGE_IT;
+ pause_msg_menu.resume = MESSAGE_RESUME_IT;
+ pause_msg_menu.heat = MESSAGE_HEAT_IT;
+ pause_msg_menu.heating = MESSAGE_HEATING_IT;
+ pause_msg_menu.option = MESSAGE_OPTION_IT;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_IT;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_IT;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_IT;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_IT;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_IT;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_IT;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_IT;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_IT;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_IT;
break;
- #endif
+ #endif // if 1
default:
- common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
- common_menu.text_back = BACK_TEXT_EN;
- common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
- common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
- common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
- common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+ common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
+ common_menu.text_back = BACK_TEXT_EN;
+ common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
+ common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
+ common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
+ common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
//
- main_menu.title = TITLE_READYPRINT_EN;
- main_menu.preheat = PREHEAT_TEXT_EN;
- main_menu.move = MOVE_TEXT_EN;
- main_menu.home = HOME_TEXT_EN;
- main_menu.print = PRINT_TEXT_EN;
- main_menu.extrude = EXTRUDE_TEXT_EN;
- main_menu.leveling = LEVELING_TEXT_EN;
+ main_menu.title = TITLE_READYPRINT_EN;
+ main_menu.preheat = PREHEAT_TEXT_EN;
+ main_menu.move = MOVE_TEXT_EN;
+ main_menu.home = HOME_TEXT_EN;
+ main_menu.print = PRINT_TEXT_EN;
+ main_menu.extrude = EXTRUDE_TEXT_EN;
+ main_menu.leveling = LEVELING_TEXT_EN;
main_menu.autoleveling = AUTO_LEVELING_TEXT_EN;
- main_menu.fan = FAN_TEXT_EN;
- main_menu.set = SET_TEXT_EN;
- main_menu.more = MORE_TEXT_EN;
- main_menu.tool = TOOL_TEXT_EN;
- //TOOL
- tool_menu.title = TOOL_TEXT_EN;
- tool_menu.preheat = TOOL_PREHEAT_EN;
- tool_menu.extrude = TOOL_EXTRUDE_EN;
- tool_menu.move = TOOL_MOVE_EN;
- tool_menu.home = TOOL_HOME_EN;
- tool_menu.leveling = TOOL_LEVELING_EN;
+ main_menu.fan = FAN_TEXT_EN;
+ main_menu.set = SET_TEXT_EN;
+ main_menu.more = MORE_TEXT_EN;
+ main_menu.tool = TOOL_TEXT_EN;
+ // TOOL
+ tool_menu.title = TOOL_TEXT_EN;
+ tool_menu.preheat = TOOL_PREHEAT_EN;
+ tool_menu.extrude = TOOL_EXTRUDE_EN;
+ tool_menu.move = TOOL_MOVE_EN;
+ tool_menu.home = TOOL_HOME_EN;
+ tool_menu.leveling = TOOL_LEVELING_EN;
tool_menu.autoleveling = TOOL_AUTO_LEVELING_EN;
- tool_menu.filament = TOOL_FILAMENT_EN;
- tool_menu.more = TOOL_MORE_EN;
+ tool_menu.filament = TOOL_FILAMENT_EN;
+ tool_menu.more = TOOL_MORE_EN;
//
preheat_menu.adjust_title = TITLE_ADJUST_EN;
- preheat_menu.title = TITLE_PREHEAT_EN;
- preheat_menu.add = ADD_TEXT_EN;
- preheat_menu.dec = DEC_TEXT_EN;
- preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
- preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
- preheat_menu.hotbed = HEATBED_TEXT_EN;
- preheat_menu.off = CLOSE_TEXT_EN;
+ preheat_menu.title = TITLE_PREHEAT_EN;
+ preheat_menu.add = ADD_TEXT_EN;
+ preheat_menu.dec = DEC_TEXT_EN;
+ preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
+ preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
+ preheat_menu.hotbed = HEATBED_TEXT_EN;
+ preheat_menu.off = CLOSE_TEXT_EN;
//
move_menu.title = TITLE_MOVE_EN;
//
- home_menu.title = TITLE_HOME_EN;
+ home_menu.title = TITLE_HOME_EN;
home_menu.stopmove = HOME_STOPMOVE_EN;
//
- file_menu.title = TITLE_CHOOSEFILE_EN;
- file_menu.page_up = PAGE_UP_TEXT_EN;
- file_menu.page_down = PAGE_DOWN_TEXT_EN;
- file_menu.file_loading = FILE_LOADING_EN;
- file_menu.no_file = NO_FILE_EN;
- file_menu.no_file_and_check = NO_FILE_EN;//NO_FILE_AND_CHECK_EN;
+ file_menu.title = TITLE_CHOOSEFILE_EN;
+ file_menu.page_up = PAGE_UP_TEXT_EN;
+ file_menu.page_down = PAGE_DOWN_TEXT_EN;
+ file_menu.file_loading = FILE_LOADING_EN;
+ file_menu.no_file = NO_FILE_EN;
+ file_menu.no_file_and_check = NO_FILE_EN;// NO_FILE_AND_CHECK_EN;
//
- extrude_menu.title = TITLE_EXTRUDE_EN;
- extrude_menu.in = EXTRUDER_IN_TEXT_EN;
- extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
- extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
- extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
- extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
- extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
- extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
+ extrude_menu.title = TITLE_EXTRUDE_EN;
+ extrude_menu.in = EXTRUDER_IN_TEXT_EN;
+ extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
+ extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
+ extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
+ extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
+ extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
+ extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_EN;
//
- leveling_menu.title = TITLE_LEVELING_EN;
+ leveling_menu.title = TITLE_LEVELING_EN;
leveling_menu.position1 = LEVELING_POINT1_TEXT_EN;
leveling_menu.position2 = LEVELING_POINT2_TEXT_EN;
leveling_menu.position3 = LEVELING_POINT3_TEXT_EN;
leveling_menu.position4 = LEVELING_POINT4_TEXT_EN;
leveling_menu.position5 = LEVELING_POINT5_TEXT_EN;
//
- set_menu.title = TITLE_SET_EN;
- set_menu.filesys = FILESYS_TEXT_EN;
- set_menu.wifi = WIFI_TEXT_EN;
- set_menu.about = ABOUT_TEXT_EN;
- set_menu.fan = FAN_TEXT_EN;
- set_menu.filament = FILAMENT_TEXT_EN;
- set_menu.breakpoint = BREAK_POINT_TEXT_EN;
- set_menu.motoroff = MOTOR_OFF_TEXT_EN;
- set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
- set_menu.language = LANGUAGE_TEXT_EN;
- set_menu.shutdown = SHUTDOWN_TEXT_EN;
- //set_menu.machine_para = MACHINE_PARA_EN;
+ set_menu.title = TITLE_SET_EN;
+ set_menu.filesys = FILESYS_TEXT_EN;
+ set_menu.wifi = WIFI_TEXT_EN;
+ set_menu.about = ABOUT_TEXT_EN;
+ set_menu.fan = FAN_TEXT_EN;
+ set_menu.filament = FILAMENT_TEXT_EN;
+ set_menu.breakpoint = BREAK_POINT_TEXT_EN;
+ set_menu.motoroff = MOTOR_OFF_TEXT_EN;
+ set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
+ set_menu.language = LANGUAGE_TEXT_EN;
+ set_menu.shutdown = SHUTDOWN_TEXT_EN;
+ set_menu.machine_para = MACHINE_PARA_EN;
+ set_menu.eepromSet = EEPROM_SETTINGS_EN;
//
- more_menu.title = TITLE_MORE_EN;
+ more_menu.title = TITLE_MORE_EN;
more_menu.zoffset = ZOFFSET_EN;
//
- filesys_menu.title = TITLE_FILESYS_EN;
- filesys_menu.sd_sys = SD_CARD_TEXT_EN;
+ filesys_menu.title = TITLE_FILESYS_EN;
+ filesys_menu.sd_sys = SD_CARD_TEXT_EN;
filesys_menu.usb_sys = U_DISK_TEXT_EN;
- //WIFI
+ // WIFI
wifi_menu.title = WIFI_TEXT;
- //wifi_menu.key = WIFI_KEY_TEXT_EN;
- //wifi_menu.ip = WIFI_IP_TEXT_EN;
- //wifi_menu.state = WIFI_STA_TEXT_EN;
- wifi_menu.cloud = CLOUD_TEXT_EN;
+ // wifi_menu.key = WIFI_KEY_TEXT_EN;
+ // wifi_menu.ip = WIFI_IP_TEXT_EN;
+ // wifi_menu.state = WIFI_STA_TEXT_EN;
+ wifi_menu.cloud = CLOUD_TEXT_EN;
wifi_menu.reconnect = WIFI_RECONNECT_TEXT_EN;
- cloud_menu.title = TITLE_CLOUD_TEXT_EN;
- cloud_menu.bind = CLOUD_BINDED_EN;
- cloud_menu.binded = CLOUD_BINDED_EN;
- cloud_menu.unbind = CLOUD_UNBIND_EN;
- cloud_menu.unbinding = CLOUD_UNBINDED_EN;
+ cloud_menu.title = TITLE_CLOUD_TEXT_EN;
+ cloud_menu.bind = CLOUD_BINDED_EN;
+ cloud_menu.binded = CLOUD_BINDED_EN;
+ cloud_menu.unbind = CLOUD_UNBIND_EN;
+ cloud_menu.unbinding = CLOUD_UNBINDED_EN;
cloud_menu.disconnected = CLOUD_DISCONNECTED_EN;
- cloud_menu.disable = CLOUD_DISABLE_EN;
+ cloud_menu.disable = CLOUD_DISABLE_EN;
//
- about_menu.title = TITLE_ABOUT_EN;
- about_menu.type = ABOUT_TYPE_TEXT_EN;
+ about_menu.title = TITLE_ABOUT_EN;
+ about_menu.type = ABOUT_TYPE_TEXT_EN;
about_menu.version = ABOUT_VERSION_TEXT_EN;
- about_menu.wifi = ABOUT_WIFI_TEXT_EN;
+ about_menu.wifi = ABOUT_WIFI_TEXT_EN;
//
fan_menu.title = TITLE_FAN_EN;
- fan_menu.add = FAN_ADD_TEXT_EN;
- fan_menu.dec = FAN_DEC_TEXT_EN;
+ fan_menu.add = FAN_ADD_TEXT_EN;
+ fan_menu.dec = FAN_DEC_TEXT_EN;
fan_menu.state = FAN_TIPS1_TEXT_EN;
//
- filament_menu.title = TITLE_FILAMENT_EN;
- filament_menu.in = FILAMENT_IN_TEXT_EN;
- filament_menu.out = FILAMENT_OUT_TEXT_EN;
- filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
- filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
- filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
- filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
- filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
- filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
- filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
- filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
+ filament_menu.title = TITLE_FILAMENT_EN;
+ filament_menu.in = FILAMENT_IN_TEXT_EN;
+ filament_menu.out = FILAMENT_OUT_TEXT_EN;
+ filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
+ filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
+ filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
+ filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
+ filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
+ filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
+ filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
+ filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN;
- filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
- filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
+ filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
+ filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
//
language_menu.title = TITLE_LANGUAGE_EN;
- language_menu.next = PAGE_DOWN_TEXT_EN;
- language_menu.up = PAGE_UP_TEXT_EN;
+ language_menu.next = PAGE_DOWN_TEXT_EN;
+ language_menu.up = PAGE_UP_TEXT_EN;
//
- printing_menu.title = TITLE_PRINTING_EN;
+ printing_menu.title = TITLE_PRINTING_EN;
printing_menu.option = PRINTING_OPERATION_EN;
- printing_menu.stop = PRINTING_STOP_EN;
- printing_menu.pause = PRINTING_PAUSE_EN;
+ printing_menu.stop = PRINTING_STOP_EN;
+ printing_menu.pause = PRINTING_PAUSE_EN;
printing_menu.resume = PRINTING_RESUME_EN;
//
- operation_menu.title = TITLE_OPERATION_EN;
- operation_menu.pause = PRINTING_PAUSE_EN;
- operation_menu.stop = PRINTING_STOP_EN;
- operation_menu.temp = PRINTING_TEMP_EN;
- operation_menu.fan = FAN_TEXT_EN;
- operation_menu.extr = PRINTING_EXTRUDER_EN;
- operation_menu.speed = PRINTING_CHANGESPEED_EN;
- operation_menu.filament = FILAMENT_TEXT_EN;
- operation_menu.more = PRINTING_MORE_EN;
- operation_menu.move = PRINTING_MOVE_EN;
- operation_menu.auto_off = AUTO_SHUTDOWN_EN;
+ operation_menu.title = TITLE_OPERATION_EN;
+ operation_menu.pause = PRINTING_PAUSE_EN;
+ operation_menu.stop = PRINTING_STOP_EN;
+ operation_menu.temp = PRINTING_TEMP_EN;
+ operation_menu.fan = FAN_TEXT_EN;
+ operation_menu.extr = PRINTING_EXTRUDER_EN;
+ operation_menu.speed = PRINTING_CHANGESPEED_EN;
+ operation_menu.filament = FILAMENT_TEXT_EN;
+ operation_menu.more = PRINTING_MORE_EN;
+ operation_menu.move = PRINTING_MOVE_EN;
+ operation_menu.auto_off = AUTO_SHUTDOWN_EN;
operation_menu.manual_off = MANUAL_SHUTDOWN_EN;
//
- pause_menu.title = TITLE_PAUSE_EN;
- pause_menu.resume = PRINTING_RESUME_EN;
- pause_menu.stop = PRINTING_STOP_EN;
- pause_menu.extrude = PRINTING_EXTRUDER_EN;
- pause_menu.move = PRINTING_MOVE_EN;
+ pause_menu.title = TITLE_PAUSE_EN;
+ pause_menu.resume = PRINTING_RESUME_EN;
+ pause_menu.stop = PRINTING_STOP_EN;
+ pause_menu.extrude = PRINTING_EXTRUDER_EN;
+ pause_menu.move = PRINTING_MOVE_EN;
pause_menu.filament = FILAMENT_TEXT_EN;
- pause_menu.more = PRINTING_MORE_EN;
+ pause_menu.more = PRINTING_MORE_EN;
//
- speed_menu.title = TITLE_CHANGESPEED_EN;
- speed_menu.add = ADD_TEXT_EN;
- speed_menu.dec = DEC_TEXT_EN;
- speed_menu.move = MOVE_SPEED_EN;
- speed_menu.extrude = EXTRUDER_SPEED_EN;
+ speed_menu.title = TITLE_CHANGESPEED_EN;
+ speed_menu.add = ADD_TEXT_EN;
+ speed_menu.dec = DEC_TEXT_EN;
+ speed_menu.move = MOVE_SPEED_EN;
+ speed_menu.extrude = EXTRUDER_SPEED_EN;
speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_EN;
- speed_menu.move_speed = MOVE_SPEED_STATE_EN;
+ speed_menu.move_speed = MOVE_SPEED_STATE_EN;
//
- printing_more_menu.title = TITLE_MORE_EN;
- printing_more_menu.fan = FAN_TEXT_EN;
+ printing_more_menu.title = TITLE_MORE_EN;
+ printing_more_menu.fan = FAN_TEXT_EN;
printing_more_menu.auto_close = AUTO_SHUTDOWN_EN;
- printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
- printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
- printing_more_menu.temp = PRINTING_TEMP_EN;
-
- //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
- print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
- print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
- print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
- print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
- print_file_dialog_menu.retry = DIALOG_RETRY_EN;
- print_file_dialog_menu.stop = DIALOG_STOP_EN;
- print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
+ printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
+ printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
+ printing_more_menu.temp = PRINTING_TEMP_EN;
+
+ // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
+ print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
+ print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
+ print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
+ print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
+ print_file_dialog_menu.retry = DIALOG_RETRY_EN;
+ print_file_dialog_menu.stop = DIALOG_STOP_EN;
+ print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_EN;
- print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
- print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
- print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
- print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
- print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
- print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
- //ZOFFSET
+ print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
+ print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
+ print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
+ print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
+ print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
+ print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
+ // ZOFFSET
zoffset_menu.title = TITLE_ZOFFSET_EN;
- zoffset_menu.inc = ZOFFSET_INC_EN;
- zoffset_menu.dec = ZOFFSET_DEC_EN;
-
- pause_msg_menu.pausing = MESSEGE_PAUSING_EN;
- pause_msg_menu.changing = MESSEGE_CHANGING_EN;
- pause_msg_menu.unload = MESSEGE_UNLOAD_EN;
- pause_msg_menu.waiting = MESSEGE_WAITING_EN;
- pause_msg_menu.insert = MESSEGE_INSERT_EN;
- pause_msg_menu.load = MESSEGE_LOAD_EN;
- pause_msg_menu.purge = MESSEGE_PURGE_EN;
- pause_msg_menu.resume = MESSEGE_RESUME_EN;
- pause_msg_menu.heat = MESSEGE_HEAT_EN;
- pause_msg_menu.heating = MESSEGE_HEATING_EN;
- pause_msg_menu.option = MESSEGE_OPTION_EN;
- pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_EN;
- pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_EN;
+ zoffset_menu.inc = ZOFFSET_INC_EN;
+ zoffset_menu.dec = ZOFFSET_DEC_EN;
+
+ pause_msg_menu.pausing = MESSAGE_PAUSING_EN;
+ pause_msg_menu.changing = MESSAGE_CHANGING_EN;
+ pause_msg_menu.unload = MESSAGE_UNLOAD_EN;
+ pause_msg_menu.waiting = MESSAGE_WAITING_EN;
+ pause_msg_menu.insert = MESSAGE_INSERT_EN;
+ pause_msg_menu.load = MESSAGE_LOAD_EN;
+ pause_msg_menu.purge = MESSAGE_PURGE_EN;
+ pause_msg_menu.resume = MESSAGE_RESUME_EN;
+ pause_msg_menu.heat = MESSAGE_HEAT_EN;
+ pause_msg_menu.heating = MESSAGE_HEATING_EN;
+ pause_msg_menu.option = MESSAGE_OPTION_EN;
+ pause_msg_menu.purgeMore = MESSAGE_PURGE_MORE_EN;
+ pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_EN;
+ eeprom_menu.title = EEPROM_SETTINGS_TITLE_EN;
+ eeprom_menu.store = EEPROM_SETTINGS_STORE_EN;
+ eeprom_menu.read = EEPROM_SETTINGS_READ_EN;
+ eeprom_menu.revert = EEPROM_SETTINGS_REVERT_EN;
+ eeprom_menu.storeTips = EEPROM_STORE_TIPS_EN;
+ eeprom_menu.readTips = EEPROM_READ_TIPS_EN;
+ eeprom_menu.revertTips = EEPROM_REVERT_TIPS_EN;
break;
}
}
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
index 32834eafc6ef..585100935688 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
@@ -48,6 +48,228 @@ extern void disp_language_init();
#define MULTI_LANGUAGE_ENABLE 1
#define MULTI_LANGUAGE_DISABLE 0
+typedef struct machine_common_disp{
+ const char *default_value;
+
+ const char *next;
+ const char *previous;
+
+ const char *MachineConfigTitle;
+ const char *MachineType;
+ const char *Stroke;
+ const char *HomeDir;
+ const char *EndStopType;
+ const char *FilamentConf;
+ const char *LevelingConf;
+
+ const char *MachineTypeConfTitle;
+ const char *xyz;
+ const char *delta;
+ const char *corexy;
+
+ const char *StrokeConfTitle;
+ const char *xStroke;
+ const char *yStroke;
+ const char *zStroke;
+
+ const char *xmin;
+ const char *ymin;
+ const char *zmin;
+
+ const char *HomeDirConfTitle;
+ const char *xHomeDir;
+ const char *yHomeDir;
+ const char *zHomeDir;
+ const char *min;
+ const char *max;
+
+ const char *EndstopConfTitle;
+ const char *xEndstop_min;
+ const char *yEndstop_min;
+ const char *zEndstop_min;
+ const char *xEndstop_max;
+ const char *yEndstop_max;
+ const char *zEndstop_max;
+ const char *FilamentEndstop;
+ const char *LevelingEndstop;
+ const char *opened;
+ const char *closed;
+
+ const char *FilamentConfTitle;
+ const char *InTemperature;
+ const char *InLength;
+ const char *InSpeed;
+ const char *OutTemperature;
+ const char *OutLength;
+ const char *OutSpeed;
+
+ const char *LevelingParaConfTitle;
+ const char *LevelingParaConf;
+ const char *DeltaLevelConf;
+ const char *XYZLevelconf;
+
+ const char *LevelingSubConfTitle;
+ const char *AutoLevelEnable;
+ const char *BLtouchEnable;
+ const char *ProbePort;
+ const char *ProbeXoffset;
+ const char *ProbeYoffset;
+ const char *ProbeZoffset;
+ const char *ProbeXYspeed;
+ const char *ProbeZspeed;
+ const char *enable;
+ const char *disable;
+ const char *z_min;
+ const char *z_max;
+
+ const char *LevelingSubDeltaConfTitle;
+ const char *MachineRadius;
+ const char *DiagonalRod;
+ const char *PrintableRadius;
+ const char *DeltaHeight;
+ const char *SmoothRodOffset;
+ const char *EffectorOffset;
+ const char *CalibrationRadius;
+
+ const char *LevelingSubXYZConfTitle;
+ //const char *Level_positon1;
+ //const char *Level_positon2;
+ //const char *Level_positon3;
+ //const char *Level_positon4;
+
+ const char *TemperatureConfTitle;
+ const char *NozzleConf;
+ const char *HotBedConf;
+ const char *PreheatTemperConf;
+
+ const char *NozzleCnt;
+ const char *NozzleConfTitle;
+ const char *NozzleType;
+ const char *NozzleAdjustType;
+ const char *NozzleMinTemperature;
+ const char *NozzleMaxTemperature;
+ const char *Extrude_Min_Temper;
+
+ const char *HotbedEnable;
+ const char *HotbedConfTitle;
+ const char *HotbedAjustType;
+ const char *HotbedMinTemperature;
+ const char *HotbedMaxTemperature;
+
+ const char *MotorConfTitle;
+ const char *MaxFeedRateConf;
+ const char *AccelerationConf;
+ const char *JerkConf;
+ const char *StepsConf;
+ const char *MotorDirConf;
+ const char *HomeFeedRateConf;
+ const char *TMCcurrentConf;
+ const char *TMCStepModeConf;
+
+ const char *MaxFeedRateConfTitle;
+ const char *XMaxFeedRate;
+ const char *YMaxFeedRate;
+ const char *ZMaxFeedRate;
+ const char *E0MaxFeedRate;
+ const char *E1MaxFeedRate;
+
+ const char *AccelerationConfTitle;
+ const char *PrintAcceleration;
+ const char *RetractAcceleration;
+ const char *TravelAcceleration;
+ const char *X_Acceleration;
+ const char *Y_Acceleration;
+ const char *Z_Acceleration;
+ const char *E0_Acceleration;
+ const char *E1_Acceleration;
+
+ const char *JerkConfTitle;
+ const char *X_Jerk;
+ const char *Y_Jerk;
+ const char *Z_Jerk;
+ const char *E_Jerk;
+
+ const char *StepsConfTitle;
+ const char *X_Steps;
+ const char *Y_Steps;
+ const char *Z_Steps;
+ const char *E0_Steps;
+ const char *E1_Steps;
+
+ const char *TmcCurrentConfTitle;
+ const char *X_Current;
+ const char *Y_Current;
+ const char *Z_Current;
+ const char *E0_Current;
+ const char *E1_Current;
+
+ const char *TmcStepModeConfTitle;
+ const char *X_StepMode;
+ const char *Y_StepMode;
+ const char *Z_StepMode;
+ const char *E0_StepMode;
+ const char *E1_StepMode;
+
+ const char *MotorDirConfTitle;
+ const char *X_MotorDir;
+ const char *Y_MotorDir;
+ const char *Z_MotorDir;
+ const char *E0_MotorDir;
+ const char *E1_MotorDir;
+ const char *Invert_1;
+ const char *Invert_0;
+
+ const char *HomeFeedRateConfTitle;
+ const char *XY_HomeFeedRate;
+ const char *Y_HomeFeedRate;
+ const char *Z_HomeFeedRate;
+
+ const char *AdvancedConfTitle;
+ const char *PwrOffDection;
+ const char *PwrOffAfterPrint;
+ const char *HaveUps;
+ const char *Z2andZ2Endstop;
+ const char *EnablePinsInvert;
+ const char *PausePosition;
+
+ const char *Z2ConfTitle;
+ const char *Z2Enable;
+ const char *Z2EndstopEnable;
+ const char *Z2Port;
+
+ const char *EnablePinsInvertTitle;
+ const char *XInvert;
+ const char *YInvert;
+ const char *ZInvert;
+ const char *EInvert;
+
+ const char *key_1;
+ const char *key_2;
+ const char *key_3;
+ const char *key_4;
+ const char *key_5;
+ const char *key_6;
+ const char *key_7;
+ const char *key_8;
+ const char *key_9;
+ const char *key_0;
+ const char *key_point;
+ const char *key_back;
+ const char *key_reset;
+ const char *key_confirm;
+ const char *negative;
+ const char *low_level;
+ const char *high_level;
+
+ const char *PausePosText;
+ const char *xPos;
+ const char *yPos;
+ const char *zPos;
+
+} machine_common_def;
+
+extern machine_common_def machine_menu;
+
typedef struct common_menu_disp {
const char *text_back;
const char *dialog_confirm_title;
@@ -59,6 +281,7 @@ typedef struct common_menu_disp {
const char *next;
const char *previous;
} common_menu_def;
+
extern common_menu_def common_menu;
typedef struct main_menu_disp {
@@ -76,6 +299,7 @@ typedef struct main_menu_disp {
const char *more;
const char *machine_para;
} main_menu_def;
+
extern main_menu_def main_menu;
typedef struct preheat_menu_disp {
@@ -96,7 +320,8 @@ typedef struct preheat_menu_disp {
const char *dialog_tips;
-}preheat_menu_def;
+} preheat_menu_def;
+
extern preheat_menu_def preheat_menu;
typedef struct move_menu_disp {
@@ -114,6 +339,7 @@ typedef struct move_menu_disp {
const char *step_10mm;
const char *back;
} move_menu_def;
+
extern move_menu_def move_menu;
typedef struct home_menu_disp {
@@ -125,6 +351,7 @@ typedef struct home_menu_disp {
const char *stopmove;
const char *back;
} home_menu_def;
+
extern home_menu_def home_menu;
typedef struct file_menu_disp {
@@ -137,7 +364,8 @@ typedef struct file_menu_disp {
const char *no_file;
const char *no_file_and_check;
-}file_menu_def;
+} file_menu_def;
+
extern file_menu_def file_menu;
typedef struct extrude_menu_disp {
@@ -160,6 +388,7 @@ typedef struct extrude_menu_disp {
const char *temp_value;
const char *temper_text;
} extrude_menu_def;
+
extern extrude_menu_def extrude_menu;
typedef struct leveling_menu_disp {
@@ -172,6 +401,7 @@ typedef struct leveling_menu_disp {
char *back;
} leveling_menu_def;
+
extern leveling_menu_def leveling_menu;
typedef struct set_menu_disp {
@@ -187,8 +417,10 @@ typedef struct set_menu_disp {
const char *shutdown;
const char *language;
const char *machine_para;
+ const char *eepromSet;
const char *back;
} set_menu_def;
+
extern set_menu_def set_menu;
typedef struct filesys_menu_disp {
@@ -198,6 +430,7 @@ typedef struct filesys_menu_disp {
const char *usb_sys;
const char *back;
} filesys_menu_def;
+
extern filesys_menu_def filesys_menu;
typedef struct more_menu_disp {
@@ -205,6 +438,7 @@ typedef struct more_menu_disp {
const char *zoffset;
const char *back;
} more_menu_def;
+
extern more_menu_def more_menu;
typedef struct wifi_menu_disp {
@@ -221,6 +455,7 @@ typedef struct wifi_menu_disp {
const char *back;
const char *reconnect;
} wifi_menu_def;
+
extern wifi_menu_def wifi_menu;
typedef struct cloud_menu_disp {
@@ -236,6 +471,7 @@ typedef struct cloud_menu_disp {
const char *back;
const char *unbind_printer_tips;
} cloud_menu_def;
+
extern cloud_menu_def cloud_menu;
typedef struct about_menu_disp {
@@ -249,6 +485,7 @@ typedef struct about_menu_disp {
const char *type_robin_mini;
const char *back;
} about_menu_def;
+
extern about_menu_def about_menu;
typedef struct fan_menu_disp {
@@ -263,6 +500,7 @@ typedef struct fan_menu_disp {
const char *state;
const char *state_value;
} fan_menu_def;
+
extern fan_menu_def fan_menu;
typedef struct filament_menu_disp {
@@ -290,6 +528,7 @@ typedef struct filament_menu_disp {
const char *filament_dialog_ok;
const char *filament_dialog_back;
} filament_menu_def;
+
extern filament_menu_def filament_menu;
typedef struct language_menu {
@@ -310,6 +549,7 @@ typedef struct language_menu {
const char *up;
const char *back;
} language_menu_def;
+
extern language_menu_def language_menu;
typedef struct printing_menu_disp {
@@ -323,6 +563,7 @@ typedef struct printing_menu_disp {
const char *resume;
const char *stop;
} printing_menu_def;
+
extern printing_menu_def printing_menu;
typedef struct operation_menu_disp {
@@ -341,6 +582,7 @@ typedef struct operation_menu_disp {
const char *back;
const char *babystep;
} operation_menu_def;
+
extern operation_menu_def operation_menu;
typedef struct pause_menu_disp {
@@ -352,6 +594,7 @@ typedef struct pause_menu_disp {
const char *filament;
const char *more;
} pause_menu_def;
+
extern pause_menu_def pause_menu;
typedef struct speed_menu_disp {
@@ -367,6 +610,7 @@ typedef struct speed_menu_disp {
const char *move_speed;
const char *extrude_speed;
} speed_menu_def;
+
extern speed_menu_def speed_menu;
typedef struct printing_more_menu_disp {
@@ -378,6 +622,7 @@ typedef struct printing_more_menu_disp {
const char *speed;
const char *back;
} printing_more_menu_def;
+
extern printing_more_menu_def printing_more_menu;
typedef struct dialog_menu_disp {
@@ -392,6 +637,7 @@ typedef struct dialog_menu_disp {
const char *tip1_print_file;
const char *tip2_stop_file;
} dialog_menu_def;
+
extern dialog_menu_def dialog_menu;
typedef struct print_file_dialog_disp {
@@ -412,6 +658,7 @@ typedef struct print_file_dialog_disp {
const char *reprint;
const char *wifi_enable_tips;
} print_file_dialog_menu_def;
+
extern print_file_dialog_menu_def print_file_dialog_menu;
typedef struct zoffset_menu_disp {
@@ -423,6 +670,7 @@ typedef struct zoffset_menu_disp {
const char *step1;
const char *back;
} zoffset_menu_def;
+
extern zoffset_menu_def zoffset_menu;
typedef struct tool_menu_disp {
@@ -437,6 +685,7 @@ typedef struct tool_menu_disp {
const char *more;
const char *back;
} tool_menu_def;
+
extern tool_menu_def tool_menu;
typedef struct MachinePara_menu_disp {
@@ -447,6 +696,7 @@ typedef struct MachinePara_menu_disp {
const char *AdvanceSetting;
//const char *back;
} MachinePara_menu_def;
+
extern MachinePara_menu_def MachinePara_menu;
typedef struct MachineSettings_menu_disp {
@@ -459,6 +709,7 @@ typedef struct MachineSettings_menu_disp {
const char *leveling;
const char *back;
} MachineSettings_menu_def;
+
extern MachineSettings_menu_def MachineSettings_menu;
typedef struct TemperatureSettings_menu_disp {
@@ -468,6 +719,7 @@ typedef struct TemperatureSettings_menu_disp {
const char *preheat;
const char *back;
} TemperatureSettings_menu_def;
+
extern TemperatureSettings_menu_def TemperatureSettings_menu;
typedef struct pause_msg_disp {
@@ -485,23 +737,35 @@ typedef struct pause_msg_disp {
const char *purgeMore;
const char *continuePrint;
} pause_msg_def;
+
extern pause_msg_def pause_msg_menu;
+typedef struct eeprom_disp{
+ const char *title;
+ const char *store;
+ const char *read;
+ const char *revert;
+ const char *storeTips;
+ const char *readTips;
+ const char *revertTips;
+} eeprom_def;
+
+extern eeprom_def eeprom_menu;
/*****************************************/
//********************************************//
//#if defined(TFT70)
//
//#elif defined(TFT35)
-#define TEXT_VALUE "%d/%d"
+#define TEXT_VALUE "%d/%d"
//#endif
-#define TEXT_VALUE_T ": %d℃"
-#define TEXT_VALUE_mm ": %dmm"
-#define TEXT_VALUE_cm ": %dcm"
-#define TEXT_VALUE_m ": %dm"
+#define TEXT_VALUE_T ": %d℃"
+#define TEXT_VALUE_mm ": %dmm"
+#define TEXT_VALUE_cm ": %dcm"
+#define TEXT_VALUE_m ": %dm"
-#define TEMP_UNIT_SYBOL "%d℃"
-#define FLOAT_TEMP_UNIT_SYBOL "%.1f℃"
+#define TEMP_UNIT_SYBOL "%d℃"
+#define FLOAT_TEMP_UNIT_SYBOL "%.1f℃"
#define TEXT_1C "1℃"
#define TEXT_5C "5℃"
@@ -533,7 +797,7 @@ extern pause_msg_def pause_msg_menu;
#define LANGUAGE_JP "日本語"
#define LANGUAGE_GE "Deutsch"
#define LANGUAGE_FR "français"
-#define LANGUAGE_IT "Italia"
+#define LANGUAGE_IT "Italiano"
#define LANGUAGE_PR "português"
#define LANGUAGE_KR "Korean"
#define LANGUAGE_BR "Brazil"
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index de8cfc85ff71..391cb598cffc 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -66,6 +66,7 @@ namespace Language_en {
PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home Y");
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align");
+ PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ");
PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Click to Begin");
PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Next Point");
diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp
index 9b16b68e4e21..9c49a3cdb7dd 100644
--- a/Marlin/src/lcd/menu/menu_motion.cpp
+++ b/Marlin/src/lcd/menu/menu_motion.cpp
@@ -325,6 +325,13 @@ void menu_motion() {
GCODES_ITEM(MSG_AUTO_HOME_Z, PSTR("G28Z"));
#endif
+ //
+ // Auto-calibration
+ //
+ #if ENABLED(CALIBRATION_GCODE)
+ GCODES_ITEM(MSG_AUTO_CALIBRATE, PSTR("G425"));
+ #endif
+
//
// Auto Z-Align
//
@@ -332,6 +339,13 @@ void menu_motion() {
GCODES_ITEM(MSG_AUTO_Z_ALIGN, PSTR("G34"));
#endif
+ //
+ // Assisted Bed Tramming
+ //
+ #if ENABLED(ASSISTED_TRAMMING)
+ GCODES_ITEM(MSG_ASSISTED_TRAMMING, PSTR("G35"));
+ #endif
+
//
// Level Bed
//
diff --git a/Marlin/src/lcd/menu/menu_power_monitor.cpp b/Marlin/src/lcd/menu/menu_power_monitor.cpp
index 1627e7c80b32..bacf7f379f30 100644
--- a/Marlin/src/lcd/menu/menu_power_monitor.cpp
+++ b/Marlin/src/lcd/menu/menu_power_monitor.cpp
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 45612f6c55c2..88a9c36b3642 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -49,6 +49,8 @@ MarlinUI ui;
bool MarlinUI::wait_for_move; // = false
#endif
+constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
+
#if HAS_SPI_LCD
#if ENABLED(STATUS_MESSAGE_SCROLLING)
uint8_t MarlinUI::status_scroll_offset; // = 0
@@ -440,13 +442,13 @@ bool MarlinUI::get_blink() {
#endif
{
#if HAS_LCD_MENU
- if (RRK(EN_KEYPAD_UP)) encoderPosition -= ENCODER_PULSES_PER_STEP;
- else if (RRK(EN_KEYPAD_DOWN)) encoderPosition += ENCODER_PULSES_PER_STEP;
+ if (RRK(EN_KEYPAD_UP)) encoderPosition -= epps;
+ else if (RRK(EN_KEYPAD_DOWN)) encoderPosition += epps;
else if (RRK(EN_KEYPAD_LEFT)) { MenuItem_back::action(); quick_feedback(); }
else if (RRK(EN_KEYPAD_RIGHT)) encoderPosition = 0;
#else
- if (RRK(EN_KEYPAD_UP) || RRK(EN_KEYPAD_LEFT)) encoderPosition -= ENCODER_PULSES_PER_STEP;
- else if (RRK(EN_KEYPAD_DOWN) || RRK(EN_KEYPAD_RIGHT)) encoderPosition += ENCODER_PULSES_PER_STEP;
+ if (RRK(EN_KEYPAD_UP) || RRK(EN_KEYPAD_LEFT)) encoderPosition -= epps;
+ else if (RRK(EN_KEYPAD_DOWN) || RRK(EN_KEYPAD_RIGHT)) encoderPosition += epps;
#endif
}
#endif
@@ -751,19 +753,19 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
//SERIAL_ECHOLNPAIR("Post Move with Axis ", int(axis), " soon.");
}
-#endif // HAS_LCD_MENU
-
-#if ENABLED(AUTO_BED_LEVELING_UBL)
+ #if ENABLED(AUTO_BED_LEVELING_UBL)
- void MarlinUI::external_encoder() {
- if (external_control && encoderDiff) {
- ubl.encoder_diff += encoderDiff; // Encoder for UBL G29 mesh editing
- encoderDiff = 0; // Hide encoder events from the screen handler
- refresh(LCDVIEW_REDRAW_NOW); // ...but keep the refresh.
+ void MarlinUI::external_encoder() {
+ if (external_control && encoderDiff) {
+ ubl.encoder_diff += encoderDiff; // Encoder for UBL G29 mesh editing
+ encoderDiff = 0; // Hide encoder events from the screen handler
+ refresh(LCDVIEW_REDRAW_NOW); // ...but keep the refresh.
+ }
}
- }
-#endif
+ #endif
+
+#endif // HAS_LCD_MENU
/**
* Update the LCD, read encoder buttons, etc.
@@ -841,7 +843,7 @@ void MarlinUI::update() {
RESET_STATUS_TIMEOUT();
if (touch_buttons & (EN_A | EN_B)) { // Menu arrows, in priority
if (ELAPSED(ms, next_button_update_ms)) {
- encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * (ENCODER_PULSES_PER_STEP) * encoderDirection;
+ encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * epps * encoderDirection;
if (touch_buttons & EN_A) encoderDiff *= -1;
TERN_(AUTO_BED_LEVELING_UBL, external_encoder());
next_button_update_ms = ms + repeat_delay; // Assume the repeat delay
@@ -901,26 +903,21 @@ void MarlinUI::update() {
#if ENCODER_PULSES_PER_STEP > 1
// When reversing the encoder direction, a movement step can be missed because
// encoderDiff has a non-zero residual value, making the controller unresponsive.
- // The fix clears the residual value when the encoder is reversed.
+ // The fix clears the residual value when the encoder is idle.
// Also check if past half the threshold to compensate for missed single steps.
static int8_t lastEncoderDiff;
- int8_t prevDiff = lastEncoderDiff;
- lastEncoderDiff = encoderDiff; // Store before updating encoderDiff to save actual steps
-
- // When not past threshold, and reversing... or past half the threshold
- if (WITHIN(abs_diff, 1, (ENCODER_PULSES_PER_STEP) - 1) // Not past threshold
- && (abs_diff > (ENCODER_PULSES_PER_STEP) / 2 // Passed half the threshold? Done! Call it a full step.
- || (ABS(encoderDiff - prevDiff) >= (ENCODER_PULSES_PER_STEP) // A big change when abs_diff is small implies reverse
- && ABS(prevDiff) < (ENCODER_PULSES_PER_STEP) // ...especially when starting from a partial or no step.
- )
- )
- ) {
- abs_diff = ENCODER_PULSES_PER_STEP;
- encoderDiff = (encoderDiff < 0 ? -1 : 1) * abs_diff; // Treat as full step
+
+ // Timeout? No decoder change since last check. 10 or 20 times per second.
+ if (encoderDiff == lastEncoderDiff && abs_diff <= epps / 2) // Same direction & size but not over a half-step?
+ encoderDiff = 0; // Clear residual pulses.
+ else if (WITHIN(abs_diff, epps / 2 + 1, epps - 1)) { // Past half of threshold?
+ abs_diff = epps; // Treat as a full step size
+ encoderDiff = (encoderDiff < 0 ? -1 : 1) * abs_diff; // ...in the spin direction.
}
+ lastEncoderDiff = encoderDiff;
#endif
- const bool encoderPastThreshold = (abs_diff >= (ENCODER_PULSES_PER_STEP));
+ const bool encoderPastThreshold = (abs_diff >= epps);
if (encoderPastThreshold || lcd_clicked) {
if (encoderPastThreshold) {
@@ -929,7 +926,7 @@ void MarlinUI::update() {
int32_t encoderMultiplier = 1;
if (encoderRateMultiplierEnabled) {
- const float encoderMovementSteps = float(abs_diff) / (ENCODER_PULSES_PER_STEP);
+ const float encoderMovementSteps = float(abs_diff) / epps;
if (lastEncoderMovementMillis) {
// Note that the rate is always calculated between two passes through the
@@ -958,7 +955,7 @@ void MarlinUI::update() {
#endif // ENCODER_RATE_MULTIPLIER
- encoderPosition += (encoderDiff * encoderMultiplier) / (ENCODER_PULSES_PER_STEP);
+ encoderPosition += (encoderDiff * encoderMultiplier) / epps;
encoderDiff = 0;
}
@@ -1191,7 +1188,7 @@ void MarlinUI::update() {
//
#if ANY_BUTTON(UP, DWN, LFT, RT)
- const int8_t pulses = (ENCODER_PULSES_PER_STEP) * encoderDirection;
+ const int8_t pulses = epps * encoderDirection;
if (false) {
// for the else-ifs below
@@ -1286,7 +1283,9 @@ void MarlinUI::update() {
case encrot2: ENCODER_SPIN(encrot1, encrot3); break;
case encrot3: ENCODER_SPIN(encrot2, encrot0); break;
}
- TERN_(AUTO_BED_LEVELING_UBL, external_encoder());
+ #if BOTH(HAS_LCD_MENU, AUTO_BED_LEVELING_UBL)
+ external_encoder();
+ #endif
lastEncoderBits = enc;
}
@@ -1547,17 +1546,17 @@ void MarlinUI::update() {
const int8_t xdir = col < (LCD_WIDTH ) / 2 ? -1 : 1,
ydir = row < (LCD_HEIGHT) / 2 ? -1 : 1;
if (on_edit_screen)
- encoderDiff = (ENCODER_PULSES_PER_STEP) * ydir;
+ encoderDiff = epps * ydir;
else if (screen_items > 0) {
// Last 3 cols act as a scroll :-)
if (col > (LCD_WIDTH) - 5)
// 2 * LCD_HEIGHT to scroll to bottom of next page. (LCD_HEIGHT would only go 1 item down.)
- encoderDiff = (ENCODER_PULSES_PER_STEP) * (encoderLine - encoderTopLine + 2 * (LCD_HEIGHT)) * ydir;
+ encoderDiff = epps * (encoderLine - encoderTopLine + 2 * (LCD_HEIGHT)) * ydir;
else
- encoderDiff = (ENCODER_PULSES_PER_STEP) * (row - encoderPosition + encoderTopLine);
+ encoderDiff = epps * (row - encoderPosition + encoderTopLine);
}
else if (!on_status_screen())
- encoderDiff = (ENCODER_PULSES_PER_STEP) * xdir;
+ encoderDiff = epps * xdir;
}
#endif
diff --git a/Marlin/src/libs/BL24CXX.cpp b/Marlin/src/libs/BL24CXX.cpp
new file mode 100644
index 000000000000..d34ed8340f83
--- /dev/null
+++ b/Marlin/src/libs/BL24CXX.cpp
@@ -0,0 +1,273 @@
+/**
+ * Marlin 3D Printer Firmware
+ *
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+#include "../inc/MarlinConfig.h"
+
+#if ENABLED(IIC_BL24CXX_EEPROM)
+
+/**
+ * PersistentStore for Arduino-style EEPROM interface
+ * with simple implementations supplied by Marlin.
+ */
+
+#include "BL24CXX.h"
+#include
+
+#ifndef EEPROM_WRITE_DELAY
+ #define EEPROM_WRITE_DELAY 10
+#endif
+#ifndef EEPROM_DEVICE_ADDRESS
+ #define EEPROM_DEVICE_ADDRESS (0x50 << 1)
+#endif
+
+// IO direction setting
+#define SDA_IN() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 8 << 12; }while(0)
+#define SDA_OUT() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 3 << 12; }while(0)
+
+// IO ops
+#define IIC_SCL_0() WRITE(IIC_EEPROM_SCL, LOW)
+#define IIC_SCL_1() WRITE(IIC_EEPROM_SCL, HIGH)
+#define IIC_SDA_0() WRITE(IIC_EEPROM_SDA, LOW)
+#define IIC_SDA_1() WRITE(IIC_EEPROM_SDA, HIGH)
+#define READ_SDA() READ(IIC_EEPROM_SDA)
+
+//
+// Simple IIC interface via libmaple
+//
+
+// Initialize IIC
+void IIC::init() {
+ SET_OUTPUT(IIC_EEPROM_SDA);
+ SET_OUTPUT(IIC_EEPROM_SCL);
+ IIC_SCL_1();
+ IIC_SDA_1();
+}
+
+// Generate IIC start signal
+void IIC::start() {
+ SDA_OUT(); // SDA line output
+ IIC_SDA_1();
+ IIC_SCL_1();
+ delay_us(4);
+ IIC_SDA_0(); // START:when CLK is high, DATA change from high to low
+ delay_us(4);
+ IIC_SCL_0(); // Clamp the I2C bus, ready to send or receive data
+}
+
+// Generate IIC stop signal
+void IIC::stop() {
+ SDA_OUT(); // SDA line output
+ IIC_SCL_0();
+ IIC_SDA_0(); // STOP:when CLK is high DATA change from low to high
+ delay_us(4);
+ IIC_SCL_1();
+ IIC_SDA_1(); // Send I2C bus end signal
+ delay_us(4);
+}
+
+// Wait for the response signal to arrive
+// 1 = failed to receive response
+// 0 = response received
+uint8_t IIC::wait_ack() {
+ uint8_t ucErrTime = 0;
+ SDA_IN(); // SDA is set as input
+ IIC_SDA_1(); delay_us(1);
+ IIC_SCL_1(); delay_us(1);
+ while (READ_SDA()) {
+ if (++ucErrTime > 250) {
+ stop();
+ return 1;
+ }
+ }
+ IIC_SCL_0(); // Clock output 0
+ return 0;
+}
+
+// Generate ACK response
+void IIC::ack() {
+ IIC_SCL_0();
+ SDA_OUT();
+ IIC_SDA_0();
+ delay_us(2);
+ IIC_SCL_1();
+ delay_us(2);
+ IIC_SCL_0();
+}
+
+// No ACK response
+void IIC::nAck() {
+ IIC_SCL_0();
+ SDA_OUT();
+ IIC_SDA_1();
+ delay_us(2);
+ IIC_SCL_1();
+ delay_us(2);
+ IIC_SCL_0();
+}
+
+// Send one IIC byte
+// Return whether the slave responds
+// 1 = there is a response
+// 0 = no response
+void IIC::send_byte(uint8_t txd) {
+ SDA_OUT();
+ IIC_SCL_0(); // Pull down the clock to start data transmission
+ LOOP_L_N(t, 8) {
+ // IIC_SDA = (txd & 0x80) >> 7;
+ if (txd & 0x80) IIC_SDA_1(); else IIC_SDA_0();
+ txd <<= 1;
+ delay_us(2); // All three delays are necessary for TEA5767
+ IIC_SCL_1();
+ delay_us(2);
+ IIC_SCL_0();
+ delay_us(2);
+ }
+}
+
+// Read 1 byte, when ack=1, send ACK, ack=0, send nACK
+uint8_t IIC::read_byte(unsigned char ack_chr) {
+ unsigned char receive = 0;
+ SDA_IN(); // SDA is set as input
+ LOOP_L_N(i, 8) {
+ IIC_SCL_0();
+ delay_us(2);
+ IIC_SCL_1();
+ receive <<= 1;
+ if (READ_SDA()) receive++;
+ delay_us(1);
+ }
+ ack_chr ? ack() : nAck(); // Send ACK / send nACK
+ return receive;
+}
+
+/******************** EEPROM ********************/
+
+// Initialize the IIC interface
+void BL24CXX::init() { IIC::init(); }
+
+// Read a byte at the specified address
+// ReadAddr: the address to start reading
+// Return: the byte read
+uint8_t BL24CXX::readOneByte(uint16_t ReadAddr) {
+ uint8_t temp = 0;
+ IIC::start();
+ if (EE_TYPE > BL24C16) {
+ IIC::send_byte(EEPROM_DEVICE_ADDRESS); // Send write command
+ IIC::wait_ack();
+ IIC::send_byte(ReadAddr >> 8); // Send high address
+ IIC::wait_ack();
+ }
+ else
+ IIC::send_byte(EEPROM_DEVICE_ADDRESS + ((ReadAddr >> 8) << 1)); // Send device address 0xA0, write data
+
+ IIC::wait_ack();
+ IIC::send_byte(ReadAddr & 0xFF); // Send low address
+ IIC::wait_ack();
+ IIC::start();
+ IIC::send_byte(EEPROM_DEVICE_ADDRESS | 0x01); // Send byte
+ IIC::wait_ack();
+ temp = IIC::read_byte(0);
+ IIC::stop(); // Generate a stop condition
+ return temp;
+}
+
+// Write a data at the address specified by BL24CXX
+// WriteAddr: The destination address for writing data
+// DataToWrite: the data to be written
+void BL24CXX::writeOneByte(uint16_t WriteAddr, uint8_t DataToWrite) {
+ IIC::start();
+ if (EE_TYPE > BL24C16) {
+ IIC::send_byte(EEPROM_DEVICE_ADDRESS); // Send write command
+ IIC::wait_ack();
+ IIC::send_byte(WriteAddr >> 8); // Send high address
+ }
+ else
+ IIC::send_byte(EEPROM_DEVICE_ADDRESS + ((WriteAddr >> 8) << 1)); // Send device address 0xA0, write data
+
+ IIC::wait_ack();
+ IIC::send_byte(WriteAddr & 0xFF); // Send low address
+ IIC::wait_ack();
+ IIC::send_byte(DataToWrite); // Receiving mode
+ IIC::wait_ack();
+ IIC::stop(); // Generate a stop condition
+ delay(10);
+}
+
+// Start writing data of length Len at the specified address in BL24CXX
+// This function is used to write 16bit or 32bit data.
+// WriteAddr: the address to start writing
+// DataToWrite: the first address of the data array
+// Len: The length of the data to be written 2, 4
+void BL24CXX::writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len) {
+ LOOP_L_N(t, Len)
+ writeOneByte(WriteAddr + t, (DataToWrite >> (8 * t)) & 0xFF);
+}
+
+// Start reading data of length Len from the specified address in BL24CXX
+// This function is used to read 16bit or 32bit data.
+// ReadAddr: the address to start reading
+// Return value: data
+// Len: The length of the data to be read 2,4
+uint32_t BL24CXX::readLenByte(uint16_t ReadAddr, uint8_t Len) {
+ uint32_t temp = 0;
+ LOOP_L_N(t, Len) {
+ temp <<= 8;
+ temp += readOneByte(ReadAddr + Len - t - 1);
+ }
+ return temp;
+}
+
+// Check if BL24CXX is normal
+// Return 1: Detection failed
+// return 0: detection is successful
+#define BL24CXX_TEST_ADDRESS 0x00
+#define BL24CXX_TEST_VALUE 0x55
+
+bool BL24CXX::_check() {
+ return (readOneByte(BL24CXX_TEST_ADDRESS) != BL24CXX_TEST_VALUE); // false = success!
+}
+
+bool BL24CXX::check() {
+ if (_check()) { // Value was written? Good EEPROM!
+ writeOneByte(BL24CXX_TEST_ADDRESS, BL24CXX_TEST_VALUE); // Write now and check.
+ return _check();
+ }
+ return false; // success!
+}
+
+// Start reading the specified number of data at the specified address in BL24CXX
+// ReadAddr: The address to start reading is 0~255 for 24c02
+// pBuffer: the first address of the data array
+// NumToRead: the number of data to be read
+void BL24CXX::read(uint16_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead) {
+ for (; NumToRead; NumToRead--)
+ *pBuffer++ = readOneByte(ReadAddr++);
+}
+
+// Start writing the specified number of data at the specified address in BL24CXX
+// WriteAddr: the address to start writing, 0~255 for 24c02
+// pBuffer: the first address of the data array
+// NumToWrite: the number of data to be written
+void BL24CXX::write(uint16_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite) {
+ for (; NumToWrite; NumToWrite--, WriteAddr++)
+ writeOneByte(WriteAddr, *pBuffer++);
+}
+
+#endif // IIC_BL24CXX_EEPROM
diff --git a/Marlin/src/lcd/dwin/eeprom_BL24CXX.h b/Marlin/src/libs/BL24CXX.h
similarity index 65%
rename from Marlin/src/lcd/dwin/eeprom_BL24CXX.h
rename to Marlin/src/libs/BL24CXX.h
index e253cc9be269..b069c196c035 100644
--- a/Marlin/src/lcd/dwin/eeprom_BL24CXX.h
+++ b/Marlin/src/libs/BL24CXX.h
@@ -22,25 +22,12 @@
#pragma once
/********************************************************************************
- * @file eeprom_BL24CXX.h
+ * @file BL24CXX.h
* @brief i2c EEPROM for Ender 3 v2 board (4.2.2)
********************************************************************************/
-#include
-
/******************** IIC ********************/
-//IO direction setting
-#define SDA_IN() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 8 << 12; }while(0)
-#define SDA_OUT() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 3 << 12; }while(0)
-
-//IO operation function
-#define IIC_SCL_0() WRITE(IIC_EEPROM_SCL, LOW)
-#define IIC_SCL_1() WRITE(IIC_EEPROM_SCL, HIGH)
-#define IIC_SDA_0() WRITE(IIC_EEPROM_SDA, LOW)
-#define IIC_SDA_1() WRITE(IIC_EEPROM_SDA, HIGH)
-#define READ_SDA() READ(IIC_EEPROM_SDA)
-
class BL24CXX;
// All operation functions of IIC
@@ -55,9 +42,6 @@ friend class BL24CXX;
static uint8_t wait_ack(); // IIC waits for ACK signal
static void ack(); // IIC sends ACK signal
static void nAck(); // IIC does not send ACK signal
-
- static void write_one_byte(uint8_t daddr, uint8_t addr, uint8_t data);
- static uint8_t read_one_byte(uint8_t daddr, uint8_t addr);
};
/******************** EEPROM ********************/
@@ -74,13 +58,15 @@ friend class BL24CXX;
#define EE_TYPE BL24C16
class BL24CXX {
+private:
+ static bool _check(); // Check the device
public:
- static void init(); // Initialize IIC
- static uint8_t check(); // Check the device
- static uint8_t readOneByte(uint16_t ReadAddr); // Read a byte at the specified address
- static void writeOneByte(uint16_t WriteAddr, uint8_t DataToWrite); // Write a byte at the specified address
- static void writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len);// The specified address begins to write the data of the specified length
- static uint32_t readLenByte(uint16_t ReadAddr, uint8_t Len); // The specified address starts to read the data of the specified length
- static void write(uint16_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite); // Write the specified length of data from the specified address
- static void read(uint16_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead); // Read the data of the specified length from the specified address
+ static void init(); // Initialize IIC
+ static bool check(); // Check / recheck the device
+ static uint8_t readOneByte(uint16_t ReadAddr); // Read a byte at the specified address
+ static void writeOneByte(uint16_t WriteAddr, uint8_t DataToWrite); // Write a byte at the specified address
+ static void writeLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len); // The specified address begins to write the data of the specified length
+ static uint32_t readLenByte(uint16_t ReadAddr, uint8_t Len); // The specified address starts to read the data of the specified length
+ static void write(uint16_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite); // Write the specified length of data from the specified address
+ static void read(uint16_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead); // Read the data of the specified length from the specified address
};
diff --git a/Marlin/src/libs/hex_print_routines.cpp b/Marlin/src/libs/hex_print_routines.cpp
index 3ab81e596a0c..5909ffd7d015 100644
--- a/Marlin/src/libs/hex_print_routines.cpp
+++ b/Marlin/src/libs/hex_print_routines.cpp
@@ -23,7 +23,7 @@
#include "../inc/MarlinConfig.h"
#include "../gcode/parser.h"
-#if ANY(AUTO_BED_LEVELING_UBL, M100_FREE_MEMORY_WATCHER, DEBUG_GCODE_PARSER, TMC_DEBUG)
+#if ANY(AUTO_BED_LEVELING_UBL, M100_FREE_MEMORY_WATCHER, DEBUG_GCODE_PARSER, TMC_DEBUG, MARLIN_DEV_MODE)
#include "hex_print_routines.h"
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index 24ce57a764a7..9b8c1c60ffa5 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -1098,11 +1098,7 @@ void prepare_line_to_destination() {
}
uint8_t axes_need_homing(uint8_t axis_bits/*=0x07*/) {
- #if ENABLED(HOME_AFTER_DEACTIVATE)
- #define HOMED_FLAGS axis_known_position
- #else
- #define HOMED_FLAGS axis_homed
- #endif
+ #define HOMED_FLAGS TERN(HOME_AFTER_DEACTIVATE, axis_known_position, axis_homed)
// Clear test bits that are homed
if (TEST(axis_bits, X_AXIS) && TEST(HOMED_FLAGS, X_AXIS)) CBI(axis_bits, X_AXIS);
if (TEST(axis_bits, Y_AXIS) && TEST(HOMED_FLAGS, Y_AXIS)) CBI(axis_bits, Y_AXIS);
diff --git a/Marlin/src/module/scara.cpp b/Marlin/src/module/scara.cpp
index 6c961827c772..e4b2f0b75c51 100644
--- a/Marlin/src/module/scara.cpp
+++ b/Marlin/src/module/scara.cpp
@@ -100,7 +100,7 @@ void inverse_kinematics(const xyz_pos_t &raw) {
/**
* Morgan SCARA Inverse Kinematics. Results in 'delta'.
*
- * See http://forums.reprap.org/read.php?185,283327
+ * See https://reprap.org/forum/read.php?185,283327
*
* Maths and first version by QHARLEY.
* Integrated into Marlin and slightly restructured by Joachim Cerny.
diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 20514853ea1b..c9d87486f87d 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -2551,7 +2551,7 @@ void Stepper::init() {
AXIS_INIT(Z, Z);
#endif
- #if E_STEPPERS > 0 && HAS_E0_STEP
+ #if E_STEPPERS && HAS_E0_STEP
E_AXIS_INIT(0);
#endif
#if E_STEPPERS > 1 && HAS_E1_STEP
diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h
index a4db741966e0..e3d3730c79ea 100644
--- a/Marlin/src/module/stepper/indirection.h
+++ b/Marlin/src/module/stepper/indirection.h
@@ -865,14 +865,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#endif
#ifndef ENABLE_AXIS_E0
- #if E_STEPPERS > 0 && HAS_E0_ENABLE
+ #if E_STEPPERS && HAS_E0_ENABLE
#define ENABLE_AXIS_E0() ENABLE_STEPPER_E0()
#else
#define ENABLE_AXIS_E0() NOOP
#endif
#endif
#ifndef DISABLE_AXIS_E0
- #if E_STEPPERS > 0 && HAS_E0_ENABLE
+ #if E_STEPPERS && HAS_E0_ENABLE
#define DISABLE_AXIS_E0() DISABLE_STEPPER_E0()
#else
#define DISABLE_AXIS_E0() NOOP
diff --git a/Marlin/src/module/thermistor/thermistor_2.h b/Marlin/src/module/thermistor/thermistor_2.h
index f07de0b5373e..d0e1e4f3dfca 100644
--- a/Marlin/src/module/thermistor/thermistor_2.h
+++ b/Marlin/src/module/thermistor/thermistor_2.h
@@ -23,7 +23,7 @@
//
// R25 = 200 kOhm, beta25 = 4338 K, 4.7 kOhm pull-up, ATC Semitec 204GT-2
-// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
+// Verified by linagee. Source: https://www.mouser.com/datasheet/2/362/semitec%20usa%20corporation_gtthermistor-1202937.pdf
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
//
const temp_entry_t temptable_2[] PROGMEM = {
diff --git a/Marlin/src/module/thermistor/thermistor_5.h b/Marlin/src/module/thermistor/thermistor_5.h
index 5d2c3e7b0424..1d5fa2fec739 100644
--- a/Marlin/src/module/thermistor/thermistor_5.h
+++ b/Marlin/src/module/thermistor/thermistor_5.h
@@ -24,7 +24,7 @@
// R25 = 100 kOhm, beta25 = 4267 K, 4.7 kOhm pull-up
// 100k ParCan thermistor (104GT-2)
// ATC Semitec 104GT-2/104NT-4-R025H42G (Used in ParCan)
-// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
+// Verified by linagee. Source: https://www.mouser.com/datasheet/2/362/semitec%20usa%20corporation_gtthermistor-1202937.pdf
// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance
const temp_entry_t temptable_5[] PROGMEM = {
{ OV( 1), 713 },
diff --git a/Marlin/src/module/thermistor/thermistor_52.h b/Marlin/src/module/thermistor/thermistor_52.h
index 69666add20cf..5c9cb9dc4df9 100644
--- a/Marlin/src/module/thermistor/thermistor_52.h
+++ b/Marlin/src/module/thermistor/thermistor_52.h
@@ -23,7 +23,7 @@
// R25 = 200 kOhm, beta25 = 4338 K, 1 kOhm pull-up,
// 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
-// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
+// Verified by linagee. Source: https://www.mouser.com/datasheet/2/362/semitec%20usa%20corporation_gtthermistor-1202937.pdf
// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance
// Advantage: More resolution and better linearity from 150C to 200C
const temp_entry_t temptable_52[] PROGMEM = {
diff --git a/Marlin/src/module/thermistor/thermistor_55.h b/Marlin/src/module/thermistor/thermistor_55.h
index 2966d064eb83..707b7d420a12 100644
--- a/Marlin/src/module/thermistor/thermistor_55.h
+++ b/Marlin/src/module/thermistor/thermistor_55.h
@@ -23,7 +23,7 @@
// R25 = 100 kOhm, beta25 = 4267 K, 1 kOhm pull-up,
// 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!)
-// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf
+// Verified by linagee. Source: https://www.mouser.com/datasheet/2/362/semitec%20usa%20corporation_gtthermistor-1202937.pdf
// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance
// Advantage: More resolution and better linearity from 150C to 200C
const temp_entry_t temptable_55[] PROGMEM = {
diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
index 59fd1e54f8b9..efa99164208d 100644
--- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
+++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
@@ -197,6 +197,10 @@
#endif
#endif
+#ifndef CONTROLLER_FAN_PIN
+ #define CONTROLLER_FAN_PIN EX2_FAN_PIN
+#endif
+
//
// Misc. Functions
//
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index ba8a47324197..1b78b0f769ad 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -507,7 +507,9 @@
#elif MB(MKS_ROBIN_MINI)
#include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
#elif MB(MKS_ROBIN_NANO)
- #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano
+ #include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano35
+#elif MB(MKS_ROBIN_NANO_V2)
+ #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano35
#elif MB(MKS_ROBIN_LITE)
#include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite
#elif MB(BTT_SKR_MINI_V1_1)
diff --git a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h
index dfe077ee4d45..7cd81456b17d 100644
--- a/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h
+++ b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h
@@ -23,7 +23,7 @@
/**
* Alligator Board R2
- * http://www.3dartists.org/
+ * https://reprap.org/wiki/Alligator_Board
*/
#ifndef __SAM3X8E__
diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h
index 475a15d6f6de..78231afaffa2 100644
--- a/Marlin/src/pins/sam/pins_RADDS.h
+++ b/Marlin/src/pins/sam/pins_RADDS.h
@@ -31,6 +31,14 @@
#define BOARD_INFO_NAME "RADDS"
+//
+// EEPROM
+//
+#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM)
+ #define I2C_EEPROM
+ #define MARLIN_EEPROM_SIZE 0x2000 // 8KB
+#endif
+
//
// Servos
//
@@ -205,9 +213,6 @@
#define FIL_RUNOUT_PIN 39 // SERVO2_PIN
#endif
-#define I2C_EEPROM
-#define MARLIN_EEPROM_SIZE 0x2000 // 8KB
-
//
// M3/M4/M5 - Spindle/Laser Control
//
diff --git a/Marlin/src/pins/sanguino/pins_OMCA.h b/Marlin/src/pins/sanguino/pins_OMCA.h
index eb5786dd11b0..8e4c6d2b641d 100644
--- a/Marlin/src/pins/sanguino/pins_OMCA.h
+++ b/Marlin/src/pins/sanguino/pins_OMCA.h
@@ -49,7 +49,7 @@
* PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
* +--------+
*
- * REF http://sanguino.cc/hardware
+ * REF http://sanguino.wikidot.com/hardware
*/
/**
@@ -70,7 +70,7 @@
*
* When installing select 1.0.2
*
- * Installation instructions can be found at https://learn.sparkfun.com/pages/CustomBoardsArduino
+ * Installation instructions can be found at http://learn.sparkfun.com/pages/CustomBoardsArduino
* Just use the above JSON URL instead of Sparkfun's JSON.
*
* Once installed select the Sanguino board and then select the CPU.
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
index 8f529085c91f..0a733049b87e 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
@@ -144,12 +144,13 @@
#define SPI_FLASH_SIZE 0x200000 // 2MB
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#define HAS_SPI_FLASH_FONT 0
#define HAS_GCODE_PREVIEW 1
#define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 0
#define HAS_LANG_SELECT_SCREEN 0
#define HAS_BAK_VIEW_IN_FLASH 0
+ #define HAS_LOGO_IN_FLASH 0
//SPI 2
#define W25QXX_CS_PIN PB12
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
index 021c2e176110..0fb3a9a8799e 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
@@ -150,12 +150,13 @@
#define SPI_FLASH_SIZE 0x200000 // 2MB
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
#define HAS_SPI_FLASH_FONT 0
#define HAS_GCODE_PREVIEW 1
#define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 0
#define HAS_LANG_SELECT_SCREEN 0
#define HAS_BAK_VIEW_IN_FLASH 0
+ #define HAS_LOGO_IN_FLASH 0
//SPI 2
#define W25QXX_CS_PIN PB12
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
index cf7594f78428..ed281eb00c21 100644
--- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
@@ -47,12 +47,12 @@
#if ENABLED(IIC_BL24CXX_EEPROM)
#define IIC_EEPROM_SDA PA11
#define IIC_EEPROM_SCL PA12
- //#define MARLIN_EEPROM_SIZE 0x4000 // 16Kb (24c16)
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb (24C16)
+ #else
+ #define SDCARD_EEPROM_EMULATION // SD EEPROM until all EEPROM is BL24CXX
+ #define MARLIN_EEPROM_SIZE 0x800 // 2Kb
#endif
- #define SDCARD_EEPROM_EMULATION // SD EEPROM until all EEPROM is BL24CXX
- #define MARLIN_EEPROM_SIZE 0x1000 // 4Kb
-
// SPI
//#define SPI_EEPROM // EEPROM on SPI-0
//#define SPI_CHAN_EEPROM1 ?
@@ -79,6 +79,13 @@
#define Z_PROBE_PIN PB1 // BLTouch IN
+//
+// Filament Runout Sensor
+//
+#ifndef FIL_RUNOUT_PIN
+ #define FIL_RUNOUT_PIN PA4 // "Pulled-high"
+#endif
+
//
// Steppers
//
diff --git a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
index f56f580fc44b..6a30a2cb23ce 100644
--- a/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
+++ b/Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
@@ -84,7 +84,7 @@
#define E0_DIR_PIN PC14
#define E0_ENABLE_PIN PC13
-#if HAS_TMC220x
+#if HAS_TMC_UART
/**
* TMC2208/TMC2209 stepper drivers
@@ -97,9 +97,14 @@
#define Y_HARDWARE_SERIAL Serial1
#define Z_HARDWARE_SERIAL Serial1
#define E0_HARDWARE_SERIAL Serial1
- #define TMC_SERIAL_MULTIPLEXER
- #define SERIAL_MUL_PIN1 PB13
- #define SERIAL_MUL_PIN2 PB12
+
+ // The 4xTMC2209 module doesn't have a serial multiplexer and
+ // needs to set *_SLAVE_ADDRESS in Configuration_adv.h for X,Y,Z,E0
+ #if HAS_DRIVER(TMC2208)
+ #define TMC_SERIAL_MULTIPLEXER
+ #define SERIAL_MUL_PIN1 PB13
+ #define SERIAL_MUL_PIN2 PB12
+ #endif
#endif
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
index 1d0fd15c23b2..610f4b5735dd 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
@@ -45,7 +45,7 @@
#define FLASH_EEPROM_EMULATION
#define EEPROM_PAGE_SIZE (0x800U) // 2KB
#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
- #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2KB
+ #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE // 2KB
#endif
#define ENABLE_SPI2
@@ -123,8 +123,8 @@
//
// Misc. Functions
//
-//#define POWER_LOSS_PIN PA2 // PW_DET
-//#define PS_ON_PIN PA3 // PW_OFF
+#define POWER_LOSS_PIN PA2 // PW_DET
+#define PS_ON_PIN PA3 // PW_OFF
//#define SUICIDE_PIN PB2 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
//#define SUICIDE_PIN_INVERTING false
@@ -132,13 +132,16 @@
//#define KILL_PIN PA2 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
//#define KILL_PIN_INVERTING true // Enable MKSPWC support ROBIN NANO v1.2 ONLY
-//#define SERVO0_PIN PA8 // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
+#define SERVO0_PIN PA8 // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
//#define LED_PIN PB2
#define MT_DET_1_PIN PA4
+#define MT_DET_2_PIN PE6
#define MT_DET_PIN_INVERTING false
+#define WIFI_IO0_PIN PC13
+
//
// SD Card
//
@@ -162,76 +165,28 @@
* to let the bootloader init the screen.
*/
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
- #if HAS_SPI_LCD
+ #define SPI_TFT_CS_PIN PD11
+ #define SPI_TFT_SCK_PIN PA5
+ #define SPI_TFT_MISO_PIN PA6
+ #define SPI_TFT_MOSI_PIN PA7
+ #define SPI_TFT_DC_PIN PD10
+ #define SPI_TFT_RST_PIN PC6
- #define BEEPER_PIN PC5
- #define BTN_ENC PE13
- #define LCD_PINS_ENABLE PD13
- #define LCD_PINS_RS PC6
- #define BTN_EN1 PE8
- #define BTN_EN2 PE11
- #define LCD_BACKLIGHT_PIN -1
+ #define LCD_BACKLIGHT_PIN PD13
- // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
- #if ENABLED(MKS_MINI_12864)
- #define LCD_BACKLIGHT_PIN -1
- #define LCD_RESET_PIN -1
- #define DOGLCD_A0 PD11
- #define DOGLCD_CS PE15
- #define DOGLCD_SCK PA5
- #define DOGLCD_MOSI PA7
-
- // Required for MKS_MINI_12864 with this board
- #define MKS_LCD12864B
- #undef SHOW_BOOTSCREEN
-
- #else // !MKS_MINI_12864
-
- #define LCD_PINS_D4 PE14
- #if ENABLED(ULTIPANEL)
- #define LCD_PINS_D5 PE15
- #define LCD_PINS_D6 PD11
- #define LCD_PINS_D7 PD10
- #endif
-
- #ifndef BOARD_ST7920_DELAY_1
- #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
- #endif
- #ifndef BOARD_ST7920_DELAY_2
- #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
- #endif
- #ifndef BOARD_ST7920_DELAY_3
- #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
- #endif
-
- #endif // !MKS_MINI_12864
-
- #else
-
- #define SPI_TFT_CS_PIN PD11
- #define SPI_TFT_SCK_PIN PA5
- #define SPI_TFT_MISO_PIN PA6
- #define SPI_TFT_MOSI_PIN PA7
- #define SPI_TFT_DC_PIN PD10
- #define SPI_TFT_RST_PIN PC6
-
- #define LCD_BACKLIGHT_PIN PD13
-
- #define TOUCH_CS_PIN PE14 // SPI1_NSS
- #define TOUCH_SCK_PIN PA5 // SPI1_SCK
- #define TOUCH_MISO_PIN PA6 // SPI1_MISO
- #define TOUCH_MOSI_PIN PA7 // SPI1_MOSI
-
- #define BTN_EN1 PE8
- #define BTN_EN2 PE11
- #define BEEPER_PIN PC5
- #define BTN_ENC PE13
-
- #endif // HAS_SPI_LCD
-
-#elif ENABLED(TFT_LVGL_UI)
+ #define TOUCH_CS_PIN PE14 // SPI1_NSS
+ #define TOUCH_SCK_PIN PA5 // SPI1_SCK
+ #define TOUCH_MISO_PIN PA6 // SPI1_MISO
+ #define TOUCH_MOSI_PIN PA7 // SPI1_MOSI
+
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+
+#elif ENABLED(TFT_LVGL_UI_FSMC)
#define FSMC_CS_PIN PD7 // NE4
#define FSMC_RS_PIN PD11 // A0
@@ -243,7 +198,11 @@
#define LCD_BACKLIGHT_PIN PD13
-#elif ENABLED(FSMC_GRAPHICAL_TFT)
+#endif
+
+#if ENABLED(FSMC_GRAPHICAL_TFT)
+ //#define DOGLCD_MOSI -1 // prevent redefine Conditionals_post.h
+ //#define DOGLCD_SCK -1
#define FSMC_CS_PIN PD7 // NE4
#define FSMC_RS_PIN PD11 // A0
@@ -257,9 +216,54 @@
#define TOUCH_MISO_PIN PB14 // SPI2_MISO
#define TOUCH_MOSI_PIN PB15 // SPI2_MOSI
#endif
-
#endif
+#if HAS_SPI_LCD
+
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+ #define LCD_PINS_ENABLE PD13
+ #define LCD_PINS_RS PC6
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define LCD_BACKLIGHT_PIN -1
+
+ // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
+ #if ENABLED(MKS_MINI_12864)
+ #define LCD_BACKLIGHT_PIN -1
+ #define LCD_RESET_PIN -1
+ #define DOGLCD_A0 PD11
+ #define DOGLCD_CS PE15
+ #define DOGLCD_SCK PA5
+ #define DOGLCD_MOSI PA7
+
+ // Required for MKS_MINI_12864 with this board
+ #define MKS_LCD12864B
+ #undef SHOW_BOOTSCREEN
+
+ #else // !MKS_MINI_12864
+
+ #define LCD_PINS_D4 PE14
+ #if ENABLED(ULTIPANEL)
+ #define LCD_PINS_D5 PE15
+ #define LCD_PINS_D6 PD11
+ #define LCD_PINS_D7 PD10
+ #endif
+
+ #ifndef BOARD_ST7920_DELAY_1
+ #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+ #endif
+ #ifndef BOARD_ST7920_DELAY_2
+ #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+ #endif
+ #ifndef BOARD_ST7920_DELAY_3
+ #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+ #endif
+
+ #endif // !MKS_MINI_12864
+
+#endif // HAS_SPI_LCD
+
#define SPI_FLASH
#if ENABLED(SPI_FLASH)
#define W25QXX_CS_PIN PB12
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h
new file mode 100644
index 000000000000..dd0d1e9465ef
--- /dev/null
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h
@@ -0,0 +1,322 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ * MKS Robin nano (STM32F130VET6) board pin assignments
+ */
+
+#ifndef __STM32F1__
+ #error "Oops! Select an STM32F1 board in 'Tools > Board.'"
+#elif HOTENDS > 2 || E_STEPPERS > 2
+ #error "MKS Robin nano supports up to 2 hotends / E-steppers. Comment out this line to continue."
+#endif
+
+#define BOARD_INFO_NAME "MKS Robin nano V2.0"
+
+//
+// Release PB4 (Y_ENABLE_PIN) from JTAG NRST role
+//
+
+//#define DISABLE_DEBUG
+
+//
+// EEPROM
+//
+//#define FLASH_EEPROM_EMULATION
+//#define SDCARD_EEPROM_EMULATION
+
+#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM)
+ #define I2C_EEPROM // EEPROM on I2C-0
+ #define MARLIN_EEPROM_SIZE 0x1000 // 4KB
+#endif
+
+//
+// Note: MKS Robin board is using SPI2 interface.
+//
+//#define SPI_MODULE 2
+#define ENABLE_SPI2
+
+//
+// Limit Switches
+//
+#define X_DIAG_PIN PA15
+#define Y_DIAG_PIN PA12
+#define Z_DIAG_PIN PA11
+#define E0_DIAG_PIN PC4
+#define E1_DIAG_PIN PE7
+
+#define X_STOP_PIN PA15
+#define Y_STOP_PIN PA12
+#define Z_MIN_PIN PA11
+#define Z_MAX_PIN PC4
+
+//
+// Steppers
+//
+#define X_ENABLE_PIN PE4
+#define X_STEP_PIN PE3
+#define X_DIR_PIN PE2
+#ifndef X_CS_PIN
+ #define X_CS_PIN PD5
+#endif
+
+#define Y_ENABLE_PIN PE1
+#define Y_STEP_PIN PE0
+#define Y_DIR_PIN PB9
+#ifndef Y_CS_PIN
+ #define Y_CS_PIN PD7
+#endif
+
+#define Z_ENABLE_PIN PB8
+#define Z_STEP_PIN PB5
+#define Z_DIR_PIN PB4
+#ifndef Z_CS_PIN
+ #define Z_CS_PIN PD4
+#endif
+
+#define E0_ENABLE_PIN PB3
+#define E0_STEP_PIN PD6
+#define E0_DIR_PIN PD3
+#ifndef E0_CS_PIN
+ #define E0_CS_PIN PD9
+#endif
+
+#define E1_ENABLE_PIN PA3
+#define E1_STEP_PIN PD15
+#define E1_DIR_PIN PA1
+#ifndef E1_CS_PIN
+ #define E1_CS_PIN PD8
+#endif
+
+//
+// Software SPI pins for TMC2130 stepper drivers
+//
+#if ENABLED(TMC_USE_SW_SPI)
+ #ifndef TMC_SW_MOSI
+ #define TMC_SW_MOSI PD14
+ #endif
+ #ifndef TMC_SW_MISO
+ #define TMC_SW_MISO PD1
+ #endif
+ #ifndef TMC_SW_SCK
+ #define TMC_SW_SCK PD0
+ #endif
+#endif
+
+#if HAS_TMC_UART
+ /**
+ * TMC2208/TMC2209 stepper drivers
+ *
+ * Hardware serial communication ports.
+ * If undefined software serial is used according to the pins below
+ */
+ //#define X_HARDWARE_SERIAL Serial
+ //#define X2_HARDWARE_SERIAL Serial1
+ //#define Y_HARDWARE_SERIAL Serial1
+ //#define Y2_HARDWARE_SERIAL Serial1
+ //#define Z_HARDWARE_SERIAL Serial1
+ //#define Z2_HARDWARE_SERIAL Serial1
+ //#define E0_HARDWARE_SERIAL Serial1
+ //#define E1_HARDWARE_SERIAL Serial1
+ //#define E2_HARDWARE_SERIAL Serial1
+ //#define E3_HARDWARE_SERIAL Serial1
+ //#define E4_HARDWARE_SERIAL Serial1
+
+ //
+ // Software serial
+ //
+
+ #define X_SERIAL_TX_PIN PD5
+ #define X_SERIAL_RX_PIN PD5
+
+ #define Y_SERIAL_TX_PIN PD7
+ #define Y_SERIAL_RX_PIN PD7
+
+ #define Z_SERIAL_TX_PIN PD4
+ #define Z_SERIAL_RX_PIN PD4
+
+ #define E0_SERIAL_TX_PIN PD9
+ #define E0_SERIAL_RX_PIN PD9
+
+ #define E1_SERIAL_TX_PIN PD8
+ #define E1_SERIAL_RX_PIN PD8
+
+ // Reduce baud rate to improve software serial reliability
+ #define TMC_BAUD_RATE 19200
+#endif // TMC2208 || TMC2209
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN PC1 // TH1
+#define TEMP_1_PIN PC2 // TH2
+#define TEMP_BED_PIN PC0 // TB1
+
+//
+// Heaters / Fans
+//
+#define HEATER_0_PIN PC3 // HEATER1
+#define HEATER_1_PIN PB0 // HEATER2
+#define HEATER_BED_PIN PA0 // HOT BED
+
+#define FAN_PIN PB1 // FAN
+
+//
+// Thermocouples
+//
+//#define MAX6675_SS_PIN PE5 // TC1 - CS1
+//#define MAX6675_SS_PIN PE6 // TC2 - CS2
+
+//
+// Misc. Functions
+//
+#define POWER_LOSS_PIN PA2 // PW_DET
+#define PS_ON_PIN PA3 // PW_OFF
+
+//#define SUICIDE_PIN PB2 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+//#define SUICIDE_PIN_INVERTING false
+
+//#define KILL_PIN PA2 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+//#define KILL_PIN_INVERTING true // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+
+#define SERVO0_PIN PA8 // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
+
+//#define LED_PIN PB2
+
+#define MT_DET_1_PIN PA4
+#define MT_DET_2_PIN PE6
+#define MT_DET_PIN_INVERTING false
+
+#define WIFI_IO0_PIN PC13
+
+//
+// SD Card
+//
+#ifndef SDCARD_CONNECTION
+ #define SDCARD_CONNECTION ONBOARD
+#endif
+
+#define SDIO_SUPPORT
+#define SDIO_CLOCK 4500000 // 4.5 MHz
+#define SD_DETECT_PIN PD12
+#define ONBOARD_SD_CS_PIN PC11
+
+//
+// LCD / Controller
+//
+#define BEEPER_PIN PC5
+
+/**
+ * Note: MKS Robin TFT screens use various TFT controllers.
+ * If the screen stays white, disable 'LCD_RESET_PIN'
+ * to let the bootloader init the screen.
+ */
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+
+ #define SPI_TFT_CS_PIN PD11
+ #define SPI_TFT_SCK_PIN PA5
+ #define SPI_TFT_MISO_PIN PA6
+ #define SPI_TFT_MOSI_PIN PA7
+ #define SPI_TFT_DC_PIN PD10
+ #define SPI_TFT_RST_PIN PC6
+
+ #define LCD_BACKLIGHT_PIN PD13
+
+ #define TOUCH_CS_PIN PE14 // SPI1_NSS
+ #define TOUCH_SCK_PIN PA5 // SPI1_SCK
+ #define TOUCH_MISO_PIN PA6 // SPI1_MISO
+ #define TOUCH_MOSI_PIN PA7 // SPI1_MOSI
+
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+
+#elif ENABLED(TFT_LITTLE_VGL_UI)
+
+ #define FSMC_CS_PIN PD7 // NE4
+ #define FSMC_RS_PIN PD11 // A0
+
+ #define TOUCH_CS_PIN PA7 // SPI2_NSS
+ #define TOUCH_SCK_PIN PB13 // SPI2_SCK
+ #define TOUCH_MISO_PIN PB14 // SPI2_MISO
+ #define TOUCH_MOSI_PIN PB15 // SPI2_MOSI
+
+ #define LCD_BACKLIGHT_PIN PD13
+
+#endif
+
+#if HAS_SPI_LCD
+
+ #define BEEPER_PIN PC5
+ #define BTN_ENC PE13
+ #define LCD_PINS_ENABLE PD13
+ #define LCD_PINS_RS PC6
+ #define BTN_EN1 PE8
+ #define BTN_EN2 PE11
+ #define LCD_BACKLIGHT_PIN -1
+
+ // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
+ #if ENABLED(MKS_MINI_12864)
+ #define LCD_BACKLIGHT_PIN -1
+ #define LCD_RESET_PIN -1
+ #define DOGLCD_A0 PD11
+ #define DOGLCD_CS PE15
+ #define DOGLCD_SCK PA5
+ #define DOGLCD_MOSI PA7
+
+ // Required for MKS_MINI_12864 with this board
+ #define MKS_LCD12864B
+ #undef SHOW_BOOTSCREEN
+
+ #else // !MKS_MINI_12864
+
+ #define LCD_PINS_D4 PE14
+ #if ENABLED(ULTIPANEL)
+ #define LCD_PINS_D5 PE15
+ #define LCD_PINS_D6 PD11
+ #define LCD_PINS_D7 PD10
+ #endif
+
+ #ifndef BOARD_ST7920_DELAY_1
+ #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+ #endif
+ #ifndef BOARD_ST7920_DELAY_2
+ #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+ #endif
+ #ifndef BOARD_ST7920_DELAY_3
+ #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+ #endif
+
+ #endif // !MKS_MINI_12864
+
+#endif // HAS_SPI_LCD
+
+#define SPI_FLASH
+#if ENABLED(SPI_FLASH)
+ #define W25QXX_CS_PIN PB12
+ #define W25QXX_MOSI_PIN PB15
+ #define W25QXX_MISO_PIN PB14
+ #define W25QXX_SCK_PIN PB13
+#endif
diff --git a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h
index e0e827262fc9..e6350f71dcdb 100644
--- a/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h
+++ b/Marlin/src/pins/stm32f4/pins_BLACK_STM32F407VE.h
@@ -23,7 +23,7 @@
/**
* STM32F407VET6 with RAMPS-like shield
- * 'Black' STM32F407VET6 board - http://wiki.stm32duino.com/index.php?title=STM32F407
+ * 'Black' STM32F407VET6 board - https://www.stm32duino.com/viewtopic.php?t=485
* Shield - https://github.com/jmz52/Hardware
*/
diff --git a/Marlin/src/sd/SdFatStructs.h b/Marlin/src/sd/SdFatStructs.h
index dc6fb7d263bf..e06e05981ad2 100644
--- a/Marlin/src/sd/SdFatStructs.h
+++ b/Marlin/src/sd/SdFatStructs.h
@@ -39,7 +39,7 @@
/**
* mostly from Microsoft document fatgen103.doc
- * http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
+ * https://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
*/
uint8_t const BOOTSIG0 = 0x55, // Value for byte 510 of boot block or MBR
diff --git a/Marlin/src/sd/SdInfo.h b/Marlin/src/sd/SdInfo.h
index 4affa21c509e..bfa5a01ae2af 100644
--- a/Marlin/src/sd/SdInfo.h
+++ b/Marlin/src/sd/SdInfo.h
@@ -39,7 +39,7 @@
// Version 3.01
// May 18, 2010
//
-// http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs
+// https://www.sdcard.org/downloads/pls/index.html
// SD card commands
uint8_t const CMD0 = 0x00, // GO_IDLE_STATE - init card in spi mode if CS low
diff --git a/README.md b/README.md
index 00ed7e96fd63..042cf3303b8a 100644
--- a/README.md
+++ b/README.md
@@ -52,8 +52,8 @@ Marlin 2.0 introduces a layer of abstraction so that all the existing high-level
boards|processor|speed|flash|sram|logic|fpu
----|---------|-----|-----|----|-----|---
- [Re-ARM](https://www.kickstarter.com/projects/1245051645/re-arm-for-ramps-simple-32-bit-upgrade)|[LPC1768 ARM-Cortex M3](http://www.nxp.com/products/microcontrollers-and-processors/arm-based-processors-and-mcus/lpc-cortex-m-mcus/lpc1700-cortex-m3/512kb-flash-64kb-sram-ethernet-usb-lqfp100-package:LPC1768FBD100)|100MHz|512k|32+16+16k|3.3-5V|no
- [MKS SBASE](http://forums.reprap.org/read.php?13,499322)|LPC1768 ARM-Cortex M3|100MHz|512k|32+16+16k|3.3-5V|no
+ [Re-ARM](https://www.kickstarter.com/projects/1245051645/re-arm-for-ramps-simple-32-bit-upgrade)|[LPC1768 ARM-Cortex M3](https://www.nxp.com/products/microcontrollers-and-processors/arm-based-processors-and-mcus/lpc-cortex-m-mcus/lpc1700-cortex-m3/512kb-flash-64kb-sram-ethernet-usb-lqfp100-package:LPC1768FBD100)|100MHz|512k|32+16+16k|3.3-5V|no
+ [MKS SBASE](https://reprap.org/forum/read.php?13,499322)|LPC1768 ARM-Cortex M3|100MHz|512k|32+16+16k|3.3-5V|no
[Selena Compact](https://github.com/Ales2-k/Selena)|LPC1768 ARM-Cortex M3|100MHz|512k|32+16+16k|3.3-5V|no
[Azteeg X5 GT](https://www.panucatt.com/azteeg_X5_GT_reprap_3d_printer_controller_p/ax5gt.htm)|LPC1769 ARM-Cortex M3|120MHz|512k|32+16+16k|3.3-5V|no
[Smoothieboard](https://reprap.org/wiki/Smoothieboard)|LPC1769 ARM-Cortex M3|120MHz|512k|64k|3.3-5V|no
@@ -75,7 +75,7 @@ Marlin 2.0 introduces a layer of abstraction so that all the existing high-level
boards|processor|speed|flash|sram|logic|fpu
----|---------|-----|-----|----|-----|---
- [STEVAL-3DP001V1](https://www.st.com/en/evaluation-tools/steval-3dp001v1.html)|[STM32F401VE Arm-Cortex M4](http://www.st.com/en/microcontrollers/stm32f401ve.html)|84MHz|512k|64+32k|3.3-5V|yes
+ [STEVAL-3DP001V1](https://www.st.com/en/evaluation-tools/steval-3dp001v1.html)|[STM32F401VE Arm-Cortex M4](https://www.st.com/en/microcontrollers-microprocessors/stm32f401ve.html)|84MHz|512k|64+32k|3.3-5V|yes
#### Teensy++ 2.0
@@ -110,12 +110,12 @@ Proposed patches should be submitted as a Pull Request against the ([bugfix-2.0.
The current Marlin dev team consists of:
- - Scott Lahteine [[@thinkyhead](https://github.com/thinkyhead)] - USA [Donate](https://www.thinkyhead.com/donate-to-marlin) / Flattr: [](https://flattr.com/submit/auto?user_id=thinkyhead&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
+ - Scott Lahteine [[@thinkyhead](https://github.com/thinkyhead)] - USA [Donate](https://www.thinkyhead.com/donate-to-marlin) / Flattr: [](https://flattr.com/submit/auto?user_id=thinkyhead&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
- Roxanne Neufeld [[@Roxy-3D](https://github.com/Roxy-3D)] - USA
- Chris Pepper [[@p3p](https://github.com/p3p)] - UK
- Bob Kuhn [[@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn)] - USA
- João Brazio [[@jbrazio](https://github.com/jbrazio)] - Portugal
- - Erik van der Zalm [[@ErikZalm](https://github.com/ErikZalm)] - Netherlands [](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
+ - Erik van der Zalm [[@ErikZalm](https://github.com/ErikZalm)] - Netherlands [](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
## License
diff --git a/buildroot/bin/generate_version b/buildroot/bin/generate_version
index 70efe824a7c3..b88e3de918b7 100755
--- a/buildroot/bin/generate_version
+++ b/buildroot/bin/generate_version
@@ -63,7 +63,7 @@ cat > "${DIR}/Version.h" <.
+ * along with this program. If not, see .
*
*/
#pragma once
diff --git a/buildroot/etc/udev/rules.d/99-platformio-udev.rules b/buildroot/etc/udev/rules.d/99-platformio-udev.rules
index 6daaf922bff5..3c829882d1cd 100644
--- a/buildroot/etc/udev/rules.d/99-platformio-udev.rules
+++ b/buildroot/etc/udev/rules.d/99-platformio-udev.rules
@@ -4,7 +4,7 @@
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,7 +16,7 @@
#
# INSTALLATION
#
-# Please visit > http://docs.platformio.org/en/latest/faq.html#platformio-udev-rules
+# Please visit > https://docs.platformio.org/en/latest/faq.html#platformio-udev-rules
#
#####################################################################################
diff --git a/buildroot/share/PlatformIO/boards/BigTree_Btt002.json b/buildroot/share/PlatformIO/boards/BigTree_Btt002.json
index ef3333cbb936..d0d092f1eaba 100644
--- a/buildroot/share/PlatformIO/boards/BigTree_Btt002.json
+++ b/buildroot/share/PlatformIO/boards/BigTree_Btt002.json
@@ -41,6 +41,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407vg.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407vg.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/BigTree_GTR_v1.json b/buildroot/share/PlatformIO/boards/BigTree_GTR_v1.json
index 669a7520bbce..32236301c347 100644
--- a/buildroot/share/PlatformIO/boards/BigTree_GTR_v1.json
+++ b/buildroot/share/PlatformIO/boards/BigTree_GTR_v1.json
@@ -41,6 +41,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407zg.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407zg.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/BigTree_SKR_Pro.json b/buildroot/share/PlatformIO/boards/BigTree_SKR_Pro.json
index 357b3acca942..211ceacdca0b 100644
--- a/buildroot/share/PlatformIO/boards/BigTree_SKR_Pro.json
+++ b/buildroot/share/PlatformIO/boards/BigTree_SKR_Pro.json
@@ -41,6 +41,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407zg.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407zg.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/CHITU_F103.json b/buildroot/share/PlatformIO/boards/CHITU_F103.json
index ab772aea07d0..ecf7bff66c87 100644
--- a/buildroot/share/PlatformIO/boards/CHITU_F103.json
+++ b/buildroot/share/PlatformIO/boards/CHITU_F103.json
@@ -43,6 +43,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f103ze.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f103ze.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/FLYF407ZG.json b/buildroot/share/PlatformIO/boards/FLYF407ZG.json
index 060b50ee8c05..7e585c5057ca 100644
--- a/buildroot/share/PlatformIO/boards/FLYF407ZG.json
+++ b/buildroot/share/PlatformIO/boards/FLYF407ZG.json
@@ -59,6 +59,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407ZG.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407ZG.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/LERDGE.json b/buildroot/share/PlatformIO/boards/LERDGE.json
index b3e4ca44fa90..21df8db48e7e 100644
--- a/buildroot/share/PlatformIO/boards/LERDGE.json
+++ b/buildroot/share/PlatformIO/boards/LERDGE.json
@@ -59,6 +59,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407ZG.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407ZG.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/blackSTM32F407VET6.json b/buildroot/share/PlatformIO/boards/blackSTM32F407VET6.json
index 1778ddaaf020..176563408602 100644
--- a/buildroot/share/PlatformIO/boards/blackSTM32F407VET6.json
+++ b/buildroot/share/PlatformIO/boards/blackSTM32F407VET6.json
@@ -59,6 +59,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/en/microcontrollers/stm32f407ve.html",
+ "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32f407ve.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/boards/malyanM200.json b/buildroot/share/PlatformIO/boards/malyanM200.json
index bd783fe899fc..4dbf76077404 100644
--- a/buildroot/share/PlatformIO/boards/malyanM200.json
+++ b/buildroot/share/PlatformIO/boards/malyanM200.json
@@ -30,6 +30,6 @@
"use_1200bps_touch": false,
"wait_for_upload_port": false
},
- "url": "http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103cb.html",
+ "url": "https://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103cb.html",
"vendor": "Generic"
}
diff --git a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h
similarity index 65%
rename from buildroot/share/PlatformIO/scripts/common-features-dependencies.h
rename to buildroot/share/PlatformIO/scripts/common-dependencies.h
index 44d690fc1010..a1f8b095add7 100644
--- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h
+++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h
@@ -16,7 +16,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
*/
#pragma once
@@ -24,18 +24,14 @@
/**
* The purpose of this file is just include Marlin Configuration files,
* to discover which FEATURES are enabled, without any HAL include.
- * Used by common-features-dependencies.py
+ * Used by common-dependencies.py
*/
-#ifndef __MARLIN_FIRMWARE__
-#define __MARLIN_FIRMWARE__
-#endif
-
-//
-// Prefix header to acquire configurations
-//
#include
+// Include platform headers
+//#include "../../../../Marlin/src/HAL/platforms.h"
+
#include "../../../../Marlin/src/core/boards.h"
#include "../../../../Marlin/src/core/macros.h"
#include "../../../../Marlin/Configuration.h"
@@ -44,7 +40,28 @@
#include "../../../../Marlin/src/inc/Conditionals_LCD.h"
+#ifdef HAL_PATH
+ #include HAL_PATH(../../../../Marlin/src/HAL, inc/Conditionals_LCD.h)
+#endif
+
#include "../../../../Marlin/src/core/drivers.h"
#include "../../../../Marlin/Configuration_adv.h"
#include "../../../../Marlin/src/inc/Conditionals_adv.h"
+
+#ifdef HAL_PATH
+ #include HAL_PATH(../../../../Marlin/src/HAL, inc/Conditionals_adv.h)
+#endif
+
+//#include "../../../../Marlin/src/pins/pins.h"
+
+#ifdef HAL_PATH
+ #include HAL_PATH(../../../../Marlin/src/HAL, timers.h)
+ #include HAL_PATH(../../../../Marlin/src/HAL, spi_pins.h)
+#endif
+
+#include "../../../../Marlin/src/inc/Conditionals_post.h"
+
+#ifdef HAL_PATH
+ #include HAL_PATH(../../../../Marlin/src/HAL, inc/Conditionals_post.h)
+#endif
diff --git a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py
similarity index 59%
rename from buildroot/share/PlatformIO/scripts/common-features-dependencies.py
rename to buildroot/share/PlatformIO/scripts/common-dependencies.py
index 179af2229421..37efaa37436f 100644
--- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py
+++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py
@@ -1,5 +1,5 @@
#
-# common-features-dependencies.py
+# common-dependencies.py
# Convenience script to check dependencies and add libs and sources for Marlin Enabled Features
#
import subprocess
@@ -30,12 +30,8 @@ def load_config():
parts = dep.split('=')
name = parts.pop(0)
rest = '='.join(parts)
- if name == 'extra_scripts':
- FEATURE_DEPENDENCIES[ukey]['extra_scripts'] = rest
- elif name == 'src_filter':
- FEATURE_DEPENDENCIES[ukey]['src_filter'] = rest
- elif name == 'lib_ignore':
- FEATURE_DEPENDENCIES[ukey]['lib_ignore'] = rest
+ if name in ['extra_scripts', 'src_filter', 'lib_ignore']:
+ FEATURE_DEPENDENCIES[ukey][name] = rest
else:
FEATURE_DEPENDENCIES[ukey]['lib_deps'] += [dep]
@@ -51,23 +47,25 @@ def get_all_known_libs():
def get_all_env_libs():
env_libs = []
- lib_deps = env.GetProjectOption("lib_deps")
+ lib_deps = env.GetProjectOption('lib_deps')
for dep in lib_deps:
name, _, _ = PackageManager.parse_pkg_uri(dep)
env_libs.append(name)
return env_libs
-# We need to ignore all non-used libs,
-# so if a lib folder lay forgotten in .pio/lib_deps, it
-# will not break compiling
+def set_env_field(field, value):
+ proj = env.GetProjectConfig()
+ proj.set("env:" + env['PIOENV'], field, value)
+
+# All unused libs should be ignored so that if a library
+# exists in .pio/lib_deps it will not break compilation.
def force_ignore_unused_libs():
env_libs = get_all_env_libs()
known_libs = get_all_known_libs()
diff = (list(set(known_libs) - set(env_libs)))
- lib_ignore = env.GetProjectOption("lib_ignore") + diff
- print("Ignoring libs: ", lib_ignore)
- proj = env.GetProjectConfig()
- proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore)
+ lib_ignore = env.GetProjectOption('lib_ignore') + diff
+ print("Ignoring libs:", lib_ignore)
+ set_env_field('lib_ignore', lib_ignore)
def install_features_dependencies():
load_config()
@@ -84,25 +82,24 @@ def install_features_dependencies():
name, _, _ = PackageManager.parse_pkg_uri(dep)
deps_to_add[name] = dep
- # first check if the env already have the dep
- deps = env.GetProjectOption("lib_deps")
+ # Does the env already have the dependency?
+ deps = env.GetProjectOption('lib_deps')
for dep in deps:
name, _, _ = PackageManager.parse_pkg_uri(dep)
if name in deps_to_add:
del deps_to_add[name]
- # check if we need ignore any lib
- lib_ignore = env.GetProjectOption("lib_ignore")
+ # Are there any libraries that should be ignored?
+ lib_ignore = env.GetProjectOption('lib_ignore')
for dep in deps:
name, _, _ = PackageManager.parse_pkg_uri(dep)
if name in deps_to_add:
del deps_to_add[name]
- # any left?
+ # Is there anything left?
if len(deps_to_add) > 0:
- # add only the missing deps
- proj = env.GetProjectConfig()
- proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values()))
+ # Only add the missing dependencies
+ set_env_field('lib_deps', deps + list(deps_to_add.values()))
if 'extra_scripts' in FEATURE_DEPENDENCIES[feature]:
print("Executing extra_scripts for %s... " % feature)
@@ -110,8 +107,7 @@ def install_features_dependencies():
if 'src_filter' in FEATURE_DEPENDENCIES[feature]:
print("Adding src_filter for %s... " % feature)
- proj = env.GetProjectConfig()
- src_filter = ' '.join(env.GetProjectOption("src_filter"))
+ src_filter = ' '.join(env.GetProjectOption('src_filter'))
# first we need to remove the references to the same folder
my_srcs = re.findall( r'[+-](<.*?>)', FEATURE_DEPENDENCIES[feature]['src_filter'])
cur_srcs = re.findall( r'[+-](<.*?>)', src_filter)
@@ -120,49 +116,81 @@ def install_features_dependencies():
src_filter = re.sub(r'[+-]' + d, '', src_filter)
src_filter = FEATURE_DEPENDENCIES[feature]['src_filter'] + ' ' + src_filter
- proj.set("env:" + env["PIOENV"], "src_filter", [src_filter])
+ set_env_field('src_filter', [src_filter])
env.Replace(SRC_FILTER=src_filter)
-# search the current compiler, considering the OS
+ if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]:
+ print("Ignoring libs for %s... " % feature)
+ lib_ignore = env.GetProjectOption('lib_ignore') + [FEATURE_DEPENDENCIES[feature]['lib_ignore']]
+ set_env_field('lib_ignore', lib_ignore)
+
+#
+# Find a compiler, considering the OS
+#
+ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV'])
+GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path")
def search_compiler():
+ if os.path.exists(GCC_PATH_CACHE):
+ print('Getting g++ path from cache')
+ with open(GCC_PATH_CACHE, 'r') as f:
+ return f.read()
+
+ # PlatformIO inserts the toolchain bin folder on the front of the $PATH
+ # Find the current platform compiler by searching the $PATH
if env['PLATFORM'] == 'win32':
- # the first path have the compiler
- for path in env['ENV']['PATH'].split(';'):
- if not re.search(r'platformio\\packages.*\\bin', path):
- continue
- #print(path)
- for file in os.listdir(path):
- if file.endswith("g++.exe"):
- return file
- print("Could not find the g++")
- return None
+ path_separator = ';'
+ path_regex = r'platformio\\packages.*\\bin'
+ gcc = "g++.exe"
else:
- return env.get('CXX')
+ path_separator = ':'
+ path_regex = r'platformio/packages.*/bin'
+ gcc = "g++"
+
+ # Search for the compiler
+ for path in env['ENV']['PATH'].split(path_separator):
+ if not re.search(path_regex, path):
+ continue
+ for file in os.listdir(path):
+ if not file.endswith(gcc):
+ continue
+ # Cache the g++ path to no search always
+ if os.path.exists(ENV_BUILD_PATH):
+ print('Caching g++ for current env')
+ with open(GCC_PATH_CACHE, 'w+') as f:
+ f.write(file)
-# load marlin features
+ return file
+
+ file = env.get('CXX')
+ print("Couldn't find a compiler! Fallback to", file)
+ return file
+
+#
+# Use the compiler to get a list of all enabled features
+#
def load_marlin_features():
if "MARLIN_FEATURES" in env:
return
- # procces defines
- # print(env.Dump())
+ # Process defines
+ #print(env.Dump())
build_flags = env.get('BUILD_FLAGS')
build_flags = env.ParseFlagsExtended(build_flags)
cxx = search_compiler()
cmd = [cxx]
- # build flags from board.json
- # if 'BOARD' in env:
- # cmd += [env.BoardConfig().get("build.extra_flags")]
+ # Build flags from board.json
+ #if 'BOARD' in env:
+ # cmd += [env.BoardConfig().get("build.extra_flags")]
for s in build_flags['CPPDEFINES']:
if isinstance(s, tuple):
cmd += ['-D' + s[0] + '=' + str(s[1])]
else:
cmd += ['-D' + s]
- # cmd += ['-w -dM -E -x c++ Marlin/src/inc/MarlinConfigPre.h']
- cmd += ['-w -dM -E -x c++ buildroot/share/PlatformIO/scripts/common-features-dependencies.h']
+
+ cmd += ['-w -dM -E -x c++ buildroot/share/PlatformIO/scripts/common-dependencies.h']
cmd = ' '.join(cmd)
print(cmd)
define_list = subprocess.check_output(cmd, shell=True).splitlines()
@@ -173,15 +201,22 @@ def load_marlin_features():
marlin_features[feature] = definition
env["MARLIN_FEATURES"] = marlin_features
+#
+# Return True if a matching feature is enabled
+#
def MarlinFeatureIsEnabled(env, feature):
load_marlin_features()
r = re.compile(feature)
matches = list(filter(r.match, env["MARLIN_FEATURES"]))
return len(matches) > 0
-# add a method for others scripts to check if a feature is enabled
+#
+# Add a method for other PIO scripts to query enabled features
+#
env.AddMethod(MarlinFeatureIsEnabled)
-# install all dependencies for features enabled in Configuration.h
+#
+# Add dependencies for enabled Marlin features
+#
install_features_dependencies()
force_ignore_unused_libs()
diff --git a/buildroot/share/PlatformIO/scripts/copy_marlin_variant_to_framework.py b/buildroot/share/PlatformIO/scripts/copy_marlin_variant_to_framework.py
index c27019990fc5..02957ec47026 100644
--- a/buildroot/share/PlatformIO/scripts/copy_marlin_variant_to_framework.py
+++ b/buildroot/share/PlatformIO/scripts/copy_marlin_variant_to_framework.py
@@ -15,19 +15,6 @@ def copytree(src, dst, symlinks=False, ignore=None):
platform = env.PioPlatform()
board = env.BoardConfig()
variant = board.get("build.variant")
-variant_dir = ' +';
-src_filter = env.get("SRC_FILTER")
-print("Starting SRC Filter:", env.get("SRC_FILTER"))
-src_filter_value = src_filter[0];
-
-src_filter_value = src_filter_value + variant_dir
-src_filter[0] = src_filter_value;
-env["SRC_FILTER"] = src_filter
-
-print("Modified SRC Filter:", env.get("SRC_FILTER"))
-
-cxx_flags = env['CXXFLAGS']
-print("CXXFLAGS", cxx_flags)
FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoststm32")
assert os.path.isdir(FRAMEWORK_DIR)
diff --git a/buildroot/share/PlatformIO/scripts/creality.py b/buildroot/share/PlatformIO/scripts/creality.py
index d7b7823356a7..b9d7d7039bb4 100644
--- a/buildroot/share/PlatformIO/scripts/creality.py
+++ b/buildroot/share/PlatformIO/scripts/creality.py
@@ -5,12 +5,13 @@
for define in env['CPPDEFINES']:
if define[0] == "VECT_TAB_ADDR":
env['CPPDEFINES'].remove(define)
+
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/creality.ld")
-for i, flag in enumerate(env["LINKFLAGS"]):
+
+for i, flag in enumerate(env['LINKFLAGS']):
if "-Wl,-T" in flag:
- env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script
+ env['LINKFLAGS'][i] = "-Wl,-T" + custom_ld_script
elif flag == "-T":
- env["LINKFLAGS"][i + 1] = custom_ld_script
-
+ env['LINKFLAGS'][i + 1] = custom_ld_script
diff --git a/buildroot/share/PlatformIO/scripts/download_mks_assets.py b/buildroot/share/PlatformIO/scripts/download_mks_assets.py
new file mode 100644
index 000000000000..ae2ce467e84a
--- /dev/null
+++ b/buildroot/share/PlatformIO/scripts/download_mks_assets.py
@@ -0,0 +1,46 @@
+Import("env")
+import os
+import requests
+import zipfile
+import tempfile
+import shutil
+
+url = "https://github.com/makerbase-mks/Mks-Robin-Nano-Marlin2.0-Firmware/archive/master.zip"
+zip_path = os.path.join(env.Dictionary("PROJECT_LIBDEPS_DIR"), "mks-assets.zip")
+assets_path = os.path.join(env.Dictionary("PROJECT_BUILD_DIR"), env.Dictionary("PIOENV"), "assets")
+
+def download_mks_assets():
+ print("Downloading MKS Assets")
+ r = requests.get(url, stream=True)
+ # the user may have a very clean workspace,
+ # so create the PROJECT_LIBDEPS_DIR directory if not exits
+ if os.path.exists(env.Dictionary("PROJECT_LIBDEPS_DIR")) == False:
+ os.mkdir(env.Dictionary("PROJECT_LIBDEPS_DIR"))
+ with open(zip_path, 'wb') as fd:
+ for chunk in r.iter_content(chunk_size=128):
+ fd.write(chunk)
+
+def copy_mks_assets():
+ print("Copying MKS Assets")
+ output_path = tempfile.mkdtemp()
+ zip_obj = zipfile.ZipFile(zip_path, 'r')
+ zip_obj.extractall(output_path)
+ zip_obj.close()
+ if os.path.exists(assets_path) == True and os.path.isdir(assets_path) == False:
+ os.unlink(assets_path)
+ if os.path.exists(assets_path) == False:
+ os.mkdir(assets_path)
+ base_path = ''
+ for filename in os.listdir(output_path):
+ base_path = filename
+ for filename in os.listdir(os.path.join(output_path, base_path, 'Firmware', 'mks_font')):
+ shutil.copy(os.path.join(output_path, base_path, 'Firmware', 'mks_font', filename), assets_path)
+ for filename in os.listdir(os.path.join(output_path, base_path, 'Firmware', 'mks_pic')):
+ shutil.copy(os.path.join(output_path, base_path, 'Firmware', 'mks_pic', filename), assets_path)
+ shutil.rmtree(output_path, ignore_errors=True)
+
+if os.path.exists(zip_path) == False:
+ download_mks_assets()
+
+if os.path.exists(assets_path) == False:
+ copy_mks_assets()
diff --git a/buildroot/share/PlatformIO/scripts/random-bin.py b/buildroot/share/PlatformIO/scripts/random-bin.py
new file mode 100644
index 000000000000..4d7ca5dc09b7
--- /dev/null
+++ b/buildroot/share/PlatformIO/scripts/random-bin.py
@@ -0,0 +1,5 @@
+Import("env")
+
+from datetime import datetime
+
+env['PROGNAME'] = datetime.now().strftime("firmware-%Y%m%d-%H%M%S")
diff --git a/buildroot/share/extras/header.h b/buildroot/share/extras/header.h
index 71338b62d6b4..5d2c73dfbeef 100644
--- a/buildroot/share/extras/header.h
+++ b/buildroot/share/extras/header.h
@@ -16,7 +16,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
*/
diff --git a/buildroot/share/fonts/README.md b/buildroot/share/fonts/README.md
index 4e6f6f9b1528..cc09b5281063 100644
--- a/buildroot/share/fonts/README.md
+++ b/buildroot/share/fonts/README.md
@@ -5,7 +5,7 @@
The original author of the following font files is [A. Hardtung](https://github.com/AnHardt).
Any copyright is dedicated to the Public Domain.
-http://creativecommons.org/publicdomain/zero/1.0/
+https://creativecommons.org/publicdomain/zero/1.0/
- HD44780_C.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a))
- HD44780_J.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a))
@@ -16,8 +16,8 @@ http://creativecommons.org/publicdomain/zero/1.0/
- ISO10646_Kana.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a))
- Marlin_symbols.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a))
-Additional changes to the original font files distributed with Marlin are copyrighted under the terms of the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.txt) license.
+Additional changes to the original font files distributed with Marlin are copyrighted under the terms of the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.txt) license.
## Documentation
-For detailed information about [adding new fonts](http://www.marlinfw.org/docs/development/fonts.html) to Marlin visit our documentation website.
+For detailed information about [adding new fonts](https://www.marlinfw.org/docs/development/fonts.html) to Marlin visit our documentation website.
diff --git a/buildroot/share/fonts/genallfont.sh b/buildroot/share/fonts/genallfont.sh
index 84f7bb92aa7f..66f8e2c84f78 100755
--- a/buildroot/share/fonts/genallfont.sh
+++ b/buildroot/share/fonts/genallfont.sh
@@ -116,7 +116,7 @@ if [ 1 = 1 ]; then
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * along with this program. If not, see .
*
*/
#include
diff --git a/buildroot/share/fonts/uxggenpages.md b/buildroot/share/fonts/uxggenpages.md
index c2d94735c709..5e40c392f7f6 100644
--- a/buildroot/share/fonts/uxggenpages.md
+++ b/buildroot/share/fonts/uxggenpages.md
@@ -99,11 +99,11 @@ At this time, the font file `marlin-6x12-3.bdf` is used to generate the font dat
- [WQY](http://wenq.org/)
- [WQY 9pt bitmap font](http://wenq.org/daily/wqy-bitmapfont-bdf-gb18030-nightly_build.tar.gz)
-- [unifont (16x8 or 16x16)](http://unifoundry.com/unifont.html)
+- [unifont (16x8 or 16x16)](https://unifoundry.com/unifont.html)
Documents related to the old version of the language engine:
-- [Marlin Fonts Documentation](http://www.marlinfw.org/docs/development/fonts.html)
+- [Marlin Fonts Documentation](https://www.marlinfw.org/docs/development/fonts.html)
- [Marlin LCD Language](https://marlinfw.org/docs/development/lcd_language.html)
- [U8GLIB](https://github.com/olikraus/u8glib.git)
- [UTF-8 for U8GLIB](https://github.com/yhfudev/u8glib-fontutf8.git)
diff --git a/buildroot/share/scripts/createTemperatureLookupMarlin.py b/buildroot/share/scripts/createTemperatureLookupMarlin.py
index 03450bc0e0be..b2d8964f556c 100755
--- a/buildroot/share/scripts/createTemperatureLookupMarlin.py
+++ b/buildroot/share/scripts/createTemperatureLookupMarlin.py
@@ -2,10 +2,10 @@
"""Thermistor Value Lookup Table Generator
Generates lookup to temperature values for use in a microcontroller in C format based on:
-http://en.wikipedia.org/wiki/Steinhart-Hart_equation
+https://en.wikipedia.org/wiki/Steinhart-Hart_equation
The main use is for Arduino programs that read data from the circuit board described here:
-http://reprap.org/wiki/Temperature_Sensor_v2.0
+https://reprap.org/wiki/Temperature_Sensor_v2.0
Usage: python createTemperatureLookupMarlin.py [options]
diff --git a/buildroot/share/vscode/auto_build.py b/buildroot/share/vscode/auto_build.py
index 1d4ea12c7bec..5dd2d0d8a3fc 100644
--- a/buildroot/share/vscode/auto_build.py
+++ b/buildroot/share/vscode/auto_build.py
@@ -18,7 +18,7 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
+# along with this program. If not, see .
#
#######################################
diff --git a/buildroot/tests/STM32F103RET6_creality-tests b/buildroot/tests/STM32F103RET6_creality-tests
index f9ae634ebc76..ca723c7aa229 100644
--- a/buildroot/tests/STM32F103RET6_creality-tests
+++ b/buildroot/tests/STM32F103RET6_creality-tests
@@ -10,6 +10,7 @@ set -e
# Build with configs included in the PR
#
use_example_configs "Creality/Ender-3 V2"
+opt_enable MARLIN_DEV_MODE
exec_test $1 $2 "Ender 3 v2"
restore_configs
diff --git a/buildroot/tests/mega2560-tests b/buildroot/tests/mega2560-tests
index 3a969c9cf72a..a3920b94688c 100755
--- a/buildroot/tests/mega2560-tests
+++ b/buildroot/tests/mega2560-tests
@@ -103,7 +103,8 @@ exec_test $1 $2 "MEGACONTROLLER | Minipanel | M100 | PWM_MOTOR_CURRENT | PRINTCO
restore_configs
opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
opt_set LCD_LANGUAGE el_gr
-opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY
+opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY \
+ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_IGNORE_Z
opt_set MIXING_STEPPERS 5
opt_set LCD_LANGUAGE ru
exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Greek"
@@ -141,7 +142,8 @@ opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \
FIX_MOUNTED_PROBE AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE FILAMENT_WIDTH_SENSOR \
Z_SAFE_HOMING SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER \
SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT ADVANCED_OK M114_DETAIL \
- VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT
+ VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT \
+ USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_USE_Z_ONLY
opt_set FAN_MIN_PWM 50
opt_set FAN_KICKSTART_TIME 100
opt_set XY_FREQUENCY_LIMIT 15
diff --git a/platformio.ini b/platformio.ini
index 246abc11bde4..543b837f54d3 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -25,10 +25,18 @@ include_dir = Marlin
# The 'common' values are used for most Marlin builds
#
[common]
-default_src_filter = + - - + -
- - - - - -
+default_src_filter = + - - +
+ - - - -
+ - - - -
+ -
+ -
+ - -
+ - -
+ - -
+ - -
+ -
extra_scripts =
- pre:buildroot/share/PlatformIO/scripts/common-features-dependencies.py
+ pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py
build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-all-constants
lib_deps =
@@ -37,24 +45,35 @@ lib_deps =
# Feature Dependencies
#
[features]
-TFT_LVGL_UI = MKS-LittlevGL=https://github.com/makerbase-mks/MKS-LittlevGL/archive/master.zip
- src_filter=+
-HAS_TRINAMIC_CONFIG = TMCStepper@~0.7.1
-SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
-DIGIPOT_MCP4... = SlowSoftI2CMaster
-HAS_TMC26X = TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip
-HAS_L64XX = Arduino-L6470@0.8.0
-NEOPIXEL_LED = Adafruit NeoPixel@1.5.0
-MAX6675_IS_MAX31865 = Adafruit MAX31865 library@~1.1.0
-HAS_GRAPHICAL_LCD = U8glib-HAL@0.4.1
- src_filter=+
-USES_LIQUIDCRYSTAL = LiquidCrystal@1.5.0
-USES_LIQUIDTWI2 = LiquidTWI2@1.2.7
-TOUCH_UI_FTDI_EVE = src_filter=+
-HAS_DGUS_LCD = src_filter=+
-DWIN_CREALITY_LCD = src_filter=+
-HAS_LCD_MENU = src_filter=+
-(ESP32_)?WIFISUPPORT = AsyncTCP, ESP Async WebServer
+HAS_TFT_LVGL_UI = lvgl=https://github.com/makerbase-mks/MKS-LittlevGL/archive/master.zip
+ src_filter=+
+ extra_scripts=download_mks_assets.py
+HAS_TRINAMIC_CONFIG = TMCStepper@~0.7.1
+ src_filter=+
+SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
+DIGIPOT_MCP4... = SlowSoftI2CMaster
+HAS_TMC26X = TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip
+HAS_L64XX = Arduino-L6470@0.8.0
+NEOPIXEL_LED = Adafruit NeoPixel@1.5.0
+MAX6675_IS_MAX31865 = Adafruit MAX31865 library@~1.1.0
+HAS_GRAPHICAL_LCD = U8glib-HAL@0.4.1
+ src_filter=+
+USES_LIQUIDCRYSTAL = LiquidCrystal@1.5.0
+USES_LIQUIDTWI2 = LiquidTWI2@1.2.7
+DWIN_CREALITY_LCD = src_filter=+
+HAS_CHARACTER_LCD = src_filter=+
+HAS_LCD_MENU = src_filter=+
+HAS_DGUS_LCD = src_filter=+
+TOUCH_UI_FTDI_EVE = src_filter=+
+ANYCUBIC_TFT_MODEL = src_filter=+
+USB_FLASH_DRIVE_SUPPORT = src_filter=+
+AUTO_BED_LEVELING_(3POINT|(BI)?LINEAR) = src_filter=+ +
+MESH_BED_LEVELING = src_filter=+ +
+AUTO_BED_LEVELING_UBL = src_filter=+ +
+DAC_STEPPER_CURRENT = src_filter=+
+HAS_I2C_DIGIPOT = src_filter=+
+HAS_LED_FEATURE = src_filter=+
+(ESP3D_)?WIFISUPPORT = AsyncTCP, ESP Async WebServer
ESP3DLib=https://github.com/luc-github/ESP3DLib.git
arduinoWebSockets=https://github.com/Links2004/arduinoWebSockets.git
ESP32SSDP=https://github.com/luc-github/ESP32SSDP.git
@@ -361,7 +380,7 @@ src_filter = ${common.default_src_filter} +
platform = ${common_stm32.platform}
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL
-build_unflags = -std=gnu++11
+build_unflags = -std=gnu11
src_filter = ${common.default_src_filter} +
lib_ignore = SPI
lib_deps = ${common.lib_deps}
@@ -525,7 +544,7 @@ build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DARDUINO_GENERIC_STM32F103V -DARDUINO_ARCH_STM32F1 -DBOARD_generic_stm32f103v
-DDEBUG_LEVEL=DEBUG_NONE -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DVECT_TAB_ADDR=0x8000000
-DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
-upload_protocol = serial
+upload_protocol = serial
#
# Longer 3D board in Alfawise U20 (STM32F103VET6)
@@ -555,17 +574,22 @@ build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE
#
-# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI
+# MKS Robin Nano (STM32F103VET6)
+# v1.2 - Emulated Graphical 128x64 (DOGM) UI and LVGL UI
+# v2.0 - LVGL UI
#
-[env:mks_robin_nano]
-platform = ${common_stm32f1.platform}
-extends = common_stm32f1
-board = genericSTM32F103VE
+[env:mks_robin_nano35]
+platform = ${common_stm32f1.platform}
+extends = common_stm32f1
+board = genericSTM32F103VE
platform_packages = tool-stm32duino
-extra_scripts = ${common.extra_scripts}
- buildroot/share/PlatformIO/scripts/mks_robin_nano.py
-build_flags = ${common_stm32f1.build_flags}
+extra_scripts = ${common.extra_scripts}
+ buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
+lib_deps = ${common_stm32f1.lib_deps}
+build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
+debug_tool = jlink
+upload_protocol = jlink
#
# MKS Robin (STM32F103ZET6)
@@ -686,7 +710,7 @@ src_filter = ${common.default_src_filter} +
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = CHITU_F103
-extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-features-dependencies.py
+extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/chitu_crypt.py
build_flags = ${common_stm32f1.build_flags}
@@ -713,6 +737,7 @@ board = genericSTM32F103RC
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY -DTEMP_TIMER_CHAN=4
extra_scripts = ${common.extra_scripts}
+ pre:buildroot/share/PlatformIO/scripts/random-bin.py
buildroot/share/PlatformIO/scripts/creality.py
lib_ignore = ${common_stm32f1.lib_ignore}
debug_tool = jlink
@@ -753,8 +778,8 @@ extra_scripts = ${common.extra_scripts}
# FYSETC S6 (STM32F446VET6 ARM Cortex-M4)
#
[env:FYSETC_S6]
-platform = ${common_stm32.platform}
-extends = common_stm32
+platform = ${common_stm32.platform}
+extends = common_stm32
platform_packages = ${common_stm32.platform_packages}
tool-stm32duino
board = fysetc_s6
@@ -769,7 +794,7 @@ upload_command = dfu-util -a 0 -s 0x08010000:leave -D "$SOURCE"
#
# STM32F407VET6 with RAMPS-like shield
-# 'Black' STM32F407VET6 board - http://wiki.stm32duino.com/index.php?title=STM32F407
+# 'Black' STM32F407VET6 board - https://wiki.stm32duino.com/index.php?title=STM32F407
# Shield - https://github.com/jmz52/Hardware
#
[env:STM32F407VE_black]
@@ -846,7 +871,7 @@ extra_scripts = ${common.extra_scripts}
build_flags = ${common_stm32.build_flags}
-DSTM32F4 -DSTM32F4xx -DTARGET_STM32F4
-DDISABLE_GENERIC_SERIALUSB -DARDUINO_ARCH_STM32 -DARDUINO_LERDGE
- -DTRANSFER_CLOCK_DIV=8
+ -DTRANSFER_CLOCK_DIV=8 -DHAL_SRAM_MODULE_ENABLED
build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483
#