Browse Source

Robin nano V2, TFT LVGL UI parameters, and more (#18500)

vanilla_fb_2.0.x
MKS-Sean 4 years ago
committed by Scott Lahteine
parent
commit
d20d459132
  1. 21
      Marlin/Configuration.h
  2. 11
      Marlin/src/MarlinCore.cpp
  3. 49
      Marlin/src/core/boards.h
  4. 7
      Marlin/src/inc/Conditionals_LCD.h
  5. 8
      Marlin/src/inc/SanityCheck.h
  6. 221
      Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
  7. 2
      Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
  8. 6
      Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
  9. 27
      Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
  10. 20
      Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
  11. 483
      Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp
  12. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h
  13. 140
      Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp
  14. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h
  15. 55
      Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
  16. 53
      Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
  17. 6
      Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
  18. 237
      Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp
  19. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h
  20. 18
      Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
  21. 77
      Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
  22. 67
      Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
  23. 83
      Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
  24. 263
      Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp
  25. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h
  26. 88
      Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
  27. 232
      Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp
  28. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h
  29. 241
      Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp
  30. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h
  31. 107
      Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
  32. 359
      Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp
  33. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h
  34. 247
      Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp
  35. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h
  36. 115
      Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
  37. 799
      Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp
  38. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h
  39. 110
      Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
  40. 4
      Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
  41. 4
      Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
  42. 222
      Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp
  43. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h
  44. 55
      Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
  45. 152
      Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
  46. 122
      Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
  47. 215
      Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
  48. 2
      Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
  49. 100
      Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
  50. 358
      Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp
  51. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h
  52. 385
      Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp
  53. 34
      Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h
  54. 478
      Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp
  55. 33
      Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h
  56. 97
      Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
  57. 501
      Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
  58. 127
      Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
  59. 16
      Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
  60. 164
      Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
  61. 12
      Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
  62. 231
      Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
  63. 23
      Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
  64. 217
      Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp
  65. 0
      Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h
  66. 209
      Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp
  67. 72
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
  68. 36
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
  69. 36
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
  70. 36
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
  71. 241
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
  72. 36
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
  73. 480
      Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
  74. 4
      Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
  75. 126
      Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
  76. 2
      Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
  77. 1475
      Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
  78. 270
      Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
  79. 6
      Marlin/src/module/motion.cpp
  80. 2
      Marlin/src/module/stepper.cpp
  81. 4
      Marlin/src/module/stepper/indirection.h
  82. 4
      Marlin/src/pins/pins.h
  83. 11
      Marlin/src/pins/sam/pins_RADDS.h
  84. 3
      Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
  85. 3
      Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
  86. 114
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
  87. 325
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h
  88. 46
      buildroot/share/PlatformIO/scripts/download_mks_assets.py
  89. 17
      platformio.ini

21
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.
//

11
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 <lvgl.h>
#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
}

49
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

7
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

8
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

221
Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp

@ -22,35 +22,38 @@
#include "../../../../inc/MarlinConfigPre.h"
#if ENABLED(SPI_GRAPHICAL_TFT)
#if ENABLED(TFT_LVGL_UI_SPI)
#include <SPI.h>
#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
#include <SPI.h>
TFT SPI_TFT;
#ifndef SPI_TFT_MISO_PIN
#define SPI_TFT_MISO_PIN PA6
#endif
#ifndef SPI_TFT_MOSI_PIN
#endif
#ifndef SPI_TFT_MOSI_PIN
#define SPI_TFT_MOSI_PIN PA7
#endif
#ifndef SPI_TFT_SCK_PIN
#endif
#ifndef SPI_TFT_SCK_PIN
#define SPI_TFT_SCK_PIN PA5
#endif
#ifndef SPI_TFT_CS_PIN
#endif
#ifndef SPI_TFT_CS_PIN
#define SPI_TFT_CS_PIN PD11
#endif
#ifndef SPI_TFT_DC_PIN
#endif
#ifndef SPI_TFT_DC_PIN
#define SPI_TFT_DC_PIN PD10
#endif
#ifndef SPI_TFT_RST_PIN
#endif
#ifndef SPI_TFT_RST_PIN
#define SPI_TFT_RST_PIN PC6
#endif
#endif
// use SPI1 for the spi tft.
void TFT::spi_init(uint8_t spiRate) {
void TFT::spi_init(uint8_t spiRate) {
SPI_TFT_CS_H;
@ -74,17 +77,17 @@
SPI.setClockDivider(clock);
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
}
}
uint8_t TFT::spi_Rec() {
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 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<uint8_t*>(buf), nbyte);}
void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast<uint8_t*>(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,51 +117,63 @@
*
* @details Use DMA
*/
void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
SPI.send(token);
SPI.dmaSend(const_cast<uint8_t*>(buf), 512);
}
}
void TFT::LCD_WR_REG(uint8_t cmd) {
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) {
}
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);
}
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_REG(0x2B);
LCD_WR_DATA(y >> 8);
LCD_WR_DATA(y);
LCD_WR_DATA(y >> 8);
LCD_WR_DATA(y);
}
void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
LCD_WR_REG(0x2a);
}
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) >> 8);
LCD_WR_DATA((x + with));
LCD_WR_DATA((x + with - 1) >> 8);
LCD_WR_DATA((x + with - 1));
LCD_WR_REG(0x2b);
LCD_WR_REG(0x2B);
LCD_WR_DATA(y >> 8);
LCD_WR_DATA(y);
LCD_WR_DATA((y + height) >> 8);
LCD_WR_DATA(y + height);
}
void TFT::LCD_init() {
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;
@ -169,9 +184,9 @@
LCD_WR_REG(0x11);
delay(120);
LCD_WR_REG(0xf0);
LCD_WR_DATA(0xc3);
LCD_WR_REG(0xf0);
LCD_WR_REG(0xF0);
LCD_WR_DATA(0xC3);
LCD_WR_REG(0xF0);
LCD_WR_DATA(0x96);
LCD_WR_REG(0x36);
@ -184,65 +199,66 @@
LCD_WR_DATA(0x01);
LCD_WR_REG(0xB7);
LCD_WR_DATA(0xC6);
LCD_WR_REG(0xe8);
LCD_WR_REG(0xE8);
LCD_WR_DATA(0x40);
LCD_WR_DATA(0x8a);
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(0xA5);
LCD_WR_DATA(0x33);
LCD_WR_REG(0xc1);
LCD_WR_REG(0xC1);
LCD_WR_DATA(0x06);
LCD_WR_REG(0xc2);
LCD_WR_DATA(0xa7);
LCD_WR_REG(0xc5);
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_REG(0xE0); // Positive Voltage Gamma Control
LCD_WR_DATA(0xF0);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x0b);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x06);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x15);
LCD_WR_DATA(0x2f);
LCD_WR_DATA(0x2F);
LCD_WR_DATA(0x54);
LCD_WR_DATA(0x42);
LCD_WR_DATA(0x3c);
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(0x1B);
LCD_WR_REG(0xE1); // Negative Voltage Gamma Control
LCD_WR_DATA(0xF0);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x0b);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x06);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x2d);
LCD_WR_DATA(0x2D);
LCD_WR_DATA(0x43);
LCD_WR_DATA(0x42);
LCD_WR_DATA(0x3b);
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(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, m;
uint32_t count;
void TFT::LCD_clear(uint16_t color) {
unsigned int i;
uint8_t tbuf[960];
SetCursor(0, 0);
@ -256,16 +272,67 @@
i += 2;
}
for (i = 0; i < 320; i++) {
// for(m=0;m<480;m++)
// for (m=0;m<480;m++)
// {
// LCD_WR_DATA(color>>8);
// LCD_WR_DATA(color);
SPI.dmaSend(tbuf, 960, true);
// SPI_TFT_CS_H;
// }
}
SPI_TFT_CS_H;
}
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;
}
#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++;
}
#endif
SetWindows(0, 0, 479, 319);
}
#endif // SPI_GRAPHICAL_TFT
#endif // HAS_TFT_LVGL_UI_SPI

2
Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h

@ -46,10 +46,12 @@ public:
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;

6
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 <SPI.h>
#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

27
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;

20
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,11 +79,11 @@ 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);
@ -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

483
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

140
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

55
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"
@ -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());
@ -188,38 +188,37 @@ void lv_draw_change_speed(void) {
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);
@ -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

53
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;
@ -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());
@ -204,7 +218,7 @@ void lv_draw_dialog(uint8_t type) {
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.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
@ -213,10 +227,10 @@ void lv_draw_dialog(uint8_t type) {
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.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
@ -230,7 +244,8 @@ void lv_draw_dialog(uint8_t type) {
}
else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING
|| DialogType == DIALOG_PAUSE_MESSAGE_INSERT
|| DialogType == DIALOG_PAUSE_MESSAGE_HEAT) {
|| 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
@ -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

6
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

237
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

18
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

77
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());
@ -182,40 +182,39 @@ void lv_draw_extrusion(void) {
buttonSpeed = 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);
@ -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

67
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

83
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

263
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

88
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"
@ -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();
@ -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());
@ -257,56 +256,55 @@ void lv_draw_language(void) {
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);
@ -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

232
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

241
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

107
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"
@ -40,7 +40,6 @@ static lv_obj_t * scr;
#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) {
@ -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());
@ -197,42 +195,42 @@ void lv_draw_manualLevel(void) {
buttonPoint5 = 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);
@ -257,7 +255,6 @@ void lv_draw_manualLevel(void) {
lv_obj_t * label_Point5 = lv_label_create(buttonPoint5, 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);
lv_obj_align(label_Point1, buttonPoint1, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@ -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

359
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

247
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

115
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,7 +181,6 @@ 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);
@ -198,52 +194,52 @@ void lv_draw_move_motor(void) {
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);
@ -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

799
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

110
Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp → 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());
@ -170,52 +170,54 @@ void lv_draw_opration(void) {
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);
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_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,10 +242,10 @@ 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*/
} 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);
}
@ -258,12 +260,13 @@ 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)
/*{
if (uiCfg.print_state != WORKING) {
/*
lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
}
else*/
} 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);
@ -273,12 +276,13 @@ void lv_draw_opration(void) {
label_Fan = lv_label_create(buttonFan, NULL);
label_Speed = lv_label_create(buttonSpeed, NULL);
if (uiCfg.print_state != WORKING)
/*{
if (uiCfg.print_state != WORKING) {
/*
label_Filament = lv_label_create(buttonFilament, NULL);
}
else*/
} 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*/
} 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

4
Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h → 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

4
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

222
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

55
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,28 +58,23 @@ 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);
}
#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();
}
}
#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());
@ -230,39 +225,39 @@ void lv_draw_preHeat(void) {
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);
@ -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);
@ -357,7 +352,7 @@ void disp_desire_temp() {
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

152
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,7 +52,7 @@ uint8_t sel_id = 0;
#if ENABLED(SDSUPPORT)
static uint8_t search_file() {
static uint8_t search_file() {
int valid_name_cnt = 0;
//char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
@ -64,7 +63,7 @@ static uint8_t search_file() {
//SERIAL_ECHOLN(list_file.curDirPath);
if (curDirLever != 0) card.cd(list_file.curDirPath);
else card.cdroot(); //while(card.cdup());
else card.cdroot(); // while(card.cdup());
const uint16_t fileCnt = card.get_num_Files();
@ -74,9 +73,7 @@ static uint8_t search_file() {
card.getfilename_sorted(nr);
if (card.flag.filenameIsDir)
/*
SERIAL_ECHOLN(card.longest_filename);
*/
//SERIAL_ECHOLN(card.longest_filename);
list_file.IsFolder[valid_name_cnt] = 1;
else
//SERIAL_ECHOLN(card.longFilename);
@ -86,7 +83,7 @@ static uint8_t search_file() {
//
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_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]));
@ -110,7 +107,7 @@ static uint8_t search_file() {
}
//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)
@ -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;
@ -300,7 +297,7 @@ 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());
@ -313,22 +310,22 @@ void disp_gcode_icon(uint8_t file_num) {
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);
//*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());}
@ -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
}
}
@ -607,11 +609,11 @@ void cutFileName(char *path, int len, int bytePerLine, char *outStr) {
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

122
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"
@ -74,32 +74,32 @@ 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_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();
// 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;
@ -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());
@ -178,68 +178,68 @@ void lv_draw_printing(void) {
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_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);
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_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);
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_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_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_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_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_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);
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_Resume.bin", 0);
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_Pause.bin", 0);
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_lable_pre);
lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_lable_rel);
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_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_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_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_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,31 +272,31 @@ 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);
@ -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.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.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

215
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 <stdio.h>
#include <lvgl.h>
#include "../../../../MarlinCore.h"
#include "../../../../module/temperature.h"
#include <stdio.h>
//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,130 +84,162 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
}
}
#if ENABLED(MKS_TEST)
lv_obj_t *limit_info, *det_info;
lv_style_t limit_style, det_style;
void disp_Limit_ok() {
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() {
}
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() {
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() {
}
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() {
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);
memset(buf, 0, sizeof(buf));
sprintf(buf, "e1:%d", (int)thermalManager.temp_hotend[0].celsius);
ZERO(buf);
sprintf_P(buf, PSTR("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);
#if HAS_MULTI_HOTEND
ZERO(buf);
sprintf_P(buf, PSTR("e2:%d"), (int)thermalManager.temp_hotend[1].celsius);
lv_label_set_text(e2, buf);
#endif
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);
//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;
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);
static lv_style_t ready_style;
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_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_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_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, &style_pr);
lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &style_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, 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");
//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_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);
}
#if 1
e1 = lv_label_create(scr, NULL);
lv_obj_set_pos(e1, 20, 20);
sprintf(buf, "e1: %d", (int)thermalManager.temp_hotend[0].celsius);
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(buf, "e1: %d", (int)thermalManager.temp_hotend[1].celsius);
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(buf, "e1: %d", (int)thermalManager.temp_hotend[2].celsius);
lv_label_set_text(e3, buf);
//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(buf, "bed: %d", (int)thermalManager.temp_bed.celsius);
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);
@ -231,27 +262,12 @@ void lv_draw_ready_print(void) {
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_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_IMG_DECLARE(bmp_pic);
#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());
@ -264,24 +280,26 @@ void lv_draw_ready_print(void) {
//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);
@ -299,21 +317,20 @@ void lv_draw_ready_print(void) {
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

2
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();

100
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"
@ -43,7 +43,9 @@ static lv_obj_t * scr;
#define ID_S_CONTINUE 4
#define ID_S_MOTOR_OFF 5
#define ID_S_LANGUAGE 6
#define ID_S_RETURN 7
#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());
@ -148,57 +170,69 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
buttonLanguage = lv_imgbtn_create(scr, NULL);
#endif
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);
@ -216,6 +250,8 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
lv_obj_set_pos(buttonLanguage, INTERVAL_V, titleHeight);
#endif
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*/
@ -227,6 +263,8 @@ 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);
@ -237,9 +275,10 @@ void lv_draw_set(void) {
#if HAS_LANG_SELECT_SCREEN
lv_obj_t * label_Language = lv_label_create(buttonLanguage, NULL);
#endif
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);
//lv_obj_align(labelWifi, buttonWifi, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
@ -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

358
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

385
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 <https://www.gnu.org/licenses/>.
*
*/
#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

34
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 <https://www.gnu.org/licenses/>.
*
*/
#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

478
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 <https://www.gnu.org/licenses/>.
*
*/
#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

33
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 <https://www.gnu.org/licenses/>.
*
*/
#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

97
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());
@ -149,68 +146,68 @@ void lv_draw_tool(void) {
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);
// 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(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*/
@ -219,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);
@ -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

501
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 <SPI.h>
#include "pic_manager.h"
#if ENABLED(SPI_GRAPHICAL_TFT)
#include "SPI_TFT.h"
#endif
#include "draw_ui.h"
#include "mks_hardware_test.h"
#include <SPI.h>
#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;
@ -106,7 +114,9 @@ void gCfgItems_init() {
gCfgItems.curFilesize = 0;
gCfgItems.finish_power_off = 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() {
@ -129,6 +138,7 @@ void ui_cfg_init() {
uiCfg.curSprayerChoose = 0;
uiCfg.stepHeat = 10;
uiCfg.leveling_first_time = 0;
uiCfg.para_ui_page = 0;
uiCfg.extruStep = 5;
uiCfg.extruSpeed = 10;
uiCfg.move_dist = 1;
@ -143,9 +153,16 @@ 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;
@ -156,35 +173,86 @@ void tft_style_init() {
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;
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:
@ -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;
}
@ -311,15 +383,15 @@ char *creat_title_text() {
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);
@ -336,14 +408,14 @@ 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] == 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,19 +423,19 @@ 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) {
uint32_t gPicturePreviewStart = 0;
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;
@ -390,15 +462,17 @@ void preview_gcode_prehandle(char *path) {
}
card.closefile();
#endif
}
}
#if 1
void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
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, '/');
@ -422,9 +496,9 @@ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
// 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)
#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
@ -434,6 +508,130 @@ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
j = i = 0;
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;
}
#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
}
#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
j = 0;
i = 0;
while (1) {
card.read(public_buf, 400);
for (i = 0; i < 400;) {
@ -444,10 +642,10 @@ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
//if (i > 800) break;
//#ifdef TFT70
//if (j>400) {
// if (j > 400) {
// f_read(file, buff_pic, 1, &read);
// break;
//}
// }
//#elif defined(TFT35)
if (j >= 400)
//f_read(file, buff_pic, 1, &read);
@ -455,37 +653,39 @@ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
//#endif
}
#if ENABLED(SPI_GRAPHICAL_TFT)
#if ENABLED(TFT_LVGL_UI_SPI)
for (i = 0; i < 400;) {
p_index = (uint16_t *)(&bmp_public_buf[i]);
Color = (*p_index >> 8);
*p_index = Color | ((*p_index & 0xFF) << 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=LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
if (*p_index == 0x0000) *p_index = 0x18C3;
LCD_IO_WriteData(*p_index);
i += 2;
i = 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);
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;
// flash_preview_begin = 1;
card.closefile();
@ -536,40 +736,60 @@ void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
}
card.closefile();
#endif // SDSUPPORT
}
}
#endif // if 1
void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
int index;
int x_off = 0, y_off = 0;
int y_off = 0;
int _y;
uint16_t *p_index;
int i;
uint16_t temp_p;
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
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
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(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;
#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.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);
// memcpy(public_buf,&bmp_public_buf[i],400);
SPI_TFT_CS_L;
SPI_TFT_DC_H;
SPI.dmaSend(&bmp_public_buf[i], 400, true);
@ -579,7 +799,9 @@ void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
if (i >= 8000) break;
}
#else
ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); //200*200
int x_off = 0;
uint16_t temp_p;
ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); // 200*200
LCD_WriteRAM_Prepare();
@ -592,19 +814,19 @@ void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
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
#endif // if ENABLED(TFT_LVGL_UI_SPI)
y_off++;
}
W25QXX.init(SPI_QUARTER_SPEED);
}
}
void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
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) {
@ -618,8 +840,8 @@ void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
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,7 +1274,7 @@ void draw_return_ui() {
lv_draw_move_motor();
break;
case OPERATE_UI:
lv_draw_opration();
lv_draw_operation();
break;
#if 1
@ -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

127
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 <lvgl.h>
#include <stdint.h>
#include <string.h>
#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++ */

16
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 <lvgl.h>
#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

164
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 <lvgl.h>
#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)
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)
) {
if (curent_disp_ui == 1) disp_Limit_ok();
}
else if (curent_disp_ui == 1)
)
disp_Limit_ok();
else
disp_Limit_error();
//mks_test_beeper();
}
#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)
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() {
void disp_assets_update() {
#if DISABLED(TFT_LVGL_UI_SPI)
LCD_Clear(0x0000);
disp_string(120, 150, "PIC Updating...", 0xFFFF, 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

12
Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h

@ -21,11 +21,13 @@
*/
#pragma once
#include "lvgl.h"
#include <lvgl.h>
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;

231
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,167 +361,137 @@ uint8_t public_buf[512];
longName[j] = '\0';
}
void UpdatePic() {
char *fn;
unsigned char logoFlag;
uint16_t pbr;
uint32_t pfileSize;
uint32_t totalSizeLoaded = 0;
uint32_t Pic_Write_Addr;
SdFile dir, root = card.getroot();
if (dir.open(&root, picPath, O_RDONLY)) {
disp_pic_update();
spiFlashErase_PIC();
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) {
dosName2LongName((const char*)d.name, card.longFilename);
}
if (card.longFilename[0] == 0)
continue;
if (card.longFilename[0] == '.')
continue;
uint8_t a = -1;
for(a = 0; a < COUNT(assets); a++) {
if (strcasecmp(assets[a], card.longFilename) == 0) {
break;
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;
}
if (a < 0 || a >= COUNT(assets)) continue;
fn = assets[a];
char dosFilename[FILENAME_LENGTH];
createFilename(dosFilename, d);
#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
continue;
return;
}
if (strstr(fn, "_logo"))
logoFlag = 1;
else if (strstr(fn, "_titlelogo"))
logoFlag = 2;
else if (strstr(fn, "_preview"))
logoFlag = 3;
else
logoFlag = 0;
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 (logoFlag == 1) {
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;
if (pbr < BMP_WRITE_BUF_LEN) break;
}
}
else if (logoFlag == 2) {
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;
if (pbr < BMP_WRITE_BUF_LEN) break;
}
}
else if (logoFlag == 3) {
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;
if (pbr < BMP_WRITE_BUF_LEN) break;
}
}
else {
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;
if (pbr < BMP_WRITE_BUF_LEN) break;
}
}
#if ENABLED(MARLIN_DEV_MODE)
SERIAL_ECHOLNPAIR("Asset added: ", fn);
#endif
file.close();
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;
}
dir.rename(&root, bakPath);
}
dir.close();
file.close();
#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("Asset added: ", fn);
#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;
void UpdateAssets() {
SdFile dir, root = card.getroot();
if (dir.open(&root, fontPath, O_RDONLY)) {
if (dir.open(&root, assetsPath, O_RDONLY)) {
disp_font_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 (card.longFilename[0] == 0)
break;
if (card.longFilename[0] == '.')
continue;
fn = card.longFilename;
// if we dont get a long name, but gets a short one, try it
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 (strstr(fn, ".bin")) {
char dosFilename[FILENAME_LENGTH];
createFilename(dosFilename, d);
//strcat(public_buf, dosFilename);
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;
SdFile file;
if (file.open(&dir, dosFilename, O_READ)) {
loadAsset(dir, d, assets[a], assetType);
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();
continue;
}
#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);
}
#endif
}
dir.rename(&root, bakFont);
dir.close();
dir.rename(&root, bakPath);
}
dir.close();
#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);
#endif
}
#if HAS_SPI_FLASH_FONT
void spi_flash_read_test() { W25QXX.SPI_FLASH_BufferRead(public_buf, UNIGBK_FLASH_ADDR, BMP_WRITE_BUF_LEN); }
#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

23
Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h

@ -25,20 +25,21 @@
extern "C" { /* C-declarations for C++ */
#endif
#include "../../inc/MarlinConfigPre.h"
#include <lvgl.h>
#include <stdint.h>
#include <string.h>
#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
@ -46,6 +47,9 @@ extern "C" { /* C-declarations for C++ */
#ifndef HAS_GCODE_DEFAULT_VIEW_IN_FLASH
#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
#endif
@ -83,14 +87,18 @@ extern "C" { /* C-declarations for C++ */
#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 PER_PIC_SAVE_ADDR 0x009000 // Storage address of each picture
#define PIC_LOGO_ADDR 0x009000 // Logo addr
//#define PIC_DATA_ADDR 0x02F000 //
// TFT35
@ -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);

217
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 <https://www.gnu.org/licenses/>.
*
*/
#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

0
Marlin/src/lcd/extui/lib/mks_ui/printer_opration.h → Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h

209
Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp

@ -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 <https://www.gnu.org/licenses/>.
*
*/
#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

72
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"
@ -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?"

36
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"
@ -261,16 +263,24 @@
#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 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?"

36
Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h

@ -98,6 +98,8 @@
#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"
@ -256,16 +258,24 @@
#define DIALOG_REPRINT_IT "Print again"
#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?"

36
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?"

241
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 "是否恢复默认参数?"

36
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"
@ -264,16 +266,24 @@
#define PRINTING_AJUSTES_SP "Ajustes"
#define PRINTING_PAUSAR_SP "Pausar"
#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 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 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?"

480
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 <https://www.gnu.org/licenses/>.
*
*/
#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 "是否恢復默認參數?"

4
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

126
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 <lvgl.h>
#include "../../../../MarlinCore.h"
#include "../../../../feature/touch/xpt2046.h"
#if ENABLED(POWER_LOSS_RECOVERY)
#include "../../../../feature/powerloss.h"
@ -47,26 +50,13 @@
#include <SPI.h>
#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);
}
@ -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();
@ -473,7 +466,7 @@ void tft_lvgl_init() {
uiCfg.print_state = REPRINTING;
memset(public_buf_m, 0, sizeof(public_buf_m));
ZERO(public_buf_m);
strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m));
card.printLongPath(public_buf_m);
@ -485,13 +478,12 @@ void tft_lvgl_init() {
#endif
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
@ -642,34 +637,20 @@ static void xpt2046_corr(uint16_t *x, uint16_t *y) {
#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

2
Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h

@ -30,7 +30,7 @@
//extern "C" {
//#endif
#include "lvgl.h"
#include <lvgl.h>
void tft_lvgl_init();
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);

1475
Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp

File diff suppressed because it is too large

270
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,8 +737,20 @@ 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)
@ -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"

6
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);

2
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

4
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

4
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)

11
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
//

3
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

3
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

114
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h

@ -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,53 +165,7 @@
* to let the bootloader init the screen.
*/
#if ENABLED(SPI_GRAPHICAL_TFT)
#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
#else
#if ENABLED(TFT_LVGL_UI_SPI)
#define SPI_TFT_CS_PIN PD11
#define SPI_TFT_SCK_PIN PA5
@ -229,9 +186,7 @@
#define BEEPER_PIN PC5
#define BTN_ENC PE13
#endif // HAS_SPI_LCD
#elif ENABLED(TFT_LVGL_UI)
#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

325
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 <https://www.gnu.org/licenses/>.
*
*/
#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

46
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()

17
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=+<src/lcd/extui/lib/mks_ui>
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
@ -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)
#

Loading…
Cancel
Save