From e27f031a5585abb3e75e74be92c5a59309768fcd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 17 Jul 2020 09:30:41 -0500 Subject: [PATCH 01/30] General cleanup --- Marlin/src/HAL/AVR/eeprom.cpp | 2 +- Marlin/src/HAL/DUE/eeprom_flash.cpp | 2 +- Marlin/src/HAL/DUE/eeprom_wired.cpp | 2 +- Marlin/src/HAL/STM32F1/eeprom_wired.cpp | 2 +- Marlin/src/HAL/STM32_F4_F7/eeprom_flash.cpp | 2 +- Marlin/src/HAL/STM32_F4_F7/eeprom_wired.cpp | 2 +- Marlin/src/HAL/TEENSY31_32/eeprom.cpp | 2 +- Marlin/src/HAL/TEENSY35_36/eeprom.cpp | 2 +- Marlin/src/core/millis_t.h | 2 +- Marlin/src/inc/Conditionals_adv.h | 2 +- buildroot/bin/generate_version | 2 +- .../share/PlatformIO/scripts/common-features-dependencies.h | 2 +- buildroot/share/extras/header.h | 2 +- buildroot/share/fonts/README.md | 2 +- buildroot/share/fonts/genallfont.sh | 2 +- buildroot/share/vscode/auto_build.py | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) 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/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/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/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/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/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/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/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/share/PlatformIO/scripts/common-features-dependencies.h b/buildroot/share/PlatformIO/scripts/common-features-dependencies.h index 44d690fc1010..61e9dc79e5f7 100644 --- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-features-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 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..f8f780661f07 100644 --- a/buildroot/share/fonts/README.md +++ b/buildroot/share/fonts/README.md @@ -16,7 +16,7 @@ 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 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/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 . # ####################################### From c5b3031c69ca9d844d463005514ebfd44b0499c2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 24 Jul 2020 00:09:15 +0000 Subject: [PATCH 02/30] [cron] Bump distribution date (2020-07-24) --- Marlin/src/inc/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index ec64e054e065..cc93a7bd9b03 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-24" #endif /** From 715271190cf9c818766396df8489d9f8529f11ea Mon Sep 17 00:00:00 2001 From: George Fu Date: Fri, 24 Jul 2020 09:01:50 +0800 Subject: [PATCH 03/30] Update FYSETC AIO II TMC UART pins (#18749) --- Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 From d1e20eb29f15c0dc4faa21769251709c455d18b8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Jul 2020 20:46:11 -0500 Subject: [PATCH 04/30] Update links, README, contributing, etc. --- .github/FUNDING.yml | 2 +- .github/contributing.md | 13 +++++----- .github/issue_template.md | 8 +++++-- Marlin/Configuration.h | 2 +- Marlin/Marlin.ino | 2 +- Marlin/src/HAL/AVR/fastio.h | 2 +- Marlin/src/HAL/DUE/Tone.cpp | 2 +- Marlin/src/HAL/DUE/fastio.h | 2 +- Marlin/src/HAL/DUE/usb/arduino_due_x.h | 2 +- Marlin/src/HAL/DUE/usb/compiler.h | 2 +- Marlin/src/HAL/DUE/usb/conf_access.h | 2 +- Marlin/src/HAL/DUE/usb/conf_clock.h | 2 +- Marlin/src/HAL/DUE/usb/conf_usb.h | 2 +- Marlin/src/HAL/DUE/usb/ctrl_access.c | 2 +- Marlin/src/HAL/DUE/usb/ctrl_access.h | 2 +- Marlin/src/HAL/DUE/usb/genclk.h | 2 +- Marlin/src/HAL/DUE/usb/mrepeat.h | 2 +- Marlin/src/HAL/DUE/usb/osc.h | 2 +- Marlin/src/HAL/DUE/usb/pll.h | 2 +- Marlin/src/HAL/DUE/usb/preprocessor.h | 2 +- Marlin/src/HAL/DUE/usb/sbc_protocol.h | 2 +- Marlin/src/HAL/DUE/usb/sd_mmc_spi_mem.h | 2 +- Marlin/src/HAL/DUE/usb/spc_protocol.h | 2 +- Marlin/src/HAL/DUE/usb/stringz.h | 2 +- Marlin/src/HAL/DUE/usb/sysclk.c | 2 +- Marlin/src/HAL/DUE/usb/sysclk.h | 2 +- Marlin/src/HAL/DUE/usb/tpaste.h | 2 +- Marlin/src/HAL/DUE/usb/udc.c | 2 +- Marlin/src/HAL/DUE/usb/udc.h | 2 +- Marlin/src/HAL/DUE/usb/udc_desc.h | 2 +- Marlin/src/HAL/DUE/usb/udd.h | 2 +- Marlin/src/HAL/DUE/usb/udi.h | 2 +- Marlin/src/HAL/DUE/usb/udi_cdc.c | 2 +- Marlin/src/HAL/DUE/usb/udi_cdc.h | 4 ++-- Marlin/src/HAL/DUE/usb/udi_cdc_conf.h | 2 +- Marlin/src/HAL/DUE/usb/udi_cdc_desc.c | 2 +- Marlin/src/HAL/DUE/usb/udi_composite_desc.c | 2 +- Marlin/src/HAL/DUE/usb/udi_msc.c | 2 +- Marlin/src/HAL/DUE/usb/udi_msc.h | 4 ++-- Marlin/src/HAL/DUE/usb/uotghs_device_due.c | 2 +- Marlin/src/HAL/DUE/usb/uotghs_device_due.h | 2 +- Marlin/src/HAL/DUE/usb/uotghs_otg.h | 2 +- Marlin/src/HAL/DUE/usb/usb_protocol.h | 2 +- Marlin/src/HAL/DUE/usb/usb_protocol_cdc.h | 2 +- Marlin/src/HAL/DUE/usb/usb_protocol_msc.h | 2 +- Marlin/src/HAL/DUE/usb/usb_task.c | 2 +- Marlin/src/HAL/DUE/usb/usb_task.h | 2 +- Marlin/src/HAL/LINUX/fastio.h | 2 +- Marlin/src/HAL/LPC1768/fastio.h | 2 +- Marlin/src/HAL/STM32F1/SPI.cpp | 2 +- Marlin/src/HAL/TEENSY31_32/fastio.h | 2 +- Marlin/src/HAL/TEENSY35_36/fastio.h | 2 +- .../src/HAL/shared/backtrace/unwarmbytab.cpp | 2 +- Marlin/src/feature/dac/dac_mcp4728.cpp | 2 +- Marlin/src/gcode/motion/G5.cpp | 2 +- .../ftdi_eve_lib/basic/boards.h | 8 +++---- Marlin/src/module/scara.cpp | 2 +- Marlin/src/module/thermistor/thermistor_2.h | 2 +- Marlin/src/module/thermistor/thermistor_5.h | 2 +- Marlin/src/module/thermistor/thermistor_52.h | 2 +- Marlin/src/module/thermistor/thermistor_55.h | 2 +- Marlin/src/pins/sam/pins_ALLIGATOR_R2.h | 2 +- Marlin/src/pins/sanguino/pins_OMCA.h | 4 ++-- .../src/pins/stm32f4/pins_BLACK_STM32F407VE.h | 2 +- Marlin/src/sd/SdFatStructs.h | 2 +- Marlin/src/sd/SdInfo.h | 2 +- README.md | 10 ++++---- .../etc/udev/rules.d/99-platformio-udev.rules | 4 ++-- .../PlatformIO/boards/BigTree_Btt002.json | 2 +- .../PlatformIO/boards/BigTree_GTR_v1.json | 2 +- .../PlatformIO/boards/BigTree_SKR_Pro.json | 2 +- .../share/PlatformIO/boards/CHITU_F103.json | 2 +- .../share/PlatformIO/boards/FLYF407ZG.json | 2 +- buildroot/share/PlatformIO/boards/LERDGE.json | 2 +- .../PlatformIO/boards/blackSTM32F407VET6.json | 2 +- .../share/PlatformIO/boards/malyanM200.json | 2 +- buildroot/share/fonts/README.md | 4 ++-- buildroot/share/fonts/uxggenpages.md | 4 ++-- .../scripts/createTemperatureLookupMarlin.py | 4 ++-- buildroot/share/vscode/avrdude.conf | 24 +++++++++---------- buildroot/share/vscode/avrdude_linux.conf | 24 +++++++++---------- buildroot/share/vscode/avrdude_macOS.conf | 10 ++++---- platformio.ini | 2 +- 83 files changed, 132 insertions(+), 131 deletions(-) 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..c11b02bc52e2 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -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 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/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/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/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/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/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/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/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/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/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/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/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/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/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: [![Flattr Scott](http://api.flattr.com/button/flattr-badge-small.png)](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: [![Flattr Scott](https://api.flattr.com/button/flattr-badge-small.png)](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   [![Flattr Erik](http://api.flattr.com/button/flattr-badge-large.png)](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   [![Flattr Erik](https://api.flattr.com/button/flattr-badge-large.png)](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/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/fonts/README.md b/buildroot/share/fonts/README.md index f8f780661f07..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)) @@ -20,4 +20,4 @@ Additional changes to the original font files distributed with Marlin are copyri ## 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/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/avrdude.conf b/buildroot/share/vscode/avrdude.conf index 1194847f775d..10b39a27d24c 100644 --- a/buildroot/share/vscode/avrdude.conf +++ b/buildroot/share/vscode/avrdude.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# https://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# https://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, http://www.fischl.de/usbasp/"; + desc = "USBasp, https://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -596,7 +596,7 @@ programmer programmer id = "bsd"; - desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + desc = "Brian Dean's Programmer, https://www.bsdhome.com/avrdude/"; type = par; vcc = 2, 3, 4, 5; reset = 7; @@ -655,7 +655,7 @@ programmer programmer id = "alf"; - desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + desc = "Nightshade ALF-PgmAVR, https://nightshade.homeip.net/"; type = par; vcc = 2, 3, 4, 5; buff = 6; @@ -682,7 +682,7 @@ programmer programmer id = "picoweb"; - desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + desc = "Picoweb Programming Cable, https://www.picoweb.net/"; type = par; reset = 2; sck = 3; @@ -743,7 +743,7 @@ programmer programmer id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; type = par; reset = ~6; sck = ~8; @@ -753,7 +753,7 @@ programmer programmer id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; + desc = "ERE ISP-AVR "; type = par; reset = ~4; sck = 3; @@ -773,7 +773,7 @@ programmer ; # It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on http://electropol.free.fr) +# disconnect port (download on https://electropol.free.fr) programmer id = "frank-stk200"; desc = "Frank STK200"; @@ -787,7 +787,7 @@ programmer ; # The AT98ISP Cable is a simple parallel dongle for AT89 family. -# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +# https://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 programmer id = "89isp"; desc = "Atmel at89isp cable"; @@ -836,7 +836,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; diff --git a/buildroot/share/vscode/avrdude_linux.conf b/buildroot/share/vscode/avrdude_linux.conf index 46e7ace34b21..b1eca4e319c2 100644 --- a/buildroot/share/vscode/avrdude_linux.conf +++ b/buildroot/share/vscode/avrdude_linux.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# https://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# https://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, http://www.fischl.de/usbasp/"; + desc = "USBasp, https://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -596,7 +596,7 @@ programmer programmer id = "bsd"; - desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + desc = "Brian Dean's Programmer, https://www.bsdhome.com/avrdude/"; type = par; vcc = 2, 3, 4, 5; reset = 7; @@ -655,7 +655,7 @@ programmer programmer id = "alf"; - desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + desc = "Nightshade ALF-PgmAVR, https://nightshade.homeip.net/"; type = par; vcc = 2, 3, 4, 5; buff = 6; @@ -682,7 +682,7 @@ programmer programmer id = "picoweb"; - desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + desc = "Picoweb Programming Cable, https://www.picoweb.net/"; type = par; reset = 2; sck = 3; @@ -743,7 +743,7 @@ programmer programmer id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; type = par; reset = ~6; sck = ~8; @@ -753,7 +753,7 @@ programmer programmer id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; + desc = "ERE ISP-AVR "; type = par; reset = ~4; sck = 3; @@ -773,7 +773,7 @@ programmer ; # It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on http://electropol.free.fr) +# disconnect port (download on https://electropol.free.fr) programmer id = "frank-stk200"; desc = "Frank STK200"; @@ -787,7 +787,7 @@ programmer ; # The AT98ISP Cable is a simple parallel dongle for AT89 family. -# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +# https://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 programmer id = "89isp"; desc = "Atmel at89isp cable"; @@ -836,7 +836,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; diff --git a/buildroot/share/vscode/avrdude_macOS.conf b/buildroot/share/vscode/avrdude_macOS.conf index d933567452fc..2212ab46e7b0 100644 --- a/buildroot/share/vscode/avrdude_macOS.conf +++ b/buildroot/share/vscode/avrdude_macOS.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# https://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# https://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, http://www.fischl.de/usbasp/"; + desc = "USBasp, https://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -630,7 +630,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; diff --git a/platformio.ini b/platformio.ini index 246abc11bde4..edc027a6d315 100644 --- a/platformio.ini +++ b/platformio.ini @@ -769,7 +769,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] From 9156c32a54b52fd6fc151644025330f229897eb4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Jul 2020 21:00:55 -0500 Subject: [PATCH 05/30] ibid. --- buildroot/share/vscode/avrdude.conf | 24 +++++++++++------------ buildroot/share/vscode/avrdude_linux.conf | 24 +++++++++++------------ buildroot/share/vscode/avrdude_macOS.conf | 10 +++++----- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/buildroot/share/vscode/avrdude.conf b/buildroot/share/vscode/avrdude.conf index 10b39a27d24c..1194847f775d 100644 --- a/buildroot/share/vscode/avrdude.conf +++ b/buildroot/share/vscode/avrdude.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# https://www.atmel.com/atmel/acrobat/doc1280.pdf +# http://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# https://www.atmel.com/atmel/acrobat/doc2525.pdf +# http://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, https://www.fischl.de/usbasp/"; + desc = "USBasp, http://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -596,7 +596,7 @@ programmer programmer id = "bsd"; - desc = "Brian Dean's Programmer, https://www.bsdhome.com/avrdude/"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; type = par; vcc = 2, 3, 4, 5; reset = 7; @@ -655,7 +655,7 @@ programmer programmer id = "alf"; - desc = "Nightshade ALF-PgmAVR, https://nightshade.homeip.net/"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; type = par; vcc = 2, 3, 4, 5; buff = 6; @@ -682,7 +682,7 @@ programmer programmer id = "picoweb"; - desc = "Picoweb Programming Cable, https://www.picoweb.net/"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; type = par; reset = 2; sck = 3; @@ -743,7 +743,7 @@ programmer programmer id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; type = par; reset = ~6; sck = ~8; @@ -753,7 +753,7 @@ programmer programmer id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; + desc = "ERE ISP-AVR "; type = par; reset = ~4; sck = 3; @@ -773,7 +773,7 @@ programmer ; # It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on https://electropol.free.fr) +# disconnect port (download on http://electropol.free.fr) programmer id = "frank-stk200"; desc = "Frank STK200"; @@ -787,7 +787,7 @@ programmer ; # The AT98ISP Cable is a simple parallel dongle for AT89 family. -# https://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 programmer id = "89isp"; desc = "Atmel at89isp cable"; @@ -836,7 +836,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; diff --git a/buildroot/share/vscode/avrdude_linux.conf b/buildroot/share/vscode/avrdude_linux.conf index b1eca4e319c2..46e7ace34b21 100644 --- a/buildroot/share/vscode/avrdude_linux.conf +++ b/buildroot/share/vscode/avrdude_linux.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# https://www.atmel.com/atmel/acrobat/doc1280.pdf +# http://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# https://www.atmel.com/atmel/acrobat/doc2525.pdf +# http://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, https://www.fischl.de/usbasp/"; + desc = "USBasp, http://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -596,7 +596,7 @@ programmer programmer id = "bsd"; - desc = "Brian Dean's Programmer, https://www.bsdhome.com/avrdude/"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; type = par; vcc = 2, 3, 4, 5; reset = 7; @@ -655,7 +655,7 @@ programmer programmer id = "alf"; - desc = "Nightshade ALF-PgmAVR, https://nightshade.homeip.net/"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; type = par; vcc = 2, 3, 4, 5; buff = 6; @@ -682,7 +682,7 @@ programmer programmer id = "picoweb"; - desc = "Picoweb Programming Cable, https://www.picoweb.net/"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; type = par; reset = 2; sck = 3; @@ -743,7 +743,7 @@ programmer programmer id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; type = par; reset = ~6; sck = ~8; @@ -753,7 +753,7 @@ programmer programmer id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; + desc = "ERE ISP-AVR "; type = par; reset = ~4; sck = 3; @@ -773,7 +773,7 @@ programmer ; # It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on https://electropol.free.fr) +# disconnect port (download on http://electropol.free.fr) programmer id = "frank-stk200"; desc = "Frank STK200"; @@ -787,7 +787,7 @@ programmer ; # The AT98ISP Cable is a simple parallel dongle for AT89 family. -# https://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 programmer id = "89isp"; desc = "Atmel at89isp cable"; @@ -836,7 +836,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; diff --git a/buildroot/share/vscode/avrdude_macOS.conf b/buildroot/share/vscode/avrdude_macOS.conf index 2212ab46e7b0..d933567452fc 100644 --- a/buildroot/share/vscode/avrdude_macOS.conf +++ b/buildroot/share/vscode/avrdude_macOS.conf @@ -147,7 +147,7 @@ # This flag was added to work around a problem with the # at90s4433/2333's; see the at90s4433 errata at: # -# https://www.atmel.com/atmel/acrobat/doc1280.pdf +# http://www.atmel.com/atmel/acrobat/doc1280.pdf # # INSTRUCTION FORMATS # @@ -184,7 +184,7 @@ # section avr061.zip which accompanies the application note # AVR061 available from: # -# https://www.atmel.com/atmel/acrobat/doc2525.pdf +# http://www.atmel.com/atmel/acrobat/doc2525.pdf # #define ATTINY10 0x10 /* the _old_ one that never existed! */ @@ -416,13 +416,13 @@ programmer programmer id = "usbasp"; - desc = "USBasp, https://www.fischl.de/usbasp/"; + desc = "USBasp, http://www.fischl.de/usbasp/"; type = usbasp; ; programmer id = "usbtiny"; - desc = "USBtiny simple USB programmer, https://www.ladyada.net/make/usbtinyisp/"; + desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; type = usbtiny; ; @@ -630,7 +630,7 @@ programmer programmer id = "siprog"; - desc = "Lancos SI-Prog "; + desc = "Lancos SI-Prog "; type = serbb; reset = ~3; sck = 7; From 2c61e6ba2802919ec8c2caacc34865335464098f Mon Sep 17 00:00:00 2001 From: InsanityAutomation <38436470+InsanityAutomation@users.noreply.github.com> Date: Thu, 23 Jul 2020 22:27:40 -0400 Subject: [PATCH 06/30] Add CONTROLLER_FAN_IGNORE_Z (#18735) --- Marlin/Configuration_adv.h | 1 + Marlin/src/feature/controllerfan.cpp | 32 ++++++++------------ Marlin/src/feature/mmu2/mmu2.cpp | 2 +- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 4 +++ buildroot/tests/mega2560-tests | 6 ++-- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 0945a6c43409..f27e2722cd10 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 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/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/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/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 From f23393c1ec8a821e3eca4277f73846ff018d05f3 Mon Sep 17 00:00:00 2001 From: Mark Langezaal Date: Fri, 24 Jul 2020 04:28:44 +0200 Subject: [PATCH 07/30] Simplify encoder handling (#18754) --- Marlin/src/lcd/ultralcd.cpp | 51 +++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp index 45612f6c55c2..9968a3218ae2 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 @@ -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 @@ -1547,17 +1544,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 From 1d2d616a7c010160b12131c2c344e36abe95378e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Jul 2020 23:35:19 -0500 Subject: [PATCH 08/30] Fix ESP3D_WIFISUPPORT ini typo --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index edc027a6d315..f51f0a3194ee 100644 --- a/platformio.ini +++ b/platformio.ini @@ -54,7 +54,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 +(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 From 8c88c33d9f1a4166db4d5ad0079904d040cf18b8 Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Fri, 24 Jul 2020 01:47:01 -0300 Subject: [PATCH 09/30] Apply lib_ignore from [features] (#18762) --- .../PlatformIO/scripts/common-features-dependencies.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py b/buildroot/share/PlatformIO/scripts/common-features-dependencies.py index 179af2229421..48081bbd4655 100644 --- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-features-dependencies.py @@ -123,6 +123,12 @@ def install_features_dependencies(): proj.set("env:" + env["PIOENV"], "src_filter", [src_filter]) env.Replace(SRC_FILTER=src_filter) + if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]: + print("Ignoring libs for %s... " % feature) + lib_ignore = env.GetProjectOption("lib_ignore") + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] + proj = env.GetProjectConfig() + proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + # search the current compiler, considering the OS def search_compiler(): if env['PLATFORM'] == 'win32': From 451f48231d922d473bae27d2f8992857f0bc3fe2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Jul 2020 03:09:14 -0500 Subject: [PATCH 10/30] Ender 3 V2 BL24C16 EEPROM support (#18758) --- Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp | 81 ++++++ Marlin/src/HAL/STM32F1/eeprom_if_iic.cpp | 51 ++++ Marlin/src/HAL/shared/eeprom_api.h | 20 +- Marlin/src/MarlinCore.cpp | 4 +- Marlin/src/gcode/eeprom/M500-M504.cpp | 36 +++ Marlin/src/inc/Conditionals_post.h | 3 + Marlin/src/inc/SanityCheck.h | 9 +- Marlin/src/lcd/dwin/dwin.cpp | 9 +- Marlin/src/lcd/dwin/dwin.h | 2 +- Marlin/src/lcd/dwin/eeprom_BL24CXX.cpp | 263 ----------------- Marlin/src/libs/BL24CXX.cpp | 273 ++++++++++++++++++ .../dwin/eeprom_BL24CXX.h => libs/BL24CXX.h} | 36 +-- Marlin/src/libs/hex_print_routines.cpp | 2 +- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 8 +- buildroot/tests/STM32F103RET6_creality-tests | 1 + 15 files changed, 495 insertions(+), 303 deletions(-) create mode 100644 Marlin/src/HAL/STM32F1/eeprom_bl24cxx.cpp create mode 100644 Marlin/src/HAL/STM32F1/eeprom_if_iic.cpp delete mode 100644 Marlin/src/lcd/dwin/eeprom_BL24CXX.cpp create mode 100644 Marlin/src/libs/BL24CXX.cpp rename Marlin/src/{lcd/dwin/eeprom_BL24CXX.h => libs/BL24CXX.h} (65%) 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/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..7ba577504abd 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -72,7 +72,7 @@ #endif #if ENABLED(IIC_BL24CXX_EEPROM) - #include "lcd/dwin/eeprom_BL24CXX.h" + #include "libs/BL24CXX.h" #endif #if ENABLED(DIRECT_STEPPING) @@ -1171,7 +1171,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) 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/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..a90571b17555 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2131,8 +2131,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 diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp index 4f661ca9536d..fd2b6810cc6d 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) { 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/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/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index cf7594f78428..8a413945b788 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 ? 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 From 87ff532a419f3053c1745160a8c370c83f4ab548 Mon Sep 17 00:00:00 2001 From: fleek Date: Fri, 24 Jul 2020 16:58:46 +0800 Subject: [PATCH 11/30] Filament Runout pin for Creality v4.2.2 board (#18763) --- Marlin/src/pins/stm32f1/pins_CREALITY_V4.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index 8a413945b788..ed281eb00c21 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -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 // From 97c655967fc2a2832b000891e204bdc2eeb7b4be Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 25 Jul 2020 00:09:21 +0000 Subject: [PATCH 12/30] [cron] Bump distribution date (2020-07-25) --- Marlin/src/inc/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index cc93a7bd9b03..834f46da64df 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-24" + #define STRING_DISTRIBUTION_DATE "2020-07-25" #endif /** From 0a81eb15e263282eabd1110548d176362c3c7ab3 Mon Sep 17 00:00:00 2001 From: fleek Date: Sat, 25 Jul 2020 11:53:35 +0800 Subject: [PATCH 13/30] Ender 3 V2: Inject 'G28 O' before G29 (#18767) --- Marlin/src/lcd/dwin/dwin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp index fd2b6810cc6d..f8c1819c5138 100644 --- a/Marlin/src/lcd/dwin/dwin.cpp +++ b/Marlin/src/lcd/dwin/dwin.cpp @@ -2375,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 */ From 60500c0c49259960d11863f9af24df039b7d5fec Mon Sep 17 00:00:00 2001 From: "J.C. Nelson" <32139633+xC0000005@users.noreply.github.com> Date: Fri, 24 Jul 2020 20:56:33 -0700 Subject: [PATCH 14/30] Fix Lerdge variant script (#18771) --- .../scripts/copy_marlin_variant_to_framework.py | 13 ------------- platformio.ini | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) 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/platformio.ini b/platformio.ini index f51f0a3194ee..6ad1916a936a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -846,7 +846,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 # From c5ec80d6c7a9acc40e4d0dd20d6282d6ec192461 Mon Sep 17 00:00:00 2001 From: InsanityAutomation <38436470+InsanityAutomation@users.noreply.github.com> Date: Sat, 25 Jul 2020 00:31:15 -0400 Subject: [PATCH 15/30] G425/G35 menu items; G425 pre- and post- scripts (#18737) --- Marlin/Configuration_adv.h | 3 +++ Marlin/src/gcode/calibrate/G425.cpp | 9 +++++++++ Marlin/src/lcd/language/language_en.h | 1 + Marlin/src/lcd/menu/menu_motion.cpp | 14 ++++++++++++++ 4 files changed, 27 insertions(+) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f27e2722cd10..3f097c09e311 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -898,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/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/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 // From d20d4591321aa467c062f0050355d2aca84e03ad Mon Sep 17 00:00:00 2001 From: MKS-Sean <56996910+MKS-Sean@users.noreply.github.com> Date: Sat, 25 Jul 2020 13:52:07 +0800 Subject: [PATCH 16/30] Robin nano V2, TFT LVGL UI parameters, and more (#18500) --- Marlin/Configuration.h | 21 +- Marlin/Version.h | 6 +- Marlin/src/MarlinCore.cpp | 11 +- Marlin/src/core/boards.h | 49 +- Marlin/src/inc/Conditionals_LCD.h | 7 +- Marlin/src/inc/SanityCheck.h | 8 +- Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp | 477 ++- Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h | 2 + Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp | 6 +- Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h | 27 +- .../src/lcd/extui/lib/mks_ui/draw_about.cpp | 22 +- .../lib/mks_ui/draw_acceleration_settings.cpp | 483 +++ .../lib/mks_ui/draw_acceleration_settings.h | 33 + .../lib/mks_ui/draw_advance_settings.cpp | 140 + .../extui/lib/mks_ui/draw_advance_settings.h | 33 + .../extui/lib/mks_ui/draw_change_speed.cpp | 75 +- .../src/lcd/extui/lib/mks_ui/draw_dialog.cpp | 195 +- Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h | 6 +- .../extui/lib/mks_ui/draw_eeprom_settings.cpp | 237 ++ .../extui/lib/mks_ui/draw_eeprom_settings.h | 33 + .../extui/lib/mks_ui/draw_error_message.cpp | 18 +- .../lcd/extui/lib/mks_ui/draw_extrusion.cpp | 97 +- Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp | 67 +- Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp | 83 +- .../extui/lib/mks_ui/draw_jerk_settings.cpp | 263 ++ .../lcd/extui/lib/mks_ui/draw_jerk_settings.h | 33 + .../lcd/extui/lib/mks_ui/draw_language.cpp | 152 +- .../extui/lib/mks_ui/draw_machine_para.cpp | 232 ++ .../lcd/extui/lib/mks_ui/draw_machine_para.h | 33 + .../lib/mks_ui/draw_machine_settings.cpp | 241 ++ .../extui/lib/mks_ui/draw_machine_settings.h | 33 + .../lcd/extui/lib/mks_ui/draw_manuaLevel.cpp | 127 +- .../lib/mks_ui/draw_max_feedrate_settings.cpp | 359 ++ .../lib/mks_ui/draw_max_feedrate_settings.h | 33 + .../extui/lib/mks_ui/draw_motor_settings.cpp | 247 ++ .../extui/lib/mks_ui/draw_motor_settings.h | 33 + .../lcd/extui/lib/mks_ui/draw_move_motor.cpp | 135 +- .../lcd/extui/lib/mks_ui/draw_number_key.cpp | 799 ++++ .../lcd/extui/lib/mks_ui/draw_number_key.h | 33 + .../{draw_opration.cpp => draw_operation.cpp} | 140 +- .../{draw_opration.h => draw_operation.h} | 4 +- .../extui/lib/mks_ui/draw_pause_message.cpp | 4 +- .../extui/lib/mks_ui/draw_pause_position.cpp | 222 + .../extui/lib/mks_ui/draw_pause_position.h | 33 + .../src/lcd/extui/lib/mks_ui/draw_preHeat.cpp | 129 +- .../lcd/extui/lib/mks_ui/draw_print_file.cpp | 256 +- .../lcd/extui/lib/mks_ui/draw_printing.cpp | 224 +- .../lcd/extui/lib/mks_ui/draw_ready_print.cpp | 341 +- .../lcd/extui/lib/mks_ui/draw_ready_print.h | 2 +- Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp | 126 +- .../extui/lib/mks_ui/draw_step_settings.cpp | 358 ++ .../lcd/extui/lib/mks_ui/draw_step_settings.h | 33 + .../lib/mks_ui/draw_tmc_current_settings.cpp | 385 ++ .../lib/mks_ui/draw_tmc_current_settings.h | 34 + .../mks_ui/draw_tmc_step_mode_settings.cpp | 478 +++ .../lib/mks_ui/draw_tmc_step_mode_settings.h | 33 + Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp | 117 +- Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp | 967 +++-- Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h | 127 +- .../lcd/extui/lib/mks_ui/gb2312_puhui16.cpp | 16 +- .../extui/lib/mks_ui/mks_hardware_test.cpp | 180 +- .../lcd/extui/lib/mks_ui/mks_hardware_test.h | 12 +- .../src/lcd/extui/lib/mks_ui/pic_manager.cpp | 277 +- Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h | 83 +- .../extui/lib/mks_ui/printer_operation.cpp | 217 + ...printer_opration.h => printer_operation.h} | 0 .../lcd/extui/lib/mks_ui/printer_opration.cpp | 209 - .../lcd/extui/lib/mks_ui/tft_Language_en.h | 76 +- .../lcd/extui/lib/mks_ui/tft_Language_fr.h | 60 +- .../lcd/extui/lib/mks_ui/tft_Language_it.h | 438 +- .../lcd/extui/lib/mks_ui/tft_Language_ru.h | 36 +- .../lcd/extui/lib/mks_ui/tft_Language_s_cn.h | 241 +- .../lcd/extui/lib/mks_ui/tft_Language_sp.h | 48 +- .../lcd/extui/lib/mks_ui/tft_Language_t_cn.h | 480 +++ Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp | 4 +- .../lib/mks_ui/tft_lvgl_configuration.cpp | 186 +- .../extui/lib/mks_ui/tft_lvgl_configuration.h | 2 +- .../extui/lib/mks_ui/tft_multi_language.cpp | 3567 ++++++++++------- .../lcd/extui/lib/mks_ui/tft_multi_language.h | 284 +- Marlin/src/module/motion.cpp | 6 +- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/module/stepper/indirection.h | 4 +- Marlin/src/pins/pins.h | 4 +- Marlin/src/pins/sam/pins_RADDS.h | 11 +- Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h | 3 +- Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h | 3 +- Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h | 150 +- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 325 ++ .../PlatformIO/scripts/download_mks_assets.py | 46 + platformio.ini | 23 +- 90 files changed, 11716 insertions(+), 4179 deletions(-) create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h rename Marlin/src/lcd/extui/lib/mks_ui/{draw_opration.cpp => draw_operation.cpp} (81%) rename Marlin/src/lcd/extui/lib/mks_ui/{draw_opration.h => draw_operation.h} (93%) create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h create mode 100644 Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp rename Marlin/src/lcd/extui/lib/mks_ui/{printer_opration.h => printer_operation.h} (100%) delete mode 100644 Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp create mode 100644 Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h create mode 100644 buildroot/share/PlatformIO/scripts/download_mks_assets.py diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index c11b02bc52e2..f2524cadb1d9 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -135,7 +135,7 @@ //#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 @@ -2148,20 +2148,23 @@ // // 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 +// Robin nano v1.2 uses FSMC +// +//#define TFT_LVGL_UI_FSMC + +// Robin nano v2.0 uses SPI +// +//#define TFT_LVGL_UI_SPI + //============================================================================= //============================ 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/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/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 7ba577504abd..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) @@ -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 } @@ -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/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index a552e5b9ce7d..3472cdc7ba81 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 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a90571b17555..b1f9aab370c4 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) @@ -2217,8 +2221,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 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..dabecfb9de2e --- /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..af16367b651d --- /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..982dd4408b9e --- /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..1d8f80b9b4c6 --- /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..555c228f0027 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_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..84853cff9d09 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,62 @@ 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)); + if (card.flag.filenameIsDir) + //SERIAL_ECHOLN(card.longest_filename); + list_file.IsFolder[valid_name_cnt] = 1; 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; + //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_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 +144,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 +166,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 +192,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 +218,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 +250,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 +297,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 +340,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 +354,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 +363,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 +372,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 +386,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 +403,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 +416,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 +430,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 +476,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 +536,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; @@ -570,7 +572,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 +580,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 +589,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 +597,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..5e776a1c6745 --- /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..2e6d164c0bb0 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 @@ -128,14 +125,14 @@ void lv_draw_tool(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()); @@ -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_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_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_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_Return.bin", 0); + 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_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_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_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(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(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); /*Create a label on the Image button*/ lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF); @@ -219,15 +216,15 @@ void lv_draw_tool(void) { lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF); lv_btn_set_layout(buttonHome, LV_LAYOUT_OFF); lv_btn_set_layout(buttonLevel, LV_LAYOUT_OFF); - //lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF); - //lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF); + // lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF); + // 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); @@ -254,11 +251,11 @@ void lv_draw_tool(void) { lv_label_set_text(label_Level, tool_menu.TERN(AUTO_BED_LEVELING_BILINEAR, autoleveling, leveling)); lv_obj_align(label_Level, buttonLevel, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); - //lv_label_set_text(label_Filament, tool_menu.filament); - //lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); + // lv_label_set_text(label_Filament, tool_menu.filament); + // lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); - //lv_label_set_text(label_More, tool_menu.more); - //lv_obj_align(label_More, buttonMore, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); + // lv_label_set_text(label_More, tool_menu.more); + // lv_obj_align(label_More, buttonMore, 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); @@ -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..75e9b7cdc8a1 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)); @@ -116,7 +126,6 @@ void gCfgItems_init() { W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR); W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems)); } - } void gCfg_to_spiFlah() { @@ -125,15 +134,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 +153,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 +263,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 +274,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 +286,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 +312,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: @@ -292,7 +361,7 @@ char *getDispText(int index) { strcpy(public_buf_l, tool_menu.title); break; case WIFI_LIST_UI: - //strcpy(public_buf_l, list_menu.title); + // strcpy(public_buf_l, list_menu.title); break; case MACHINE_PARA_UI: strcpy(public_buf_l, MachinePara_menu.title); @@ -300,6 +369,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,19 +379,19 @@ 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); + // cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr); #else 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 +407,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 +423,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 // if ENABLED(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 // if HAS_GCODE_PREVIEW void print_time_run() { static uint8_t lastSec = 0; @@ -644,7 +866,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 +943,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); } } @@ -831,7 +1053,7 @@ void clear_cur_ui() { switch (disp_state_stack._disp_state[disp_state_stack._disp_index]) { case PRINT_READY_UI: - //Get_Temperature_Flg = 0; + // Get_Temperature_Flg = 0; lv_clear_ready_print(); break; case PRINT_FILE_UI: @@ -844,7 +1066,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 +1153,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 +1192,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 +1218,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,15 +1227,31 @@ 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; } - //GUI_Clear(); + // GUI_Clear(); } void draw_return_ui() { @@ -1034,13 +1274,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 +1315,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 +1346,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 +1370,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 +1409,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 +1435,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 +1444,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 +1452,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 +1486,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() { @@ -1236,14 +1501,14 @@ void print_time_count() { } void LV_TASK_HANDLER() { - //lv_tick_inc(1); + // 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 GUI_RefreshPage(); - //sd_detection(); + // 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..5c114c2ac13f 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; @@ -185,7 +227,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 +249,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 +296,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 +324,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..54db9dd5b049 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,8 +582,10 @@ 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); + } } } @@ -582,14 +598,30 @@ 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() { + #if DISABLED(TFT_LVGL_UI_SPI) + LCD_Clear(0x0000); + #endif + disp_string(100, 150, "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, 200, 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..3f9af712d1e2 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,22 +237,19 @@ 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++) + for (pic_sectorcnt = 0; pic_sectorcnt < PIC_SIZE_xM * 1024 / 64; pic_sectorcnt++) W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024); } @@ -347,103 +361,123 @@ 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); 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(); spiFlashErase_PIC(); + #if HAS_SPI_FLASH_FONT + spiFlashErase_FONT(); + #endif 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 = 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; - 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; + loadAsset(dir, d, assets[a], assetType); - fn = assets[a]; - char dosFilename[FILENAME_LENGTH]; - createFilename(dosFilename, d); - - 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; - } - } - 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 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); } - } - - #if ENABLED(MARLIN_DEV_MODE) - SERIAL_ECHOLNPAIR("Asset added: ", fn); #endif - - file.close(); } dir.rename(&root, bakPath); } @@ -452,62 +486,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 +536,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 +546,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 +556,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 +563,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..663a88d8db3a 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,48 +70,52 @@ 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 @@ -137,6 +145,7 @@ typedef struct pic_msg PIC_MSG; #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/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/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/pins/pins.h b/Marlin/src/pins/pins.h index ba8a47324197..a8fb3f02f0b9 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_nano env:mks_robin_nano35 +#elif MB(MKS_ROBIN_NANO_V2) + #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano 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_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/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_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..efec3edcd9cd --- /dev/null +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -0,0 +1,325 @@ +/** + * 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 + +#else + #if ENABLED(TFT_LITTLE_VGL_UI) + //FSMC LCD + #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 // TFT_LITTLE_VGL_UI + +#endif // TFT_LVGL_UI_SPI + +#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/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/platformio.ini b/platformio.ini index 6ad1916a936a..743499e89944 100644 --- a/platformio.ini +++ b/platformio.ini @@ -37,8 +37,9 @@ lib_deps = # Feature Dependencies # [features] -TFT_LVGL_UI = MKS-LittlevGL=https://github.com/makerbase-mks/MKS-LittlevGL/archive/master.zip +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 SR_LCD_3W_NL = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip DIGIPOT_MCP4... = SlowSoftI2CMaster @@ -525,7 +526,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,7 +556,7 @@ build_flags = ${common_stm32f1.build_flags} -DMCU_STM32F103VE # -# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI +# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI and LVGL UI # [env:mks_robin_nano] platform = ${common_stm32f1.platform} @@ -567,6 +568,18 @@ extra_scripts = ${common.extra_scripts} build_flags = ${common_stm32f1.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 +# +# MKS Robin Nano v2.0 (STM32F103VET6) - LVGL UI +# +[env:mks_robin_nano35_v2] +platform = ${common_stm32f1.platform} +extends = env:mks_robin_nano +extra_scripts = ${common.extra_scripts} + buildroot/share/PlatformIO/scripts/mks_robin_nano35.py +lib_deps = ${common_stm32f1.lib_deps} +debug_tool = jlink +upload_protocol = jlink + # # MKS Robin (STM32F103ZET6) # @@ -753,8 +766,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 From bc688f27dc6db76021da584bc529f29ddb6f6cce Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 01:53:07 -0500 Subject: [PATCH 17/30] Clean up after changes --- Marlin/Configuration.h | 13 ++-- Marlin/src/HAL/STM32/HAL.cpp | 2 +- .../src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp | 5 +- Marlin/src/HAL/STM32/fastio.h | 2 + .../src/HAL/STM32F1/inc/Conditionals_post.h | 5 ++ Marlin/src/HAL/STM32F1/inc/SanityCheck.h | 4 -- ...8g_dev_tft_320x240_upscale_from_128x64.cpp | 2 +- .../lib/mks_ui/draw_advance_settings.cpp | 2 +- .../extui/lib/mks_ui/draw_machine_para.cpp | 6 +- .../lib/mks_ui/draw_machine_settings.cpp | 6 +- .../extui/lib/mks_ui/draw_motor_settings.cpp | 6 +- .../lcd/extui/lib/mks_ui/draw_move_motor.cpp | 2 +- .../lcd/extui/lib/mks_ui/draw_print_file.cpp | 10 ++-- .../mks_ui/draw_tmc_step_mode_settings.cpp | 10 ++-- Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp | 38 ++++++------ Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp | 60 +++++++++---------- .../src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h | 9 +-- 17 files changed, 88 insertions(+), 94 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f2524cadb1d9..60f7ed159cd6 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2142,6 +2142,7 @@ // // FSMC display (MKS Robin, Alfawise U20, JGAurora A5S, REXYZ A1, etc.) +// Upscaled 128x64 Marlin UI // //#define FSMC_GRAPHICAL_TFT @@ -2149,17 +2150,11 @@ // TFT LVGL UI // // Using default MKS icons and fonts from: https://git.io/JJvzK -// Just copy the `assets` folder from the build directory to the +// Just copy the 'assets' folder from the build directory to the // root of your SD card, together with the compiled firmware. // -// Robin nano v1.2 uses FSMC -// -//#define TFT_LVGL_UI_FSMC - -// Robin nano v2.0 uses SPI -// -//#define TFT_LVGL_UI_SPI - +//#define TFT_LVGL_UI_FSMC // Robin nano v1.2 uses FSMC +//#define TFT_LVGL_UI_SPI // Robin nano v2.0 uses SPI //============================================================================= //============================ Other Controllers ============================ 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/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/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/extui/lib/mks_ui/draw_advance_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp index dabecfb9de2e..7d3eab436bd9 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp @@ -95,7 +95,7 @@ void lv_draw_advance_settings(void) { 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(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*/ 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 index af16367b651d..d441f2ac51b8 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp @@ -137,7 +137,7 @@ void lv_draw_machine_para(void) { 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(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*/ @@ -159,7 +159,7 @@ void lv_draw_machine_para(void) { 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(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*/ @@ -181,7 +181,7 @@ void lv_draw_machine_para(void) { 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(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*/ 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 index 982dd4408b9e..88a66c6599e1 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp @@ -144,7 +144,7 @@ void lv_draw_machine_settings(void) { 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(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*/ @@ -166,7 +166,7 @@ void lv_draw_machine_settings(void) { 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(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*/ @@ -189,7 +189,7 @@ void lv_draw_machine_settings(void) { 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(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*/ 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 index 1d8f80b9b4c6..7da477bd51f3 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp @@ -147,7 +147,7 @@ void lv_draw_motor_settings(void) { 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(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*/ @@ -169,7 +169,7 @@ void lv_draw_motor_settings(void) { 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(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*/ @@ -192,7 +192,7 @@ void lv_draw_motor_settings(void) { 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(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*/ 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 555c228f0027..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 @@ -228,7 +228,7 @@ void lv_draw_move_motor(void) { 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_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_label_pre); 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 84853cff9d09..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 @@ -72,12 +72,14 @@ uint8_t sel_id = 0; const uint16_t nr = SD_ORDER(i, fileCnt); card.getfilename_sorted(nr); - if (card.flag.filenameIsDir) + if (card.flag.filenameIsDir) { //SERIAL_ECHOLN(card.longest_filename); list_file.IsFolder[valid_name_cnt] = 1; - else + } + else { //SERIAL_ECHOLN(card.longFilename); list_file.IsFolder[valid_name_cnt] = 0; + } #if 1 // @@ -523,7 +525,7 @@ void lv_gcode_file_read(uint8_t *data_buf) { //Color = (*p_index >> 8); //*p_index = Color | ((*p_index & 0xff) << 8); i += 2; - if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // 0x18C3; // + if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // 0x18C3; } #endif // TFT_LVGL_UI_SPI memcpy(data_buf, public_buf, 200); @@ -556,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 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 index 5e776a1c6745..b0d40fde28db 100644 --- 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 @@ -73,7 +73,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) { 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); + //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0); // gcode.process_subcommands_now_P(PSTR("M500")); } else { @@ -96,7 +96,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) { 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); + //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0); } else { stepperY.stored.stealthChop_enabled = true; @@ -117,7 +117,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) { 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); + //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0); } else { stepperZ.stored.stealthChop_enabled = true; @@ -138,7 +138,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) { 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); + //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0); } else { stepperE0.stored.stealthChop_enabled = true; @@ -160,7 +160,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) { 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); + //lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0); } else { stepperE1.stored.stealthChop_enabled = true; 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 2e6d164c0bb0..91dd2f36ab9e 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp @@ -125,7 +125,7 @@ void lv_draw_tool(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); @@ -182,17 +182,17 @@ void lv_draw_tool(void) { 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_label_pre); - // lv_imgbtn_set_style(buttonFilament, 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_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_label_pre); - // lv_imgbtn_set_style(buttonMore, 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_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_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic); @@ -206,8 +206,8 @@ void lv_draw_tool(void) { 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(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(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); /*Create a label on the Image button*/ @@ -216,8 +216,8 @@ void lv_draw_tool(void) { lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF); lv_btn_set_layout(buttonHome, LV_LAYOUT_OFF); lv_btn_set_layout(buttonLevel, LV_LAYOUT_OFF); - // lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF); - // lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF); + //lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF); + //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); @@ -251,11 +251,11 @@ void lv_draw_tool(void) { lv_label_set_text(label_Level, tool_menu.TERN(AUTO_BED_LEVELING_BILINEAR, autoleveling, leveling)); lv_obj_align(label_Level, buttonLevel, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); - // lv_label_set_text(label_Filament, tool_menu.filament); - // lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); + //lv_label_set_text(label_Filament, tool_menu.filament); + //lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); - // lv_label_set_text(label_More, tool_menu.more); - // lv_obj_align(label_More, buttonMore, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET); + //lv_label_set_text(label_More, tool_menu.more); + //lv_obj_align(label_More, buttonMore, 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); 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 75e9b7cdc8a1..5fb3bf6d7316 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp @@ -361,7 +361,7 @@ char *getDispText(int index) { strcpy(public_buf_l, tool_menu.title); break; case WIFI_LIST_UI: - // strcpy(public_buf_l, list_menu.title); + //strcpy(public_buf_l, list_menu.title); break; case MACHINE_PARA_UI: strcpy(public_buf_l, MachinePara_menu.title); @@ -386,7 +386,7 @@ char *creat_title_text() { ZERO(tmpCurFileStr); #if _LFN_UNICODE - // cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr); + //cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr); #else cutFileName(list_file.long_name[sel_id], 16, 16, tmpCurFileStr); #endif @@ -434,8 +434,8 @@ char *creat_title_text() { void preview_gcode_prehandle(char *path) { #if ENABLED(SDSUPPORT) - // uint8_t re; - // uint32_t read; + //uint8_t re; + //uint32_t read; uint32_t pre_read_cnt = 0; uint32_t *p1; char *cur_name; @@ -468,11 +468,11 @@ char *creat_title_text() { void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) { #if ENABLED(SDSUPPORT) - // uint8_t ress; - // uint32_t write; + //uint8_t ress; + //uint32_t write; volatile uint32_t i, j; volatile uint16_t *p_index; - // int res; + //int res; char *cur_name; cur_name = strrchr(path, '/'); @@ -493,12 +493,12 @@ char *creat_title_text() { } } - // SERIAL_ECHOLNPAIR("gPicturePreviewStart: ", gPicturePreviewStart, " PREVIEW_LITTLE_PIC_SIZE: ", PREVIEW_LITTLE_PIC_SIZE); + //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.SetCursor(0,0); SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1); SPI_TFT.LCD_WriteRAM_Prepare(); #else @@ -534,7 +534,7 @@ char *creat_title_text() { #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; + if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color; LCD_IO_WriteData(*p_index); i += 2; } @@ -550,7 +550,7 @@ char *creat_title_text() { row = 0; gcode_preview_over = 0; - // flash_preview_begin = 1; + //flash_preview_begin = 1; card.closefile(); @@ -586,7 +586,7 @@ char *creat_title_text() { card.openFileRead(cur_name); if (card.isFileOpen()) { feedrate_percentage = 100; - // saved_feedrate_percentage = feedrate_percentage; + //saved_feedrate_percentage = feedrate_percentage; planner.flow_percentage[0] = 100; planner.e_factor[0] = planner.flow_percentage[0] * 0.01; if (EXTRUDERS == 2) { @@ -607,11 +607,11 @@ char *creat_title_text() { void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) { #if ENABLED(SDSUPPORT) - // uint8_t ress; - // uint32_t write; + //uint8_t ress; + //uint32_t write; volatile uint32_t i, j; volatile uint16_t *p_index; - // int res; + //int res; char *cur_name; uint16_t Color; @@ -621,7 +621,7 @@ char *creat_title_text() { 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.SetCursor(0,0); SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1); SPI_TFT.LCD_WriteRAM_Prepare(); #else @@ -685,7 +685,7 @@ char *creat_title_text() { row = 0; gcode_preview_over = 0; - // flash_preview_begin = 1; + //flash_preview_begin = 1; card.closefile(); @@ -721,7 +721,7 @@ char *creat_title_text() { card.openFileRead(cur_name); if (card.isFileOpen()) { feedrate_percentage = 100; - // saved_feedrate_percentage = feedrate_percentage; + //saved_feedrate_percentage = feedrate_percentage; planner.flow_percentage[0] = 100; planner.e_factor[0] = planner.flow_percentage[0] * 0.01; if (EXTRUDERS == 2) { @@ -779,9 +779,9 @@ char *creat_title_text() { 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(); + //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); @@ -789,7 +789,7 @@ char *creat_title_text() { SPI_TFT.LCD_WriteRAM_Prepare(); j++; - // memcpy(public_buf,&bmp_public_buf[i],400); + //memcpy(public_buf,&bmp_public_buf[i],400); SPI_TFT_CS_L; SPI_TFT_DC_H; SPI.dmaSend(&bmp_public_buf[i], 400, true); @@ -814,13 +814,13 @@ char *creat_title_text() { else { p_index = (uint16_t *)(&bmp_public_buf[i]); } - if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // gCfgItems.preview_bk_color; + 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; } - #endif // if ENABLED(TFT_LVGL_UI_SPI) + #endif // TFT_LVGL_UI_SPI y_off++; } W25QXX.init(SPI_QUARTER_SPEED); @@ -841,7 +841,7 @@ char *creat_title_text() { } #endif } -#endif // if HAS_GCODE_PREVIEW +#endif // HAS_GCODE_PREVIEW void print_time_run() { static uint8_t lastSec = 0; @@ -866,7 +866,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) { @@ -1053,7 +1053,7 @@ void clear_cur_ui() { switch (disp_state_stack._disp_state[disp_state_stack._disp_index]) { case PRINT_READY_UI: - // Get_Temperature_Flg = 0; + //Get_Temperature_Flg = 0; lv_clear_ready_print(); break; case PRINT_FILE_UI: @@ -1251,7 +1251,7 @@ void clear_cur_ui() { default: break; } - // GUI_Clear(); + //GUI_Clear(); } void draw_return_ui() { @@ -1501,14 +1501,14 @@ void print_time_count() { } void LV_TASK_HANDLER() { - // lv_tick_inc(1); + //lv_tick_inc(1); lv_task_handler(); if (mks_test_flag == 0x1e) mks_hardware_test(); #if HAS_GCODE_PREVIEW disp_pre_gcode(2, 36); #endif GUI_RefreshPage(); - // sd_detection(); + //sd_detection(); } #endif // HAS_TFT_LVGL_UI diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h index efec3edcd9cd..dd0d1e9465ef 100644 --- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h +++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h @@ -253,9 +253,8 @@ #define BEEPER_PIN PC5 #define BTN_ENC PE13 -#else - #if ENABLED(TFT_LITTLE_VGL_UI) - //FSMC LCD +#elif ENABLED(TFT_LITTLE_VGL_UI) + #define FSMC_CS_PIN PD7 // NE4 #define FSMC_RS_PIN PD11 // A0 @@ -266,9 +265,7 @@ #define LCD_BACKLIGHT_PIN PD13 - #endif // TFT_LITTLE_VGL_UI - -#endif // TFT_LVGL_UI_SPI +#endif #if HAS_SPI_LCD From 11702dc0596ad04a72628fd352622c2cf8249f94 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 04:10:12 -0500 Subject: [PATCH 18/30] Update (c) --- Marlin/src/feature/power_monitor.cpp | 2 +- Marlin/src/feature/power_monitor.h | 2 +- Marlin/src/gcode/feature/power_monitor/M430.cpp | 2 +- Marlin/src/lcd/menu/menu_power_monitor.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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/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/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 From 6f26ed23ee0c3fd64bd3521f657e6755b5cacc1a Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Sat, 25 Jul 2020 17:57:16 -0300 Subject: [PATCH 19/30] Fix ui.external_control compile error (#18778) --- Marlin/src/lcd/ultralcd.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp index 9968a3218ae2..88a9c36b3642 100644 --- a/Marlin/src/lcd/ultralcd.cpp +++ b/Marlin/src/lcd/ultralcd.cpp @@ -753,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. @@ -1283,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; } From 0dbebc283525044688ffbc91b50b3ed0a2ac018c Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 26 Jul 2020 00:09:32 +0000 Subject: [PATCH 20/30] [cron] Bump distribution date (2020-07-26) --- Marlin/src/inc/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 834f46da64df..3f8df1517ca8 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-25" + #define STRING_DISTRIBUTION_DATE "2020-07-26" #endif /** From 89722d2196741dad4b5981d9806b156a5486e4ed Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Sat, 25 Jul 2020 22:52:44 -0300 Subject: [PATCH 21/30] Fix search for best compiler (#18779) --- .../scripts/common-features-dependencies.h | 31 ++++-- .../scripts/common-features-dependencies.py | 99 ++++++++++++------- 2 files changed, 88 insertions(+), 42 deletions(-) diff --git a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h b/buildroot/share/PlatformIO/scripts/common-features-dependencies.h index 61e9dc79e5f7..f6abdbf36179 100644 --- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-features-dependencies.h @@ -27,15 +27,11 @@ * Used by common-features-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-features-dependencies.py index 48081bbd4655..c8b7ec9a9709 100644 --- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-features-dependencies.py @@ -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] @@ -57,15 +53,14 @@ def get_all_env_libs(): 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 +# 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) + print("Ignoring libs:", lib_ignore) proj = env.GetProjectConfig() proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) @@ -84,23 +79,23 @@ def install_features_dependencies(): name, _, _ = PackageManager.parse_pkg_uri(dep) deps_to_add[name] = dep - # first check if the env already have the dep + # 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 + # 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 + # Only add the missing dependencies proj = env.GetProjectConfig() proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values())) @@ -129,45 +124,72 @@ def install_features_dependencies(): proj = env.GetProjectConfig() proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) -# search the current compiler, considering the OS +# +# 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) + + return file + file = env.get('CXX') + print("Couldn't find a compiler! Fallback to", file) + return file -# load marlin features +# +# 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 = ' '.join(cmd) print(cmd) @@ -179,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() From 0bc8d315d8346352e0a1c2b993e21b87ed454c63 Mon Sep 17 00:00:00 2001 From: ManuelMcLure Date: Sat, 25 Jul 2020 19:09:56 -0700 Subject: [PATCH 22/30] Close host's Filament Change dialog (#18785) --- Marlin/src/feature/pause.cpp | 1 + 1 file changed, 1 insertion(+) 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; } From e02817b07798b92aa31091c78c16581f0c867923 Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Sat, 25 Jul 2020 23:40:44 -0300 Subject: [PATCH 23/30] More folders only compiled when their feature is Enabled (#18780) Co-authored-by: Scott Lahteine --- Marlin/src/inc/Conditionals_LCD.h | 7 +++ ...s-dependencies.h => common-dependencies.h} | 2 +- ...dependencies.py => common-dependencies.py} | 4 +- platformio.ini | 62 ++++++++++++------- 4 files changed, 50 insertions(+), 25 deletions(-) rename buildroot/share/PlatformIO/scripts/{common-features-dependencies.h => common-dependencies.h} (97%) rename buildroot/share/PlatformIO/scripts/{common-features-dependencies.py => common-dependencies.py} (99%) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 3472cdc7ba81..66e83c5299e4 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -748,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/buildroot/share/PlatformIO/scripts/common-features-dependencies.h b/buildroot/share/PlatformIO/scripts/common-dependencies.h similarity index 97% rename from buildroot/share/PlatformIO/scripts/common-features-dependencies.h rename to buildroot/share/PlatformIO/scripts/common-dependencies.h index f6abdbf36179..a1f8b095add7 100644 --- a/buildroot/share/PlatformIO/scripts/common-features-dependencies.h +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.h @@ -24,7 +24,7 @@ /** * 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 */ #include diff --git a/buildroot/share/PlatformIO/scripts/common-features-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py similarity index 99% rename from buildroot/share/PlatformIO/scripts/common-features-dependencies.py rename to buildroot/share/PlatformIO/scripts/common-dependencies.py index c8b7ec9a9709..8287c0b2025a 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 @@ -190,7 +190,7 @@ def load_marlin_features(): else: cmd += ['-D' + s] - 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() diff --git a/platformio.ini b/platformio.ini index 743499e89944..838ce116118e 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,34 @@ lib_deps = # Feature Dependencies # [features] -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 -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=+ +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 @@ -699,7 +717,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} From d0222e5c76276d4bb1c46a4731ec63938f545eb0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Jul 2020 22:57:00 -0500 Subject: [PATCH 24/30] Randomize firmware.bin, fix unflag --- .../PlatformIO/scripts/common-dependencies.py | 30 +++++++++---------- .../share/PlatformIO/scripts/creality.py | 9 +++--- .../share/PlatformIO/scripts/random-bin.py | 5 ++++ platformio.ini | 3 +- 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 buildroot/share/PlatformIO/scripts/random-bin.py diff --git a/buildroot/share/PlatformIO/scripts/common-dependencies.py b/buildroot/share/PlatformIO/scripts/common-dependencies.py index 8287c0b2025a..37efaa37436f 100644 --- a/buildroot/share/PlatformIO/scripts/common-dependencies.py +++ b/buildroot/share/PlatformIO/scripts/common-dependencies.py @@ -47,22 +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 +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 + lib_ignore = env.GetProjectOption('lib_ignore') + diff print("Ignoring libs:", lib_ignore) - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + set_env_field('lib_ignore', lib_ignore) def install_features_dependencies(): load_config() @@ -80,14 +83,14 @@ def install_features_dependencies(): deps_to_add[name] = dep # Does the env already have the dependency? - deps = env.GetProjectOption("lib_deps") + 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] # Are there any libraries that should be ignored? - lib_ignore = env.GetProjectOption("lib_ignore") + lib_ignore = env.GetProjectOption('lib_ignore') for dep in deps: name, _, _ = PackageManager.parse_pkg_uri(dep) if name in deps_to_add: @@ -96,8 +99,7 @@ def install_features_dependencies(): # Is there anything left? if len(deps_to_add) > 0: # Only add the missing dependencies - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_deps", deps + list(deps_to_add.values())) + 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) @@ -105,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) @@ -115,19 +116,18 @@ 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) if 'lib_ignore' in FEATURE_DEPENDENCIES[feature]: print("Ignoring libs for %s... " % feature) - lib_ignore = env.GetProjectOption("lib_ignore") + [FEATURE_DEPENDENCIES[feature]['lib_ignore']] - proj = env.GetProjectConfig() - proj.set("env:" + env["PIOENV"], "lib_ignore", lib_ignore) + 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"]) +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): 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/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/platformio.ini b/platformio.ini index 838ce116118e..429091fbf041 100644 --- a/platformio.ini +++ b/platformio.ini @@ -380,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} @@ -744,6 +744,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 From 3eef000e2a7623d0d1d1f56fbf3109023f5d74c2 Mon Sep 17 00:00:00 2001 From: Victor Oliveira Date: Sun, 26 Jul 2020 01:08:30 -0300 Subject: [PATCH 25/30] Fix MKS Robin Nano V2 build / upload (#18784) --- Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp | 7 ++++++ Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h | 1 + .../extui/lib/mks_ui/mks_hardware_test.cpp | 10 ++++---- .../src/lcd/extui/lib/mks_ui/pic_manager.cpp | 10 +++++++- Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h | 3 ++- Marlin/src/pins/pins.h | 4 +-- platformio.ini | 25 +++++++------------ 7 files changed, 35 insertions(+), 25 deletions(-) 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 5fb3bf6d7316..e8899b9ad122 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp @@ -126,6 +126,13 @@ void gCfgItems_init() { W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR); 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() { 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 5c114c2ac13f..595565e1c704 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h +++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h @@ -161,6 +161,7 @@ typedef struct { uint8_t waitEndMoves; uint16_t moveSpeed; float move_dist; + uint8_t F[4]; } UI_CFG; typedef enum { 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 54db9dd5b049..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 @@ -590,6 +590,8 @@ void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint1 } 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++; @@ -599,10 +601,8 @@ void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor //static lv_obj_t * scr_test; void disp_assets_update() { - #if DISABLED(TFT_LVGL_UI_SPI) - LCD_Clear(0x0000); - #endif - disp_string(100, 150, "Assets Updating...", 0xFFFF, 0x0000); + TERN(TFT_LVGL_UI_SPI,, LCD_Clear(0x0000)); + disp_string(100, 140, "Assets Updating...", 0xFFFF, 0x0000); } void disp_assets_update_progress(const char *msg) { @@ -610,7 +610,7 @@ void disp_assets_update_progress(const char *msg) { memset(buf, ' ', COUNT(buf)); strncpy(buf, msg, strlen(msg)); buf[COUNT(buf)-1] = '\0'; - disp_string(100, 200, buf, 0xFFFF, 0x0000); + disp_string(100, 165, buf, 0xFFFF, 0x0000); } uint8_t mks_test_flag = 0; 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 3f9af712d1e2..2a16bcf1b3b9 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp +++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp @@ -249,6 +249,7 @@ const char *bakPath = "_assets"; void spiFlashErase_PIC() { volatile uint32_t pic_sectorcnt = 0; + 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); } @@ -256,7 +257,8 @@ void spiFlashErase_PIC() { #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 @@ -386,6 +388,9 @@ uint8_t public_buf[512]; } disp_assets_update_progress(fn); + + W25QXX.init(SPI_QUARTER_SPEED); + uint16_t pbr; uint32_t pfileSize; uint32_t totalSizeLoaded = 0; @@ -444,11 +449,14 @@ uint8_t public_buf[512]; if (dir.open(&root, assetsPath, O_RDONLY)) { 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 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 663a88d8db3a..3ef4ee4f8624 100644 --- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h +++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h @@ -120,6 +120,7 @@ extern "C" { /* C-declarations for C++ */ #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 @@ -139,7 +140,7 @@ 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 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a8fb3f02f0b9..1b78b0f769ad 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -507,9 +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 env:mks_robin_nano35 + #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_nano env:mks_robin_nano35 + #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/platformio.ini b/platformio.ini index 429091fbf041..543b837f54d3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -574,27 +574,20 @@ build_flags = ${common_stm32f1.build_flags} -DMCU_STM32F103VE # -# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI and LVGL 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 -platform_packages = tool-stm32duino -extra_scripts = ${common.extra_scripts} - buildroot/share/PlatformIO/scripts/mks_robin_nano.py -build_flags = ${common_stm32f1.build_flags} - -DMCU_STM32F103VE -DSS_TIMER=4 - -# -# MKS Robin Nano v2.0 (STM32F103VET6) - LVGL UI -# -[env:mks_robin_nano35_v2] +[env:mks_robin_nano35] platform = ${common_stm32f1.platform} -extends = env:mks_robin_nano +extends = common_stm32f1 +board = genericSTM32F103VE +platform_packages = tool-stm32duino 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 From f949287aec966d200dd14d55c33f974a75ffe9fb Mon Sep 17 00:00:00 2001 From: giryan Date: Sun, 26 Jul 2020 21:31:45 +0100 Subject: [PATCH 26/30] Fix compile-time PWM_PIN (#18793) Co-authored-by: Scott Lahteine --- Marlin/src/inc/SanityCheck.h | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index b1f9aab370c4..944620a4e9ab 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2106,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 @@ -2945,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." @@ -3037,3 +3043,6 @@ 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 + +// Misc. Cleanup +#undef _TEST_PWM From 6924b2deaa6a790d54d1bd2814f19285baa8915c Mon Sep 17 00:00:00 2001 From: ellensp Date: Mon, 27 Jul 2020 08:36:58 +1200 Subject: [PATCH 27/30] Prevent ESP3D_WIFISUPPORT with non-ESP32 board (#18792) --- Marlin/src/inc/SanityCheck.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 944620a4e9ab..2cba0fecf26d 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3044,5 +3044,12 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2) #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 From b9f0c06d834c1c4e1745f90b6b2b25f421caaf53 Mon Sep 17 00:00:00 2001 From: ellensp Date: Mon, 27 Jul 2020 08:41:50 +1200 Subject: [PATCH 28/30] Add 0 to EXTRUDERS :[json] (#18786) --- Marlin/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 60f7ed159cd6..cf3fb61cb67d 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -141,7 +141,7 @@ // @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. From 84b92d8f2fd519a41625ff2be080d503f1116d63 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 27 Jul 2020 00:09:57 +0000 Subject: [PATCH 29/30] [cron] Bump distribution date (2020-07-27) --- Marlin/src/inc/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 3f8df1517ca8..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-26" + #define STRING_DISTRIBUTION_DATE "2020-07-27" #endif /** From de68b3753faa675bed4c42345633e4085c1c072b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Jul 2020 19:49:14 -0500 Subject: [PATCH 30/30] Config for Anycubic Mega TFT --- Marlin/Configuration.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index cf3fb61cb67d..a01571c42232 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2156,6 +2156,12 @@ //#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 ============================ //=============================================================================