diff --git a/.editorconfig b/.editorconfig index 9b32123d7a..a25686058b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,7 +10,7 @@ charset = utf-8 [{*.c,*.cpp,*.h,Makefile}] trim_trailing_whitespace = true insert_final_newline = true -end_of_line = lf +end_of_line = crlf indent_style = space indent_size = 2 diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT24_V1.1.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT24_V1.1.25.4.bin new file mode 100644 index 0000000000..85479ffdc5 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT24_V1.1.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT28_V3.0.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT28_V3.0.25.4.bin new file mode 100644 index 0000000000..fffe5d7815 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT28_V3.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0.25.4.bin new file mode 100644 index 0000000000..8a3b385a13 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0_E3.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0_E3.25.4.bin new file mode 100644 index 0000000000..55912bac61 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIGTREE_TFT35_V3.0_E3.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT28_V1.0.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT28_V1.0.25.4.bin new file mode 100644 index 0000000000..2bc060d5b1 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT28_V1.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_APP1_V2.0.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_APP1_V2.0.25.4.bin new file mode 100644 index 0000000000..91feebc5d0 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_APP1_V2.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.0.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.0.25.4.bin new file mode 100644 index 0000000000..d17061eb5a Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.1.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.1.25.4.bin new file mode 100644 index 0000000000..18a38ce872 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.1.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.2.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.2.25.4.bin new file mode 100644 index 0000000000..43fd8096a1 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/BIQU_TFT35_V1.2.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/MKS_32_V1_4.25.4.bin b/Copy to SD Card root directory to update - Unified Menu Material theme/MKS_32_V1_4.25.4.bin new file mode 100644 index 0000000000..3a14cac0a0 Binary files /dev/null and b/Copy to SD Card root directory to update - Unified Menu Material theme/MKS_32_V1_4.25.4.bin differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/README.md b/Copy to SD Card root directory to update - Unified Menu Material theme/README.md new file mode 100644 index 0000000000..a0dc9e034a --- /dev/null +++ b/Copy to SD Card root directory to update - Unified Menu Material theme/README.md @@ -0,0 +1,3 @@ +### From version 26.1 the firmware for classic Menu and Unified Menu is merged. + +**Now Classic Menu or Unified Menu can be enabled using the config.ini file without the need to update the firmware** diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT24/font/word_unicode.fon b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT24/font/word_unicode.fon index 46112dfab8..9caa0511ce 100644 Binary files a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT24/font/word_unicode.fon and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT24/font/word_unicode.fon differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT28/font/word_unicode.fon b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT28/font/word_unicode.fon index 46112dfab8..9caa0511ce 100644 Binary files a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT28/font/word_unicode.fon and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT28/font/word_unicode.fon differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/font/byte_ascii.fon b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/font/byte_ascii.fon index 8f5b6d4259..41df1713fd 100644 Binary files a/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/font/byte_ascii.fon and b/Copy to SD Card root directory to update - Unified Menu Material theme/TFT35/font/byte_ascii.fon differ diff --git a/Copy to SD Card root directory to update - Unified Menu Material theme/config.ini b/Copy to SD Card root directory to update - Unified Menu Material theme/config.ini index fb7227e5f6..bb4a393280 100644 --- a/Copy to SD Card root directory to update - Unified Menu Material theme/config.ini +++ b/Copy to SD Card root directory to update - Unified Menu Material theme/config.ini @@ -1,10 +1,23 @@ +#### Default Config file for BigTreeTech TFT Controllers +# +# BIGTREE_TFT35_V1_1 / BIGTREE_TFT35_V1_2 / BIGTREE_TFT35_V2_0 +# BIGTREE_TFT35_V3_0 / BIGTREE_TFT35_E3_V3_0 / BIGTREE_TFT28_V1_0 +# BIGTREE_TFT28_V3_0 / BIGTREE_TFT24_V1_1 / MKS_32_V1_4 +# +# Firmware Source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware +# #-------------------------------------------------------------------- # General Settings #-------------------------------------------------------------------- +#### UNIFIED MENU / CLASSIC MENU +# Select a UI Menu flavour +# Options: [Unified Menu: 1, Classic Menu: 0] +unified_menu:1 + #### Baudrate # Options: [0: 2400, 1: 9600, 2: 19200, 3: 38400, 4: 57600, 5: 115200, 6: 250000, 7: 500000,8: 1000000 ] -baudrate:4 +baudrate:5 #### Default Touch Mode Language # Select the language to display on the LCD while in Touch Mode. @@ -15,13 +28,13 @@ language:0 #### Default Touch Mode Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] # Title background color title_back_color:1 #Background color -background_color:0 +background_color:1 #Font foreground color font_color:0 @@ -29,15 +42,33 @@ font_color:0 #Reminder font color, such as: "No print attached", "Busy processing", etc. reminder_color:5 -#Volume reminder font color, such as: "Card inserted", "Card removed" -volume_reminder_color:5 +#Volume status/reminder font color, such as: "Card inserted", "Card removed" +volume_status_color:5 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 #### Rotate UI 180 degrees # Options: [enable: 1, disable: 0] rotate_ui:0 -#### Show Temprature ACK in Gcode Terminal -# Options: [enable: 1, disable: 0] +#### Show or hide Temperature ACK in Gcode Terminal +# Options: [Show: 1, Hide: 0] terminal_ack:0 #### invert X axis button function in Move menu to match move buttons to actual axis @@ -66,7 +97,7 @@ default_mode:0 #### Default Marlin Mode Background & Font Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] marlin_bg_color:1 marlin_fn_color:8 @@ -98,11 +129,11 @@ ext_count:1 # Options: [1 to 6] fan_count:1 -#### Bed / Extruder Maximum Tempratures +#### Bed / Extruder Maximum Temperatures # format [max_temp: BED: T0: T1: T2: T3: T4: T5:] max_temp: BED:150 T0:275 T1:275 T2:275 T3:275 T4:275 T5:275 -#### Cold Extrusion Minimum Temprature +#### Cold Extrusion Minimum Temperature min_temp:180 #### Fan Maximum PWM speed (0 to 255) @@ -127,7 +158,7 @@ move_speed: S1000 N3000 F5000 ext_speed: S60 N600 F1200 ####Auto Save Load Leveling Data -# The TFT will auto detect if Auto Bed Level is available. +# The TFT will auto-detect if Auto Bed Level is available. # Enable this will send "M500" after "G29" to store leveling value # and send "M420 S1" to enable leveling state after startup # Options:[1:enable, 0: disable] @@ -171,8 +202,9 @@ level_z_pos:0.2 level_z_raise:10 level_feedrate: X6000 Y6000 Z6000 -#### Preheat Temprature +#### Preheat Temperature # Maximum Filament name length 7 characters +# If default names are changed, make sure to change Icons to match the names #format [T B] preheat_name1:PLA preheat_temp1:T200 B60 @@ -195,8 +227,8 @@ ps_on:0 # Options:[HIGH: 1, LOW: 0] ps_on_active_high:1 -#### Maximum hotend temperature of automatic shut down after printing (only if auto power is enabled) -# wait for the hotend temperature to be lower than this value, then turn off the power automatically +#### Maximum hot-end temperature of automatic shut down after printing (only if auto power is enabled) +# wait for the hot-end temperature to be lower than this value, then turn off the power automatically auto_shutdown_temp:50 #-------------------------------------------------------------------- @@ -236,7 +268,7 @@ btt_mini_ups:0 #-------------------------------------------------------------------- -# Other device specific settings +# Other device-specific settings #-------------------------------------------------------------------- #### Buzzer / sound @@ -244,17 +276,17 @@ btt_mini_ups:0 buzzer:1 #### Knob Led Color (only for TFT35 E3.0) -#Options: [ 1: LED_OFF, 2: LED_WHITE, 3: LED_RED, 4: LED_ORANGE, 5: LED_YELLOW, 6: LED_GREEN,7: LED_BLUE, 8: LED_INDIGO, 9: LED_VIOLET] -knob_led_color:1 +#Options: [ 0: LED_OFF, 1: LED_WHITE, 2: LED_RED, 3: LED_ORANGE, 4: LED_YELLOW, 5: LED_GREEN, 6: LED_BLUE, 7: LED_INDIGO, 8: LED_VIOLET] +knob_led_color:0 #### Default LCD Brightness levels (only for TFT35v3.0 & TFT28v3.0) -# Options: [(low) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] +# Options: [(low) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] lcd_brightness:10 lcd_idle_brightness:5 -####Default LCD idle time(in sec) (only for TFT35v3.0 & TFT28v3.0) -# Options: [off: 0, 5sec: 1, 10sec: 2, 30sec: 3, 60sec: 4,120sec: 5, 300sec: 6] -lcd_idle_delay:3 +####Default LCD idle time (only for TFT35v3.0 & TFT28v3.0) +# Options [0: Off, 1: 5Sec, 2: 10Sec , 3: 30sec, 4: 1min, 5: 2min, 6: 5min, 7: 10min] +lcd_idle_delay:4 #-------------------------------------------------------------------- @@ -269,7 +301,7 @@ lcd_idle_delay:3 # if the values are left blank then default name and G-code will be used -# Options: [Label maximum length: 20 characters, G-code Maximum length 70 characters] +# Options: [Label maximum length: 24 characters, G-code Maximum length 70 characters] custom_label_1:Disable steppers custom_gcode_1:M84\n @@ -278,13 +310,13 @@ custom_gcode_2:G28\nG29\nG0\n custom_label_3:Release sd card custom_gcode_3:M22\n custom_label_4:restore leveling -custom_gcode_4:M420 s1\n +custom_gcode_4:M420 S1\n custom_label_5:Save to EEPROM custom_gcode_5:M500\n custom_label_6:restore from EEPROM custom_gcode_6:M501\n -#custom_label_7:EEPROM defaults -#custom_gcode_7:M502\n +custom_label_7:EEPROM defaults +custom_gcode_7:M502\n #custom_label_8:custom8 #custom_gcode_8:M105\n #custom_label_9:custom9 @@ -325,4 +357,3 @@ end_gcode:G90\nG1 E-4\nG92 E0\nM18\n #### Cancel G-code - run this G-code after canceling print # maximum length 50 characters cancel_gcode:G28 XY R10\n - diff --git a/Copy to SD Card root directory to update/BIGTREE_TFT24_V1.1.25.4.bin b/Copy to SD Card root directory to update/BIGTREE_TFT24_V1.1.25.4.bin new file mode 100644 index 0000000000..85479ffdc5 Binary files /dev/null and b/Copy to SD Card root directory to update/BIGTREE_TFT24_V1.1.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIGTREE_TFT28_V3.0.25.4.bin b/Copy to SD Card root directory to update/BIGTREE_TFT28_V3.0.25.4.bin new file mode 100644 index 0000000000..fffe5d7815 Binary files /dev/null and b/Copy to SD Card root directory to update/BIGTREE_TFT28_V3.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0.25.4.bin b/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0.25.4.bin new file mode 100644 index 0000000000..8a3b385a13 Binary files /dev/null and b/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0_E3.25.4.bin b/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0_E3.25.4.bin new file mode 100644 index 0000000000..55912bac61 Binary files /dev/null and b/Copy to SD Card root directory to update/BIGTREE_TFT35_V3.0_E3.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIQU_TFT28_V1.0.25.4.bin b/Copy to SD Card root directory to update/BIQU_TFT28_V1.0.25.4.bin new file mode 100644 index 0000000000..2bc060d5b1 Binary files /dev/null and b/Copy to SD Card root directory to update/BIQU_TFT28_V1.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIQU_TFT35_APP1_V2.0.25.4.bin b/Copy to SD Card root directory to update/BIQU_TFT35_APP1_V2.0.25.4.bin new file mode 100644 index 0000000000..91feebc5d0 Binary files /dev/null and b/Copy to SD Card root directory to update/BIQU_TFT35_APP1_V2.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIQU_TFT35_V1.0.25.4.bin b/Copy to SD Card root directory to update/BIQU_TFT35_V1.0.25.4.bin new file mode 100644 index 0000000000..d17061eb5a Binary files /dev/null and b/Copy to SD Card root directory to update/BIQU_TFT35_V1.0.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIQU_TFT35_V1.1.25.4.bin b/Copy to SD Card root directory to update/BIQU_TFT35_V1.1.25.4.bin new file mode 100644 index 0000000000..18a38ce872 Binary files /dev/null and b/Copy to SD Card root directory to update/BIQU_TFT35_V1.1.25.4.bin differ diff --git a/Copy to SD Card root directory to update/BIQU_TFT35_V1.2.25.4.bin b/Copy to SD Card root directory to update/BIQU_TFT35_V1.2.25.4.bin new file mode 100644 index 0000000000..43fd8096a1 Binary files /dev/null and b/Copy to SD Card root directory to update/BIQU_TFT35_V1.2.25.4.bin differ diff --git a/Copy to SD Card root directory to update/MKS/font/word_unicode.fon b/Copy to SD Card root directory to update/MKS/font/word_unicode.fon index 4987a49f91..9caa0511ce 100644 Binary files a/Copy to SD Card root directory to update/MKS/font/word_unicode.fon and b/Copy to SD Card root directory to update/MKS/font/word_unicode.fon differ diff --git a/Copy to SD Card root directory to update/MKS_32_V1_4.25.4.bin b/Copy to SD Card root directory to update/MKS_32_V1_4.25.4.bin new file mode 100644 index 0000000000..3a14cac0a0 Binary files /dev/null and b/Copy to SD Card root directory to update/MKS_32_V1_4.25.4.bin differ diff --git a/Copy to SD Card root directory to update/README.md b/Copy to SD Card root directory to update/README.md new file mode 100644 index 0000000000..776e689f7a --- /dev/null +++ b/Copy to SD Card root directory to update/README.md @@ -0,0 +1,3 @@ +### From version 26.1 the firmware for Classic Menu and Unified Menu is merged. + +**Now Classic Menu or Unified menu can be enabled using the config.ini file without the need to update the firmware** diff --git a/Copy to SD Card root directory to update/TFT24/font/word_unicode.fon b/Copy to SD Card root directory to update/TFT24/font/word_unicode.fon index 46112dfab8..9caa0511ce 100644 Binary files a/Copy to SD Card root directory to update/TFT24/font/word_unicode.fon and b/Copy to SD Card root directory to update/TFT24/font/word_unicode.fon differ diff --git a/Copy to SD Card root directory to update/TFT28/font/word_unicode.fon b/Copy to SD Card root directory to update/TFT28/font/word_unicode.fon index 46112dfab8..9caa0511ce 100644 Binary files a/Copy to SD Card root directory to update/TFT28/font/word_unicode.fon and b/Copy to SD Card root directory to update/TFT28/font/word_unicode.fon differ diff --git a/Copy to SD Card root directory to update/TFT35/font/byte_ascii.fon b/Copy to SD Card root directory to update/TFT35/font/byte_ascii.fon index 8f5b6d4259..41df1713fd 100644 Binary files a/Copy to SD Card root directory to update/TFT35/font/byte_ascii.fon and b/Copy to SD Card root directory to update/TFT35/font/byte_ascii.fon differ diff --git a/Copy to SD Card root directory to update/config.ini b/Copy to SD Card root directory to update/config.ini index fb7227e5f6..bb4a393280 100644 --- a/Copy to SD Card root directory to update/config.ini +++ b/Copy to SD Card root directory to update/config.ini @@ -1,10 +1,23 @@ +#### Default Config file for BigTreeTech TFT Controllers +# +# BIGTREE_TFT35_V1_1 / BIGTREE_TFT35_V1_2 / BIGTREE_TFT35_V2_0 +# BIGTREE_TFT35_V3_0 / BIGTREE_TFT35_E3_V3_0 / BIGTREE_TFT28_V1_0 +# BIGTREE_TFT28_V3_0 / BIGTREE_TFT24_V1_1 / MKS_32_V1_4 +# +# Firmware Source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware +# #-------------------------------------------------------------------- # General Settings #-------------------------------------------------------------------- +#### UNIFIED MENU / CLASSIC MENU +# Select a UI Menu flavour +# Options: [Unified Menu: 1, Classic Menu: 0] +unified_menu:1 + #### Baudrate # Options: [0: 2400, 1: 9600, 2: 19200, 3: 38400, 4: 57600, 5: 115200, 6: 250000, 7: 500000,8: 1000000 ] -baudrate:4 +baudrate:5 #### Default Touch Mode Language # Select the language to display on the LCD while in Touch Mode. @@ -15,13 +28,13 @@ language:0 #### Default Touch Mode Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] # Title background color title_back_color:1 #Background color -background_color:0 +background_color:1 #Font foreground color font_color:0 @@ -29,15 +42,33 @@ font_color:0 #Reminder font color, such as: "No print attached", "Busy processing", etc. reminder_color:5 -#Volume reminder font color, such as: "Card inserted", "Card removed" -volume_reminder_color:5 +#Volume status/reminder font color, such as: "Card inserted", "Card removed" +volume_status_color:5 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 #### Rotate UI 180 degrees # Options: [enable: 1, disable: 0] rotate_ui:0 -#### Show Temprature ACK in Gcode Terminal -# Options: [enable: 1, disable: 0] +#### Show or hide Temperature ACK in Gcode Terminal +# Options: [Show: 1, Hide: 0] terminal_ack:0 #### invert X axis button function in Move menu to match move buttons to actual axis @@ -66,7 +97,7 @@ default_mode:0 #### Default Marlin Mode Background & Font Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] marlin_bg_color:1 marlin_fn_color:8 @@ -98,11 +129,11 @@ ext_count:1 # Options: [1 to 6] fan_count:1 -#### Bed / Extruder Maximum Tempratures +#### Bed / Extruder Maximum Temperatures # format [max_temp: BED: T0: T1: T2: T3: T4: T5:] max_temp: BED:150 T0:275 T1:275 T2:275 T3:275 T4:275 T5:275 -#### Cold Extrusion Minimum Temprature +#### Cold Extrusion Minimum Temperature min_temp:180 #### Fan Maximum PWM speed (0 to 255) @@ -127,7 +158,7 @@ move_speed: S1000 N3000 F5000 ext_speed: S60 N600 F1200 ####Auto Save Load Leveling Data -# The TFT will auto detect if Auto Bed Level is available. +# The TFT will auto-detect if Auto Bed Level is available. # Enable this will send "M500" after "G29" to store leveling value # and send "M420 S1" to enable leveling state after startup # Options:[1:enable, 0: disable] @@ -171,8 +202,9 @@ level_z_pos:0.2 level_z_raise:10 level_feedrate: X6000 Y6000 Z6000 -#### Preheat Temprature +#### Preheat Temperature # Maximum Filament name length 7 characters +# If default names are changed, make sure to change Icons to match the names #format [T B] preheat_name1:PLA preheat_temp1:T200 B60 @@ -195,8 +227,8 @@ ps_on:0 # Options:[HIGH: 1, LOW: 0] ps_on_active_high:1 -#### Maximum hotend temperature of automatic shut down after printing (only if auto power is enabled) -# wait for the hotend temperature to be lower than this value, then turn off the power automatically +#### Maximum hot-end temperature of automatic shut down after printing (only if auto power is enabled) +# wait for the hot-end temperature to be lower than this value, then turn off the power automatically auto_shutdown_temp:50 #-------------------------------------------------------------------- @@ -236,7 +268,7 @@ btt_mini_ups:0 #-------------------------------------------------------------------- -# Other device specific settings +# Other device-specific settings #-------------------------------------------------------------------- #### Buzzer / sound @@ -244,17 +276,17 @@ btt_mini_ups:0 buzzer:1 #### Knob Led Color (only for TFT35 E3.0) -#Options: [ 1: LED_OFF, 2: LED_WHITE, 3: LED_RED, 4: LED_ORANGE, 5: LED_YELLOW, 6: LED_GREEN,7: LED_BLUE, 8: LED_INDIGO, 9: LED_VIOLET] -knob_led_color:1 +#Options: [ 0: LED_OFF, 1: LED_WHITE, 2: LED_RED, 3: LED_ORANGE, 4: LED_YELLOW, 5: LED_GREEN, 6: LED_BLUE, 7: LED_INDIGO, 8: LED_VIOLET] +knob_led_color:0 #### Default LCD Brightness levels (only for TFT35v3.0 & TFT28v3.0) -# Options: [(low) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] +# Options: [(low) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] lcd_brightness:10 lcd_idle_brightness:5 -####Default LCD idle time(in sec) (only for TFT35v3.0 & TFT28v3.0) -# Options: [off: 0, 5sec: 1, 10sec: 2, 30sec: 3, 60sec: 4,120sec: 5, 300sec: 6] -lcd_idle_delay:3 +####Default LCD idle time (only for TFT35v3.0 & TFT28v3.0) +# Options [0: Off, 1: 5Sec, 2: 10Sec , 3: 30sec, 4: 1min, 5: 2min, 6: 5min, 7: 10min] +lcd_idle_delay:4 #-------------------------------------------------------------------- @@ -269,7 +301,7 @@ lcd_idle_delay:3 # if the values are left blank then default name and G-code will be used -# Options: [Label maximum length: 20 characters, G-code Maximum length 70 characters] +# Options: [Label maximum length: 24 characters, G-code Maximum length 70 characters] custom_label_1:Disable steppers custom_gcode_1:M84\n @@ -278,13 +310,13 @@ custom_gcode_2:G28\nG29\nG0\n custom_label_3:Release sd card custom_gcode_3:M22\n custom_label_4:restore leveling -custom_gcode_4:M420 s1\n +custom_gcode_4:M420 S1\n custom_label_5:Save to EEPROM custom_gcode_5:M500\n custom_label_6:restore from EEPROM custom_gcode_6:M501\n -#custom_label_7:EEPROM defaults -#custom_gcode_7:M502\n +custom_label_7:EEPROM defaults +custom_gcode_7:M502\n #custom_label_8:custom8 #custom_gcode_8:M105\n #custom_label_9:custom9 @@ -325,4 +357,3 @@ end_gcode:G90\nG1 E-4\nG92 E0\nM18\n #### Cancel G-code - run this G-code after canceling print # maximum length 50 characters cancel_gcode:G28 XY R10\n - diff --git a/README.md b/README.md index 03d6629817..f0435defc5 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Firmware for BigTreeTech's dual-mode touchscreen 3D printer controllers ## Table of Contents - [Menus and Themes](#menus-and-themes) - [Update TFT Firmware](#update-tft-firmware) +- [Configuration](#configuration) - [Customization](#customization) - [Bootscreen and Icons](#bootscreen-and-icons) - [Firmware](#firmware) @@ -46,6 +47,21 @@ Place SD card with `BIGTREE_TFT*_V*.*.*.bin` & `TFT*` folder into the TFT's

⚠️ Failing to update your icons & fonts will result in missing icons and/or unreadable text ⚠️

+## Configuration +The Firmware can be configured using the **config.ini** file from from one of these folders: +[`Copy to SD Card root directory to update`](https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/tree/master/Copy%20to%20SD%20Card%20root%20directory%20to%20update) or +[`Copy to SD Card root directory to update - Unified Menu Material theme`](https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/tree/master/Copy%20to%20SD%20Card%20root%20directory%20to%20update%20-%20Unified%20Menu%20Material%20theme) + +### Editing configuration (config.ini) file +To edit the **config.ini** file follow the instruction here: [Detailed Instrucions here](config_instructions.md) + +### Updating Firmware Configuration +To update the Firmware configuration: +1. Edit the settings in **config.ini**. +2. Copy the **config.ini** file to the root of the SD card. (The SD card capacity should be less than or equal to 8GB and formatted as FAT32) +3. Insert the SD card in the TFT's SD card slot and restart the TFT by pressing the reset buttion or disconnecting and connecting the power cable. +4. The TFT will update and store the configuraiton form **config.ini** file. + ## Customization ### Bootscreen and Icons diff --git a/TFT/src/User/API/Colors.h b/TFT/src/User/API/Colors.h index ad0a8d8e84..2796044c34 100644 --- a/TFT/src/User/API/Colors.h +++ b/TFT/src/User/API/Colors.h @@ -11,18 +11,18 @@ #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x0760 -#define BLUE 0x021F +#define BLUE 0x00DF #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 -#define ORANGE 0xFC00 -#define PURPLE 0x901C +#define ORANGE 0xFB23 +#define PURPLE 0x7817 #define LIME 0xBFE0 #define BROWN 0X9240 -#define DARKBLUE 0X000F -#define DARKGREEN 0x2261 +#define DARKBLUE 0X0030 +#define DARKGREEN 0x0340 #define GRAY 0X8430 -#define DARKGRAY 0x39C7 +#define DARKGRAY 0x2124 typedef enum diff --git a/TFT/src/User/API/Language/Language.h b/TFT/src/User/API/Language/Language.h index acf08d28e4..e27fb9e1ba 100644 --- a/TFT/src/User/API/Language/Language.h +++ b/TFT/src/User/API/Language/Language.h @@ -35,7 +35,8 @@ enum { //keep the following always at the end of this list LABEL_NUM, LABEL_BACKGROUND, - LABEL_DYNAMIC + LABEL_DYNAMIC, + LABEL_CUSTOM_VALUE, }; u8 * textSelect(u8 sel); diff --git a/TFT/src/User/API/Language/Language.inc b/TFT/src/User/API/Language/Language.inc index 56b87f4cba..3339d072b3 100644 --- a/TFT/src/User/API/Language/Language.inc +++ b/TFT/src/User/API/Language/Language.inc @@ -6,7 +6,6 @@ * * Description: https://en.wikipedia.org/wiki/X_Macro */ - X_WORD (LANGUAGE) X_WORD (HEAT) X_WORD (MOVE) @@ -24,6 +23,7 @@ X_WORD (SHUT_DOWN) X_WORD (RGB_SETTINGS) X_WORD (RGB_OFF) X_WORD (GCODE) +X_WORD (TERMINAL) X_WORD (CUSTOM) X_WORD (LEVELING) X_WORD (POINT_1) @@ -104,15 +104,7 @@ X_WORD (10_MM) X_WORD (1_PERCENT) X_WORD (5_PERCENT) X_WORD (10_PERCENT) -X_WORD (20_PERCENT) -X_WORD (30_PERCENT) -X_WORD (40_PERCENT) -X_WORD (50_PERCENT) -X_WORD (60_PERCENT) -X_WORD (70_PERCENT) -X_WORD (80_PERCENT) -X_WORD (90_PERCENT) -X_WORD (100_PERCENT) +X_WORD (PERCENT_VALUE) X_WORD (READY) X_WORD (BUSY) X_WORD (UNCONNECTED) diff --git a/TFT/src/User/API/Language/language_am.h b/TFT/src/User/API/Language/language_am.h index f4ce9f05bb..2c0fddf876 100644 --- a/TFT/src/User/API/Language/language_am.h +++ b/TFT/src/User/API/Language/language_am.h @@ -18,6 +18,7 @@ #define AM_RGB_SETTINGS "LED Color" #define AM_RGB_OFF "LED Off" #define AM_GCODE "Gcode" + #define AM_TERMINAL "Terminal" #define AM_CUSTOM "Custom" #define AM_LEVELING "Leveling" #define AM_POINT_1 "Point 1" @@ -98,15 +99,7 @@ #define AM_1_PERCENT "1%" #define AM_5_PERCENT "5%" #define AM_10_PERCENT "10%" - #define AM_20_PERCENT "20%" - #define AM_30_PERCENT "30%" - #define AM_40_PERCENT "40%" - #define AM_50_PERCENT "50%" - #define AM_60_PERCENT "60%" - #define AM_70_PERCENT "70%" - #define AM_80_PERCENT "80%" - #define AM_90_PERCENT "90%" - #define AM_100_PERCENT "100%" + #define AM_PERCENT_VALUE "%d%" #define AM_READY "Պատրաստ" #define AM_BUSY "Ծանրաբեռնված է" #define AM_UNCONNECTED "Տպիչը կցված չէ" @@ -148,19 +141,19 @@ #define AM_FORCE_SHUT_DOWN "Force" #define AM_SHUTTING_DOWN "Shutting down..." #define AM_PARAMETER_SETTING "Պարամետր" - #define AM_ON "ON" - #define AM_OFF "OFF" - #define AM_SMART "SMART" - #define AM_TERMINAL_ACK "Hide Terminal ACK" - #define AM_INVERT_XAXIS "Invert X Axis" - #define AM_INVERT_YAXIS "Invert Y Axis" - #define AM_INVERT_ZAXIS "Invert Z Axis" - #define AM_MOVE_SPEED "Move speed(X Y Z)" - #define AM_KNOB_LED "Rotary Knob LED" - #define AM_M0_PAUSE "Paused by M0 command" - #define AM_SEND_START_GCODE "Start Gcode before print" - #define AM_SEND_END_GCODE "End Gcode after print" - #define AM_SEND_CANCEL_GCODE "Cancel Gcode" + #define AM_ON "ON" + #define AM_OFF "OFF" + #define AM_SMART "SMART" + #define AM_TERMINAL_ACK "Show ACK in Terminal" + #define AM_INVERT_XAXIS "Invert X Axis" + #define AM_INVERT_YAXIS "Invert Y Axis" + #define AM_INVERT_ZAXIS "Invert Z Axis" + #define AM_MOVE_SPEED "Move speed(X Y Z)" + #define AM_KNOB_LED "Rotary Knob LED" + #define AM_M0_PAUSE "Paused by M0 command" + #define AM_SEND_START_GCODE "Start Gcode before print" + #define AM_SEND_END_GCODE "End Gcode after print" + #define AM_SEND_CANCEL_GCODE "Cancel Gcode" #define AM_PERSISTENT_STATUS_INFO "Persistent Status Info" #define AM_FILE_LISTMODE "Files viewer List Mode" #define AM_CURRENT_SETTING "Driver Current (mA)" diff --git a/TFT/src/User/API/Language/language_cn.h b/TFT/src/User/API/Language/language_cn.h index 4e44eaab46..83e0eef70e 100644 --- a/TFT/src/User/API/Language/language_cn.h +++ b/TFT/src/User/API/Language/language_cn.h @@ -18,6 +18,7 @@ #define CN_RGB_SETTINGS "灯光颜色" #define CN_RGB_OFF "熄灭灯光" #define CN_GCODE "Gcode" + #define CN_TERMINAL "Terminal" #define CN_CUSTOM "自定义" #define CN_LEVELING "调平" #define CN_POINT_1 "第一点" @@ -98,15 +99,7 @@ #define CN_1_PERCENT "1%" #define CN_5_PERCENT "5%" #define CN_10_PERCENT "10%" - #define CN_20_PERCENT "20%" - #define CN_30_PERCENT "30%" - #define CN_40_PERCENT "40%" - #define CN_50_PERCENT "50%" - #define CN_60_PERCENT "60%" - #define CN_70_PERCENT "70%" - #define CN_80_PERCENT "80%" - #define CN_90_PERCENT "90%" - #define CN_100_PERCENT "100%" + #define CN_PERCENT_VALUE "%d%" #define CN_READY "准备打印" #define CN_BUSY "系统繁忙,请稍候..." #define CN_UNCONNECTED "未连接到打印机!" @@ -151,7 +144,7 @@ #define CN_ON "开启" #define CN_OFF "关闭" #define CN_SMART "智能" - #define CN_TERMINAL_ACK "Gcode终端隐藏温度信息" + #define CN_TERMINAL_ACK "在GCODE终端中显示温度信息" #define CN_INVERT_XAXIS "翻转X轴" #define CN_INVERT_YAXIS "翻转Y轴" #define CN_INVERT_ZAXIS "翻转Z轴" diff --git a/TFT/src/User/API/Language/language_cz.h b/TFT/src/User/API/Language/language_cz.h index f18b2fcae6..c8813dcc80 100644 --- a/TFT/src/User/API/Language/language_cz.h +++ b/TFT/src/User/API/Language/language_cz.h @@ -18,6 +18,7 @@ #define CZ_RGB_SETTINGS "Barva LED" #define CZ_RGB_OFF "LED vyp." #define CZ_GCODE "Gcode" + #define CZ_TERMINAL "Terminal" #define CZ_CUSTOM "Vlastní" #define CZ_LEVELING "Srovnat" #define CZ_POINT_1 "Bod 1" @@ -98,15 +99,7 @@ #define CZ_1_PERCENT "1%" #define CZ_5_PERCENT "5%" #define CZ_10_PERCENT "10%" - #define CZ_20_PERCENT "20%" - #define CZ_30_PERCENT "30%" - #define CZ_40_PERCENT "40%" - #define CZ_50_PERCENT "50%" - #define CZ_60_PERCENT "60%" - #define CZ_70_PERCENT "70%" - #define CZ_80_PERCENT "80%" - #define CZ_90_PERCENT "90%" - #define CZ_100_PERCENT "100%" + #define CZ_PERCENT_VALUE "%d%" #define CZ_READY "Ready" #define CZ_BUSY "Zpracovávám, čekejte prosím..." #define CZ_UNCONNECTED "Tiskárna není připojena!" @@ -151,7 +144,7 @@ #define CZ_ON "ON" #define CZ_OFF "OFF" #define CZ_SMART "SMART" - #define CZ_TERMINAL_ACK "Skrýt Terminal ACK" + #define CZ_TERMINAL_ACK "Show ACK in Terminal" #define CZ_INVERT_XAXIS "Invert X Axis" #define CZ_INVERT_YAXIS "Invert Y Axis" #define CZ_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_de.h b/TFT/src/User/API/Language/language_de.h index 1643074ea5..491dc2f73f 100644 --- a/TFT/src/User/API/Language/language_de.h +++ b/TFT/src/User/API/Language/language_de.h @@ -18,6 +18,7 @@ #define DE_RGB_SETTINGS "LED Farbe" #define DE_RGB_OFF "LED Aus" #define DE_GCODE "Gcode" + #define DE_TERMINAL "Terminal" #define DE_CUSTOM "Extras" #define DE_LEVELING "Leveling" #define DE_POINT_1 "Punkt 1" @@ -98,15 +99,7 @@ #define DE_1_PERCENT "1%" #define DE_5_PERCENT "5%" #define DE_10_PERCENT "10%" - #define DE_20_PERCENT "20%" - #define DE_30_PERCENT "30%" - #define DE_40_PERCENT "40%" - #define DE_50_PERCENT "50%" - #define DE_60_PERCENT "60%" - #define DE_70_PERCENT "70%" - #define DE_80_PERCENT "80%" - #define DE_90_PERCENT "90%" - #define DE_100_PERCENT "100%" + #define DE_PERCENT_VALUE "%d%" #define DE_READY "Bereit" #define DE_BUSY "Bitte warten..." #define DE_UNCONNECTED "Keine Verbindung zum Drucker!" @@ -151,7 +144,7 @@ #define DE_ON "AN" #define DE_OFF "AUS" #define DE_SMART "SMART" - #define DE_TERMINAL_ACK "Blende Terminal ACK aus" + #define DE_TERMINAL_ACK "Show ACK in Terminal" #define DE_INVERT_XAXIS "Invertiere X-Achse" #define DE_INVERT_YAXIS "Invertiere Y-Achse" #define DE_INVERT_ZAXIS "Invertiere Z-Achse" diff --git a/TFT/src/User/API/Language/language_du.h b/TFT/src/User/API/Language/language_du.h index 44546ac993..6585c3dc20 100644 --- a/TFT/src/User/API/Language/language_du.h +++ b/TFT/src/User/API/Language/language_du.h @@ -18,6 +18,7 @@ #define DU_RGB_SETTINGS "LED Kleur" #define DU_RGB_OFF "LED Uit" #define DU_GCODE "Gcode" + #define DU_TERMINAL "Terminal" #define DU_CUSTOM "Aangepast" #define DU_LEVELING "Nivelleren" #define DU_POINT_1 "Punt 1" @@ -98,15 +99,7 @@ #define DU_1_PERCENT "1%" #define DU_5_PERCENT "5%" #define DU_10_PERCENT "10%" - #define DU_20_PERCENT "20%" - #define DU_30_PERCENT "30%" - #define DU_40_PERCENT "40%" - #define DU_50_PERCENT "50%" - #define DU_60_PERCENT "60%" - #define DU_70_PERCENT "70%" - #define DU_80_PERCENT "80%" - #define DU_90_PERCENT "90%" - #define DU_100_PERCENT "100%" + #define DU_PERCENT_VALUE "%d%" #define DU_READY "Gereed" #define DU_BUSY "In verwerking ,wacht aub..." #define DU_UNCONNECTED "Geen printer gekoppeld!" @@ -151,7 +144,7 @@ #define DU_ON "AAN" #define DU_OFF "UIT" #define DU_SMART "SMART" - #define DU_TERMINAL_ACK "Verberg Terminal ACK" + #define DU_TERMINAL_ACK "Show ACK in Terminal" #define DU_INVERT_XAXIS "Inverteer X Axis" #define DU_INVERT_YAXIS "Inverteer Y Axis" #define DU_INVERT_ZAXIS "Inverteer Z Axis" diff --git a/TFT/src/User/API/Language/language_en.h b/TFT/src/User/API/Language/language_en.h index 721bc9669a..03326b9b74 100644 --- a/TFT/src/User/API/Language/language_en.h +++ b/TFT/src/User/API/Language/language_en.h @@ -18,6 +18,7 @@ #define EN_RGB_SETTINGS "LED Color" #define EN_RGB_OFF "LED Off" #define EN_GCODE "Gcode" + #define EN_TERMINAL "Terminal" #define EN_CUSTOM "Custom" #define EN_LEVELING "Leveling" #define EN_POINT_1 "Point 1" @@ -98,15 +99,7 @@ #define EN_1_PERCENT "1%" #define EN_5_PERCENT "5%" #define EN_10_PERCENT "10%" - #define EN_20_PERCENT "20%" - #define EN_30_PERCENT "30%" - #define EN_40_PERCENT "40%" - #define EN_50_PERCENT "50%" - #define EN_60_PERCENT "60%" - #define EN_70_PERCENT "70%" - #define EN_80_PERCENT "80%" - #define EN_90_PERCENT "90%" - #define EN_100_PERCENT "100%" + #define EN_PERCENT_VALUE "%d%" #define EN_READY "Ready" #define EN_BUSY "Busy processing, please wait..." #define EN_UNCONNECTED "No printer attached!" @@ -151,7 +144,7 @@ #define EN_ON "ON" #define EN_OFF "OFF" #define EN_SMART "SMART" - #define EN_TERMINAL_ACK "Hide Terminal ACK" + #define EN_TERMINAL_ACK "Show ACK in Terminal" #define EN_INVERT_XAXIS "Invert X Axis" #define EN_INVERT_YAXIS "Invert Y Axis" #define EN_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_es.h b/TFT/src/User/API/Language/language_es.h index d2d8400bae..33ae314252 100644 --- a/TFT/src/User/API/Language/language_es.h +++ b/TFT/src/User/API/Language/language_es.h @@ -18,6 +18,7 @@ #define ES_RGB_SETTINGS "Color LED" #define ES_RGB_OFF "Apagar LED" #define ES_GCODE "Gcode" + #define ES_TERMINAL "Terminal" #define ES_CUSTOM "Personalizar" #define ES_LEVELING "Nivelar" #define ES_POINT_1 "Punto 1" @@ -98,15 +99,7 @@ #define ES_1_PERCENT "1%" #define ES_5_PERCENT "5%" #define ES_10_PERCENT "10%" - #define ES_20_PERCENT "20%" - #define ES_30_PERCENT "30%" - #define ES_40_PERCENT "40%" - #define ES_50_PERCENT "50%" - #define ES_60_PERCENT "60%" - #define ES_70_PERCENT "70%" - #define ES_80_PERCENT "80%" - #define ES_90_PERCENT "90%" - #define ES_100_PERCENT "100%" + #define ES_PERCENT_VALUE "%d%" #define ES_READY "Preparado" #define ES_BUSY "Procesamiento ocupado, por favor espere..." #define ES_UNCONNECTED "¡No hay comunicación con impresora!" @@ -151,7 +144,7 @@ #define ES_ON "ON" #define ES_OFF "OFF" #define ES_SMART "SMART" - #define ES_TERMINAL_ACK "Hide Terminal ACK" + #define ES_TERMINAL_ACK "Show ACK in Terminal" #define ES_INVERT_XAXIS "Invert X Axis" #define ES_INVERT_YAXIS "Invert Y Axis" #define ES_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_fr.h b/TFT/src/User/API/Language/language_fr.h index 41ef4b1595..1ba86c5f2c 100644 --- a/TFT/src/User/API/Language/language_fr.h +++ b/TFT/src/User/API/Language/language_fr.h @@ -18,6 +18,7 @@ #define FR_RGB_SETTINGS "Couleur LED" #define FR_RGB_OFF "LED Off" #define FR_GCODE "Gcode" + #define FR_TERMINAL "Terminal" #define FR_CUSTOM "Custom" #define FR_LEVELING "Niveaux" #define FR_POINT_1 "Point 1" @@ -98,15 +99,7 @@ #define FR_1_PERCENT "1%" #define FR_5_PERCENT "5%" #define FR_10_PERCENT "10%" - #define FR_20_PERCENT "20%" - #define FR_30_PERCENT "30%" - #define FR_40_PERCENT "40%" - #define FR_50_PERCENT "50%" - #define FR_60_PERCENT "60%" - #define FR_70_PERCENT "70%" - #define FR_80_PERCENT "80%" - #define FR_90_PERCENT "90%" - #define FR_100_PERCENT "100%" + #define FR_PERCENT_VALUE "%d%" #define FR_READY "Prêt" #define FR_BUSY "Occupée, veuillez patienter..." #define FR_UNCONNECTED "L'imprimante n'est pas reliée !" @@ -151,7 +144,7 @@ #define FR_ON "ON" #define FR_OFF "OFF" #define FR_SMART "SMART" - #define FR_TERMINAL_ACK "Cacher le Terminal ACK" + #define FR_TERMINAL_ACK "Show ACK in Terminal" #define FR_INVERT_XAXIS "Inverser Axe X" #define FR_INVERT_YAXIS "Inverser Axe Y" #define FR_INVERT_ZAXIS "Inverser Axe Z" diff --git a/TFT/src/User/API/Language/language_hu.h b/TFT/src/User/API/Language/language_hu.h index fd5f31da90..24966163a7 100644 --- a/TFT/src/User/API/Language/language_hu.h +++ b/TFT/src/User/API/Language/language_hu.h @@ -18,6 +18,7 @@ #define HU_RGB_SETTINGS "LED Szín" #define HU_RGB_OFF "LED KI" #define HU_GCODE "G-Kód" + #define HU_TERMINAL "Terminal" #define HU_CUSTOM "Egyedi" #define HU_LEVELING "Szintezés" #define HU_POINT_1 "1. pont" @@ -98,15 +99,7 @@ #define HU_1_PERCENT "1%" #define HU_5_PERCENT "5%" #define HU_10_PERCENT "10%" - #define HU_20_PERCENT "20%" - #define HU_30_PERCENT "30%" - #define HU_40_PERCENT "40%" - #define HU_50_PERCENT "50%" - #define HU_60_PERCENT "60%" - #define HU_70_PERCENT "70%" - #define HU_80_PERCENT "80%" - #define HU_90_PERCENT "90%" - #define HU_100_PERCENT "100%" + #define HU_PERCENT_VALUE "%d%" #define HU_READY "Kész" #define HU_BUSY "Feldolgozás alatt, kérlek várj..." #define HU_UNCONNECTED "Nincs nyomtató csatlakoztatva!" @@ -151,7 +144,7 @@ #define HU_ON "BE" #define HU_OFF "KI" #define HU_SMART "OKOS" - #define HU_TERMINAL_ACK "ACK elrejtése" + #define HU_TERMINAL_ACK "Show ACK in Terminal" #define HU_INVERT_XAXIS "X megfordítása" #define HU_INVERT_YAXIS "Y megfordítása" #define HU_INVERT_ZAXIS "Z megfordítása" diff --git a/TFT/src/User/API/Language/language_it.h b/TFT/src/User/API/Language/language_it.h index dd91ccdda0..31107d104c 100644 --- a/TFT/src/User/API/Language/language_it.h +++ b/TFT/src/User/API/Language/language_it.h @@ -18,6 +18,7 @@ #define IT_RGB_SETTINGS "RGB LED" #define IT_RGB_OFF "Spegni" #define IT_GCODE "Gcode" + #define IT_TERMINAL "Terminal" #define IT_CUSTOM "Custom" #define IT_LEVELING "Livella" #define IT_POINT_1 "Punto 1" @@ -98,15 +99,7 @@ #define IT_1_PERCENT "1%" #define IT_5_PERCENT "5%" #define IT_10_PERCENT "10%" - #define IT_20_PERCENT "20%" - #define IT_30_PERCENT "30%" - #define IT_40_PERCENT "40%" - #define IT_50_PERCENT "50%" - #define IT_60_PERCENT "60%" - #define IT_70_PERCENT "70%" - #define IT_80_PERCENT "80%" - #define IT_90_PERCENT "90%" - #define IT_100_PERCENT "100%" + #define IT_PERCENT_VALUE "%d%" #define IT_READY "Pronto" #define IT_BUSY "Processo in carico, attendi..." #define IT_UNCONNECTED "Stampante non connessa" @@ -151,7 +144,7 @@ #define IT_ON "ON" #define IT_OFF "OFF" #define IT_SMART "SMART" - #define IT_TERMINAL_ACK "Hide Terminal ACK" + #define IT_TERMINAL_ACK "Show ACK in Terminal" #define IT_INVERT_XAXIS "Invert X Axis" #define IT_INVERT_YAXIS "Invert Y Axis" #define IT_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_jp.h b/TFT/src/User/API/Language/language_jp.h index 0b29331a3c..9e93f0823e 100644 --- a/TFT/src/User/API/Language/language_jp.h +++ b/TFT/src/User/API/Language/language_jp.h @@ -18,6 +18,7 @@ #define JP_RGB_SETTINGS "LED Color" #define JP_RGB_OFF "LED Off" #define JP_GCODE "Gcode" + #define JP_TERMINAL "Terminal" #define JP_CUSTOM "Custom" #define JP_LEVELING "Leveling" #define JP_POINT_1 "Point 1" @@ -98,15 +99,7 @@ #define JP_1_PERCENT "1%" #define JP_5_PERCENT "5%" #define JP_10_PERCENT "10%" - #define JP_20_PERCENT "20%" - #define JP_30_PERCENT "30%" - #define JP_40_PERCENT "40%" - #define JP_50_PERCENT "50%" - #define JP_60_PERCENT "60%" - #define JP_70_PERCENT "70%" - #define JP_80_PERCENT "80%" - #define JP_90_PERCENT "90%" - #define JP_100_PERCENT "100%" + #define JP_PERCENT_VALUE "%d%" #define JP_READY "準備中" #define JP_BUSY "ビジー状態、しばらくお待ちください..." #define JP_UNCONNECTED "プリンターに連続していない!" @@ -151,7 +144,7 @@ #define JP_ON "ON" #define JP_OFF "OFF" #define JP_SMART "SMART" - #define JP_TERMINAL_ACK "Hide Terminal ACK" + #define JP_TERMINAL_ACK "Show ACK in Terminal" #define JP_INVERT_XAXIS "Invert X Axis" #define JP_INVERT_YAXIS "Invert Y Axis" #define JP_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_pl.h b/TFT/src/User/API/Language/language_pl.h index cf1b87147c..154f323e78 100644 --- a/TFT/src/User/API/Language/language_pl.h +++ b/TFT/src/User/API/Language/language_pl.h @@ -18,6 +18,7 @@ #define PL_RGB_SETTINGS "Kolor LED" #define PL_RGB_OFF "Wyłącz LED" #define PL_GCODE "Gcode" + #define PL_TERMINAL "Terminal" #define PL_CUSTOM "Własne" #define PL_LEVELING "Poziomowanie" #define PL_POINT_1 "Punkt 1" @@ -98,15 +99,7 @@ #define PL_1_PERCENT "1%" #define PL_5_PERCENT "5%" #define PL_10_PERCENT "10%" - #define PL_20_PERCENT "20%" - #define PL_30_PERCENT "30%" - #define PL_40_PERCENT "40%" - #define PL_50_PERCENT "50%" - #define PL_60_PERCENT "60%" - #define PL_70_PERCENT "70%" - #define PL_80_PERCENT "80%" - #define PL_90_PERCENT "90%" - #define PL_100_PERCENT "100%" + #define PL_PERCENT_VALUE "%d%" #define PL_READY "Gotowy" #define PL_BUSY "Trwa przetwarzanie, proszę czekać..." #define PL_UNCONNECTED "Drukarka nie podłączona!" @@ -151,7 +144,7 @@ #define PL_ON "ON" #define PL_OFF "OFF" #define PL_SMART "SMART" - #define PL_TERMINAL_ACK "Hide Terminal ACK" + #define PL_TERMINAL_ACK "Show ACK in Terminal" #define PL_INVERT_XAXIS "Invert X Axis" #define PL_INVERT_YAXIS "Invert Y Axis" #define PL_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_pt.h b/TFT/src/User/API/Language/language_pt.h index e6254d4231..d7c265db38 100644 --- a/TFT/src/User/API/Language/language_pt.h +++ b/TFT/src/User/API/Language/language_pt.h @@ -18,6 +18,7 @@ #define PT_RGB_SETTINGS "LED cor" #define PT_RGB_OFF "Desligar" #define PT_GCODE "Gcode" + #define PT_TERMINAL "Terminal" #define PT_CUSTOM "Custom" #define PT_LEVELING "Nivelar" #define PT_POINT_1 "Ponto 1" @@ -98,15 +99,7 @@ #define PT_1_PERCENT "1%" #define PT_5_PERCENT "5%" #define PT_10_PERCENT "10%" - #define PT_20_PERCENT "20%" - #define PT_30_PERCENT "30%" - #define PT_40_PERCENT "40%" - #define PT_50_PERCENT "50%" - #define PT_60_PERCENT "60%" - #define PT_70_PERCENT "70%" - #define PT_80_PERCENT "80%" - #define PT_90_PERCENT "90%" - #define PT_100_PERCENT "100%" + #define PT_PERCENT_VALUE "%d%" #define PT_READY "Pronto" #define PT_BUSY "Em processamento, aguarde..." #define PT_UNCONNECTED "Nenhuma impressora conectada!" @@ -151,7 +144,7 @@ #define PT_ON "ON" #define PT_OFF "OFF" #define PT_SMART "SMART" - #define PT_TERMINAL_ACK "Hide Terminal ACK" + #define PT_TERMINAL_ACK "Show ACK in Terminal" #define PT_INVERT_XAXIS "Invert X Axis" #define PT_INVERT_YAXIS "Invert Y Axis" #define PT_INVERT_ZAXIS "Invert Z Axis" diff --git a/TFT/src/User/API/Language/language_ru.h b/TFT/src/User/API/Language/language_ru.h index 046db0202a..86358835e6 100644 --- a/TFT/src/User/API/Language/language_ru.h +++ b/TFT/src/User/API/Language/language_ru.h @@ -18,6 +18,7 @@ #define RU_RGB_SETTINGS "Цвет LED" #define RU_RGB_OFF "LED выкл" #define RU_GCODE "G-коды" + #define RU_TERMINAL "Terminal" #define RU_CUSTOM "Своё меню" #define RU_LEVELING "Равнение" #define RU_POINT_1 "Точка 1" @@ -98,15 +99,7 @@ #define RU_1_PERCENT "1%" #define RU_5_PERCENT "5%" #define RU_10_PERCENT "10%" - #define RU_20_PERCENT "20%" - #define RU_30_PERCENT "30%" - #define RU_40_PERCENT "40%" - #define RU_50_PERCENT "50%" - #define RU_60_PERCENT "60%" - #define RU_70_PERCENT "70%" - #define RU_80_PERCENT "80%" - #define RU_90_PERCENT "90%" - #define RU_100_PERCENT "100%" + #define RU_PERCENT_VALUE "%d%" #define RU_READY "Готов" #define RU_BUSY "Занято процессом, подождите..." #define RU_UNCONNECTED "Нет подключения!" @@ -151,7 +144,7 @@ #define RU_ON "Вкл" #define RU_OFF "Выкл" #define RU_SMART "Умный" - #define RU_TERMINAL_ACK "Скрыть ACK терминала" + #define RU_TERMINAL_ACK "показать ACK в Терминале" #define RU_INVERT_XAXIS "Инверсия оси X" #define RU_INVERT_YAXIS "Инверсия оси Y" #define RU_INVERT_ZAXIS "Инверсия оси Z" diff --git a/TFT/src/User/API/Language/language_sk.h b/TFT/src/User/API/Language/language_sk.h index 9ec64c2a13..a0175b135e 100644 --- a/TFT/src/User/API/Language/language_sk.h +++ b/TFT/src/User/API/Language/language_sk.h @@ -18,6 +18,7 @@ #define SK_RGB_SETTINGS "Farba LED" #define SK_RGB_OFF "Vypnúť LED" #define SK_GCODE "Gcode" + #define SK_TERMINAL "Terminal" #define SK_CUSTOM "Vlastné" #define SK_LEVELING "Vyrovnanie" #define SK_POINT_1 "Bod 1" @@ -98,15 +99,7 @@ #define SK_1_PERCENT "1%" #define SK_5_PERCENT "5%" #define SK_10_PERCENT "10%" - #define SK_20_PERCENT "20%" - #define SK_30_PERCENT "30%" - #define SK_40_PERCENT "40%" - #define SK_50_PERCENT "50%" - #define SK_60_PERCENT "60%" - #define SK_70_PERCENT "70%" - #define SK_80_PERCENT "80%" - #define SK_90_PERCENT "90%" - #define SK_100_PERCENT "100%" + #define SK_PERCENT_VALUE "%d%" #define SK_READY "Pripravená" #define SK_BUSY "Počkajte prosím..." #define SK_UNCONNECTED "Tlačiareň odpojená!" @@ -151,7 +144,7 @@ #define SK_ON "ON" #define SK_OFF "OFF" #define SK_SMART "SMART" - #define SK_TERMINAL_ACK "Skryť ACK terminál" + #define SK_TERMINAL_ACK "Show ACK in Terminal" #define SK_INVERT_XAXIS "Invertovať os X" #define SK_INVERT_YAXIS "Invertovať os Y" #define SK_INVERT_ZAXIS "Invertovať os Z" diff --git a/TFT/src/User/API/Language/utf8_decode.c b/TFT/src/User/API/Language/utf8_decode.c index 6e4cc59e26..a1d09cba3a 100644 --- a/TFT/src/User/API/Language/utf8_decode.c +++ b/TFT/src/User/API/Language/utf8_decode.c @@ -127,3 +127,18 @@ uint16_t GUI_StrPixelWidth(const uint8_t *const str) } return len; } +uint16_t getUTF8Length(const uint8_t *const str) +{ + uint16_t i = 0, len = 0; + CHAR_INFO info; + + if(str == NULL) return 0; + while(str[i]) + { + info.bytes = 0; + getUTF8EncodeInfo(str + i, &info); + i += info.bytes; + len ++; + } + return len; +} diff --git a/TFT/src/User/API/Language/utf8_decode.h b/TFT/src/User/API/Language/utf8_decode.h index c5c83fd2e2..ba9c52a8f9 100644 --- a/TFT/src/User/API/Language/utf8_decode.h +++ b/TFT/src/User/API/Language/utf8_decode.h @@ -28,5 +28,6 @@ typedef struct void getCharacterInfo(const uint8_t *ch, CHAR_INFO *pInfo); uint16_t GUI_StrPixelWidth(const uint8_t *const str); +uint16_t getUTF8Length(const uint8_t *const str); #endif diff --git a/TFT/src/User/API/UI/Numpad.c b/TFT/src/User/API/UI/Numpad.c new file mode 100644 index 0000000000..bfeaa3ad3d --- /dev/null +++ b/TFT/src/User/API/UI/Numpad.c @@ -0,0 +1,237 @@ +#include "Numpad.h" + +const GUI_RECT rect_of_numkey[KEY_NUM]={ + {0*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//1 + {1*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//2 + {2*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//3 + {3*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//OK + + {0*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//4 + {1*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//5 + {2*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//6 + {3*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//Del + + {0*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//7 + {1*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//8 + {2*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//9 + {3*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},// + + {0*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//. + {1*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//0 + {2*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//- + {3*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},// +}; + +const char *const numPadKeyChar[KEY_NUM] = { + "1","2","3","\u0894", + "4","5","6","\u0899", + "7","8","9","\u0895", + ".","0","-","" +}; + +//get keypress for NumPad +NUM_KEY_VALUES NumKeyGetValue(void) +{ + return (NUM_KEY_VALUES)KEY_GetValue(sizeof(rect_of_numkey)/sizeof(rect_of_numkey[0]), rect_of_numkey); +} + +void Draw_keyboard(void) +{ + TSC_ReDrawIcon = NULL; + GUI_ClearRect(0, 0, LCD_WIDTH, rect_of_numkey[0].y0); + GUI_SetBkColor(WHITE); + GUI_ClearRect(0, rect_of_numkey[0].y0, LCD_WIDTH, LCD_HEIGHT); + GUI_SetColor(BLACK); + + for (int i = 0;i<3;i++){ + GUI_DrawLine(rect_of_numkey[i].x1,rect_of_numkey[i].y0,rect_of_numkey[12+i].x1,rect_of_numkey[12+i].y1); + GUI_DrawLine(rect_of_numkey[i*4].x0,rect_of_numkey[i*4].y1,rect_of_numkey[3+i*4].x1,rect_of_numkey[3+i*4].y1); + } + + for(uint8_t i=0 ;i"); + char tempstr[BUFLONG]; + my_sprintf(tempstr, "%.2f", old_val); + //GUI_SetColor(WHITE); + GUI_DispStringInPrect(&oldParameterRect,(u8*)tempstr); + touchSound = false; + while (1) + { + key_num = NumKeyGetValue(); + switch (key_num) + { + case NUM_KEY_EXIT: + BUZZER_PLAY(sound_cancel); + touchSound = true; + return old_val; + + case NUM_KEY_DEL: + if (nowIndex) + ParameterBuf[--nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + break; + + case NUM_KEY_1: + case NUM_KEY_2: + case NUM_KEY_3: + case NUM_KEY_4: + case NUM_KEY_5: + case NUM_KEY_6: + case NUM_KEY_7: + case NUM_KEY_8: + case NUM_KEY_9: + case NUM_KEY_0: + if (nowIndex < BUFLONG - 1) + { + ParameterBuf[nowIndex++] = numPadKeyChar[key_num][0]; + ParameterBuf[nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + } + break; + case NUM_KEY_DEC: + if (!strchr((const char *)ParameterBuf, numPadKeyChar[key_num][0])) + { + if (nowIndex < BUFLONG - 1) + { + if(nowIndex == 0 || (nowIndex == 1 && strchr((const char *)ParameterBuf, '-'))) // check if no number exits or only minus exists + ParameterBuf[nowIndex++] = '0'; //add zero before decimal sign if it is the first character + ParameterBuf[nowIndex++] = numPadKeyChar[key_num][0]; + ParameterBuf[nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + } + } + break; + case NUM_KEY_MINUS: + if (!strchr( (const char *)ParameterBuf, numPadKeyChar[key_num][0]) && negative_val) + { + if (nowIndex == 0) + { + ParameterBuf[nowIndex++] = numPadKeyChar[key_num][0]; + ParameterBuf[nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + } + } + break; + + case NUM_KEY_OK: + if (nowIndex > 0) + { + if (nowIndex == 1 &&(strchr((const char *)ParameterBuf, '.') || strchr((const char *)ParameterBuf, '-'))) + break; + //Send_Settingcmd(); + + BUZZER_PLAY(sound_ok); + touchSound = true; + return strtof(ParameterBuf, NULL); + + } + default: + break; + } + + if (lastIndex != nowIndex) + { + lastIndex = nowIndex; + GUI_ClearPrect(&newParameterRect); + GUI_DispStringInPrect(&newParameterRect, (u8 *)ParameterBuf); + } + loopBackEnd(); + } +} + + +u32 numPadInt(u32 old_val) +{ + //bool exit = false; + GUI_RECT oldParameterRect = {0, 0, LCD_WIDTH/2 - BYTE_WIDTH, rect_of_numkey[0].y0}; + GUI_RECT newParameterRect = {LCD_WIDTH/2 + BYTE_WIDTH, 0, LCD_WIDTH, rect_of_numkey[0].y0}; + GUI_RECT arrowRect = {LCD_WIDTH/2 - BYTE_WIDTH, 0, LCD_WIDTH/2 + BYTE_WIDTH, rect_of_numkey[0].y0}; + uint8_t nowIndex = 0,lastIndex = 0; + char ParameterBuf[BUFLONG] = {0}; + NUM_KEY_VALUES key_num = NUM_KEY_IDLE; + Draw_keyboard(); + GUI_DispStringInPrect(&arrowRect,(u8 *)">"); + char tempstr[BUFLONG]; + my_sprintf(tempstr, "%.2f", old_val); + GUI_DispStringInPrect(&oldParameterRect,(u8*)tempstr); + touchSound = false; + while (1) + { + key_num = NumKeyGetValue(); + switch (key_num) + { + case NUM_KEY_EXIT: + BUZZER_PLAY(sound_cancel); + touchSound = true; + return old_val; + + case NUM_KEY_DEL: + if (nowIndex) + ParameterBuf[--nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + break; + + case NUM_KEY_1: + case NUM_KEY_2: + case NUM_KEY_3: + case NUM_KEY_4: + case NUM_KEY_5: + case NUM_KEY_6: + case NUM_KEY_7: + case NUM_KEY_8: + case NUM_KEY_9: + case NUM_KEY_0: + if (nowIndex < BUFLONG - 1) + { + ParameterBuf[nowIndex++] = numPadKeyChar[key_num][0]; + ParameterBuf[nowIndex] = 0; + BUZZER_PLAY(sound_keypress); + } + break; + case NUM_KEY_OK: + if (nowIndex > 0) + { + if (nowIndex == 1 &&(ParameterBuf[0] = '.' || ParameterBuf[0] == '-')) + break; + + BUZZER_PLAY(sound_ok); + touchSound = true; + return strtoul(ParameterBuf,NULL,10); + } + default: + break; + } + + if (lastIndex != nowIndex) + { + lastIndex = nowIndex; + GUI_ClearPrect(&newParameterRect); + GUI_DispStringInPrect(&newParameterRect, (u8 *)ParameterBuf); + } + loopBackEnd(); + } +} \ No newline at end of file diff --git a/TFT/src/User/API/UI/Numpad.h b/TFT/src/User/API/UI/Numpad.h new file mode 100644 index 0000000000..e32832937e --- /dev/null +++ b/TFT/src/User/API/UI/Numpad.h @@ -0,0 +1,56 @@ +#ifndef _NUMPAD_H_ +#define _NUMPAD_H_ + +#include "includes.h" + +#define SKEYHEIGHT (LCD_HEIGHT-ICON_START_Y)/4 +#define SKEYWIDTH LCD_WIDTH/4 + +#define KEY_NUM 16 +#define BUFLONG 6 + +typedef enum +{ + SKEY_0 = 0, + SKEY_1, + SKEY_2, + SKEY_3, + SKEY_4, + SKEY_5, + SKEY_6, + SKEY_7, + SKEY_8, + SKEY_9, + SKEY_10, + SKEY_11, + SKEY_IDLE = IDLE_TOUCH, +}SKEY_VALUES; + +typedef enum +{ + NUM_KEY_1 = 0, + NUM_KEY_2, + NUM_KEY_3, + NUM_KEY_OK, + NUM_KEY_4, + NUM_KEY_5, + NUM_KEY_6, + NUM_KEY_DEL, + NUM_KEY_7, + NUM_KEY_8, + NUM_KEY_9, + NUM_KEY_EXIT, + NUM_KEY_DEC, + NUM_KEY_0, + NUM_KEY_MINUS, + NUM_KEY_15, + + NUM_KEY_IDLE = IDLE_TOUCH, +}NUM_KEY_VALUES; + + +float numPadFloat(float old_val, bool negative_val); + +u32 numPadInt(u32 old_val); + +#endif \ No newline at end of file diff --git a/TFT/src/User/API/UI/ST7920_Simulator.c b/TFT/src/User/API/UI/ST7920_Simulator.c index 89e41f932a..04059aa00f 100644 --- a/TFT/src/User/API/UI/ST7920_Simulator.c +++ b/TFT/src/User/API/UI/ST7920_Simulator.c @@ -53,9 +53,9 @@ void ST7920_DrawByte(u8 data) for(; i<8; i++) { if(data & 0x80) - ST7920_DrawPixel(x, y, lcd_colors[infoSettings.font_color]); + ST7920_DrawPixel(x, y, lcd_colors[infoSettings.marlin_mode_font_color]); else - ST7920_DrawPixel(x, y, lcd_colors[infoSettings.bg_color]); + ST7920_DrawPixel(x, y, lcd_colors[infoSettings.marlin_mode_bg_color]); data <<= 1; x++; } @@ -134,9 +134,9 @@ void ST7920_ST7920_ParseWCmd(u8 cmd) void menuST7920(void) { - GUI_Clear(lcd_colors[infoSettings.bg_color]); - GUI_SetColor(lcd_colors[infoSettings.font_color]); - GUI_SetBkColor(lcd_colors[infoSettings.bg_color]); + GUI_Clear(lcd_colors[infoSettings.marlin_mode_bg_color]); + GUI_SetColor(lcd_colors[infoSettings.marlin_mode_font_color]); + GUI_SetBkColor(lcd_colors[infoSettings.marlin_mode_bg_color]); if(infoSettings.marlin_mode_showtitle == 1){ STRINGS_STORE tempST; diff --git a/TFT/src/User/API/UI/list_item.c b/TFT/src/User/API/UI/list_item.c index 142a93fb64..ab779515ef 100644 --- a/TFT/src/User/API/UI/list_item.c +++ b/TFT/src/User/API/UI/list_item.c @@ -7,6 +7,8 @@ char * dynamic_label[LISTITEM_PER_PAGE]; +char * dynamic_text_value[LISTITEM_PER_PAGE]; + float dynamic_value[LISTITEM_PER_PAGE]; const uint16_t ICON_COLOR[ICONCHAR_NUM]= @@ -248,7 +250,17 @@ char * getDynamicLabel(uint8_t i){ return dynamic_label[i]; } -// save dynamic value ( i : index of the value position, value:float value) +// save dynamic text value (upto 7 characters) ( i : index of the text value position, txt: char * to the text value) +void setDynamicTextValue(uint8_t i, char *txt){ + dynamic_text_value[i] = txt; +} + +// get dynamic text value ( i : index of the text value position) +char * getDynamicTextValue(uint8_t i){ + return dynamic_text_value[i]; +} + +// save dynamic value (upto 7 digits) ( i : index of the value position, value:float value) void setDynamicValue(uint8_t i,float value){ dynamic_value[i] = value; } @@ -346,7 +358,7 @@ void DrawListItemPress(const GUI_RECT * rect, bool pressed){ GUI_SetColor(lcd_colors[infoSettings.bg_color]); GUI_DrawPrect(rect); - GUI_SetColor(LISTBTN_BKCOLOR); + GUI_SetColor(lcd_colors[infoSettings.list_border_color]); GUI_DrawLine(rect->x0, rect->y0-1 , rect->x1-1, rect->y0-1 ); GUI_DrawLine(rect->x0, rect->y1-1 , rect->x1-1, rect->y1-1 ); } @@ -358,14 +370,16 @@ void ListItem_Display(const GUI_RECT* rect, uint8_t position, const LISTITEM * c //draw navigation icons if(position >= LISTITEM_PER_PAGE){ if(curitem->icon != ICONCHAR_BACKGROUND){ - DrawCharIcon(rect,MIDDLE,curitem->icon,LISTBTN_BKCOLOR); + DrawCharIcon(rect,MIDDLE,curitem->icon,lcd_colors[infoSettings.list_button_color]); if (pressed != false){ + GUI_SetColor(WHITE); GUI_DrawPrect(rect); } } else{ GUI_ClearPrect(rect); } + GUI_RestoreColorDefault(); } //draw list tiems else if (curitem->icon != ICONCHAR_BACKGROUND){ @@ -402,7 +416,7 @@ void ListItem_Display(const GUI_RECT* rect, uint8_t position, const LISTITEM * c GUI_ClearPrect(rect); if(curitem->icon != ICONCHAR_BLANK) { - DrawCharIcon(rect,LEFT_CENTER,curitem->icon,BLACK); + DrawCharIcon(rect,LEFT_CENTER,curitem->icon,lcd_colors[infoSettings.bg_color]); pos.x += (BYTE_HEIGHT + 1); } textarea_width = LISTITEM_WIDTH - (pos.x + BYTE_HEIGHT + 2); //width after removing the width for icon @@ -418,7 +432,7 @@ void ListItem_Display(const GUI_RECT* rect, uint8_t position, const LISTITEM * c case LIST_CUSTOMVALUE: if(curitem->icon != ICONCHAR_BLANK) { - DrawCharIcon(rect,LEFT_CENTER,curitem->icon,BLACK); + DrawCharIcon(rect,LEFT_CENTER,curitem->icon,lcd_colors[infoSettings.bg_color]); pos.x += (BYTE_HEIGHT + 3); } GUI_ClearRect(pos.x, rect->y0, rect->x1 - BYTE_WIDTH*8 -1, rect->y1); // clear only text area @@ -465,7 +479,7 @@ void ListItem_DisplayToggle(uint16_t sx, uint16_t sy, uint8_t iconchar_state) //GUI_ClearPrect(&rect_item); GUI_SetTextMode(GUI_TEXTMODE_NORMAL); - GUI_SetColor(LISTBTN_BKCOLOR); + GUI_SetColor(lcd_colors[infoSettings.list_border_color]); GUI_DispString(sx, sy, (uint8_t*)GET_ICONCHAR[ICONCHAR_TOGGLE_BODY]); GUI_SetTextMode(GUI_TEXTMODE_TRANS); @@ -493,7 +507,7 @@ void ListItem_DisplayCustomValue(const GUI_RECT* rect,LABEL value,int i) GUI_ClearPrect(&rectVal); GUI_SetTextMode(GUI_TEXTMODE_NORMAL); - GUI_SetColor(LISTBTN_BKCOLOR); + GUI_SetColor(lcd_colors[infoSettings.bg_color]); GUI_DrawPrect(&rectVal); GUI_SetTextMode(GUI_TEXTMODE_TRANS); @@ -501,17 +515,25 @@ void ListItem_DisplayCustomValue(const GUI_RECT* rect,LABEL value,int i) char tempstr[10]; - if(value.index == LABEL_DYNAMIC){ - if (dynamic_value[i] < 1000.0f){ - my_sprintf(tempstr, "%.2f",dynamic_value[i]); + if (value.index == LABEL_CUSTOM_VALUE) //show custom numeric value + { + if (dynamic_value[i] < 1000.0f) + { + my_sprintf(tempstr, "%.2f", dynamic_value[i]); } - else{ - my_sprintf(tempstr, "%.1f",dynamic_value[i]); + else + { + my_sprintf(tempstr, "%.1f", dynamic_value[i]); } - GUI_DispStringInPrect(&rectVal,(u8*)tempstr); + GUI_DispStringInPrect(&rectVal, (u8 *)tempstr); } - else{ - GUI_DispStringInPrect(&rectVal,textSelect(value.index)); + else if (value.index == LABEL_DYNAMIC) //show custom text value + { + GUI_DispStringInPrect(&rectVal, (u8 *)getDynamicTextValue(i)); + } + else //show regular text labels + { + GUI_DispStringInPrect(&rectVal, textSelect(value.index)); } GUI_RestoreColorDefault(); diff --git a/TFT/src/User/API/UI/list_item.h b/TFT/src/User/API/UI/list_item.h index b695316363..e0ecd161ce 100644 --- a/TFT/src/User/API/UI/list_item.h +++ b/TFT/src/User/API/UI/list_item.h @@ -45,10 +45,17 @@ typedef enum uint8_t * IconCharSelect(uint8_t sel); -void setDynamicLabel(uint8_t i,char *label); -char * getDynamicLabel(uint8_t i); -void setDynamicValue(uint8_t i,float value); -float getDynamicValue(uint8_t i); + +void setDynamicLabel(uint8_t i,char *label); //set list item title to any text +char * getDynamicLabel(uint8_t i); //get the custom text of the list item title + +void setDynamicTextValue(uint8_t i, char *label); //set list item value to any text (upto 7 characters) +char * getDynamicTextValue(uint8_t i); //get the custom text of the list item value + +void setDynamicValue(uint8_t i,float value); //set list item value to any numeric value (upto 7 digits) +float getDynamicValue(uint8_t i); //get the custom numeric value of the list item value + + void DrawCharIcon(const GUI_RECT * rect,ICON_POS iconalign, uint16_t iconindex, uint16_t btn_color); void ListItem_Display(const GUI_RECT* rect, uint8_t positon, const LISTITEM * curitem, bool pressed); void ListMenuSetItem (const LISTITEM * menuItem, uint8_t positon); diff --git a/TFT/src/User/API/boot.c b/TFT/src/User/API/boot.c index 13481f36cf..05d0f16dba 100644 --- a/TFT/src/User/API/boot.c +++ b/TFT/src/User/API/boot.c @@ -145,7 +145,7 @@ void updateIcon(void) dispIconFail((u8 *)(BMP_ROOT_DIR "/Logo.bmp")); } - GUI_Clear(BACKGROUND_COLOR); + GUI_Clear(lcd_colors[infoSettings.bg_color]); GUI_DispString(5, PADDING, (u8 *)"Updating Icons"); for (int i = 0; i < COUNT(iconBmpName); i++) diff --git a/TFT/src/User/API/config.c b/TFT/src/User/API/config.c index cfe0bf5999..21b7612d74 100644 --- a/TFT/src/User/API/config.c +++ b/TFT/src/User/API/config.c @@ -8,6 +8,7 @@ #define PRINTDEBUG(x) #endif + const GUI_POINT pointConfigTitle = {2,2}; const GUI_RECT rectTitleline = {0, BYTE_HEIGHT+4, LCD_WIDTH, BYTE_HEIGHT+6}; const GUI_RECT recterror = {BYTE_WIDTH/2-2, BYTE_HEIGHT*2+2, LCD_WIDTH-BYTE_WIDTH/2+2, LCD_HEIGHT-(BYTE_HEIGHT*4)-4}; @@ -20,6 +21,8 @@ u16 foundkeys = 0; CONFIGFILE configFile; char cur_line[LINE_MAX_CHAR]; int customcode_index = 0; +int customcode_good[CUSTOM_GCODES_COUNT]; +bool scheduleRotate = false; static CUSTOM_GCODES* configCustomGcodes = NULL; PRINT_GCODES* configPrintGcodes = NULL; @@ -117,6 +120,11 @@ void getConfigFromFile(void) PRINTDEBUG("\ngcode stored at 1:"); PRINTDEBUG(configCustomGcodes->gcode[1]); + if(scheduleRotate) + { + LCD_RefreshDirection(); + TSC_Calibration(); + } storePara(); saveConfig(); free(configCustomGcodes); @@ -143,7 +151,6 @@ static char key_seen(const char *keyStr) if (keyStr[i] == 0) { c_index += i; - foundkeys++; return true; } } @@ -186,6 +193,7 @@ void parseConfigLine(void) PRINTDEBUG("\n"); PRINTDEBUG((char*)config_keywords[i]); parseConfigKey(i); + foundkeys++; return; } } @@ -203,7 +211,7 @@ int8_t getOnOff(void) void saveConfig(void) { - //uint8_t *data_a = (uint8_t *)configCustomGcodes; + writeConfig((uint8_t *)configCustomGcodes, sizeof(CUSTOM_GCODES), CUSTOM_GCODE_ADDR, CUSTOM_GCODE_MAX_SIZE); writeConfig((uint8_t *)configPrintGcodes, sizeof(PRINT_GCODES), PRINT_GCODES_ADDR, PRINT_GCODES_MAX_SIZE); @@ -228,6 +236,7 @@ void writeConfig(uint8_t* dataBytes, uint16_t numBytes, uint32_t addr, uint32_t if (numBytes > maxSize) { PRINTDEBUG("\nwrite error\n"); + showError(CSTAT_STORAGE_LOW); return; } int sectorCount =maxSize/W25QXX_SECTOR_SIZE; @@ -280,7 +289,7 @@ void resetConfig(void) //restore print gcodes strcpy(tempPC.start_gcode,PRINT_START_GCODE); strcpy(tempPC.end_gcode,PRINT_END_GCODE); - strcpy(tempPC.cancel_gcode,CANCEL_PRINT_GCODE); + strcpy(tempPC.cancel_gcode,PRINT_CANCEL_GCODE); // write restored config writeConfig((uint8_t *)&tempCG, sizeof(CUSTOM_GCODES), CUSTOM_GCODE_ADDR, CUSTOM_GCODE_MAX_SIZE); @@ -312,6 +321,9 @@ void showError(CONFIG_STATS stat) GUI_SetBkColor(BLACK); GUI_ClearPrect(&recterrortxt); GUI_DrawPrect(&recterror); + + char tempstr[50]; + switch (stat) { case CSTAT_INVALID_VALUE: @@ -327,10 +339,15 @@ void showError(CONFIG_STATS stat) case CSTAT_FILE_NOTOPEN: GUI_SetColor(RED); ttl = "Error:"; - char tempstr[50]; my_sprintf(tempstr, "Unable to open %s", CONFIG_FILE_PATH); txt = tempstr; break; + case CSTAT_STORAGE_LOW: + GUI_SetColor(RED); + ttl = "Write Error:"; + my_sprintf(tempstr, "Config size is larger than allocated size", CONFIG_FILE_PATH); + txt = tempstr; + break; case CSTAT_FILE_INVALID: default: GUI_SetColor(RED); @@ -351,48 +368,69 @@ void parseConfigKey(u16 index) switch (index) { + case C_INDEX_UNIFIEDMENU: + infoSettings.unified_menu = getOnOff(); + break; + case C_INDEX_UART_BAUDRATE: - if (inLimit(config_value(),0,ITEM_BAUDRATE_NUM)) + if (inLimit(config_value(),0,ITEM_BAUDRATE_NUM-1)) infoSettings.baudrate = item_baudrate[config_value()]; break; case C_INDEX_LANGUAGE: - if (inLimit(config_value(), 0, LANGUAGE_NUM)) + if (inLimit(config_value(), 0, LANGUAGE_NUM-1)) infoSettings.language = config_value(); break; case C_INDEX_TITLE_BG: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.title_bg_color = config_value(); break; - case C_INDEX_BG_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + case C_INDEX_MENU_BG_COLOR: + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.bg_color = config_value(); break; - case C_INDEX_FONT_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + case C_INDEX_MENU_FONT_COLOR: + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.font_color = config_value(); break; case C_INDEX_NOTIFY_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.reminder_color = config_value(); break; case C_INDEX_SD_NOTIFY_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.sd_reminder_color = config_value(); break; + case C_INDEX_SS_XYZ_BG_COLOR: + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) + infoSettings.status_xyz_bg_color = config_value(); + break; + + case C_INDEX_LIST_BORDER_COLOR: + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) + infoSettings.list_border_color = config_value(); + break; + + case C_INDEX_LIST_BUTTON_BG_COLOR: + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) + infoSettings.list_button_color = config_value(); + break; + case C_INDEX_MODE: - if (inLimit(config_value(), 0, MODE_COUNT)) + if (inLimit(config_value(), 0, MODE_COUNT-1)) infoSettings.mode = config_value(); break; case C_INDEX_ROTATE_UI: - infoSettings.rotate_ui = getOnOff(); + if (infoSettings.rotate_ui != getOnOff()) + scheduleRotate = true; + infoSettings.rotate_ui = getOnOff(); break; case C_INDEX_TERMINAL_ACK: @@ -420,12 +458,12 @@ void parseConfigKey(u16 index) //---------------------------------------------------------Marlin Mode Settings (Only for TFT35_V3.0/TFT24_V1.1/TFT28V3.0) #ifdef ST7920_SPI case C_INDEX_MARLIN_BG_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.marlin_mode_bg_color = config_value(); break; case C_INDEX_MARLIN_FONT_COLOR: - if (inLimit(config_value(), 0, LCD_COLOR_COUNT)) + if (inLimit(config_value(), 0, LCD_COLOR_COUNT-1)) infoSettings.marlin_mode_font_color = config_value(); break; @@ -437,8 +475,9 @@ void parseConfigKey(u16 index) { char * pchr; pchr = strrchr(cur_line,':') + 1; - int len = strlen(pchr); - if ( inLimit(len,3,MAX_STRING_LENGTH)) + int utf8len = getUTF8Length((u8*)pchr); + int bytelen = strlen(pchr) + 1; + if (inLimit(utf8len,NAME_MIN_LENGTH,MAX_STRING_LENGTH) && inLimit(bytelen,NAME_MIN_LENGTH,MAX_GCODE_LENGTH)) strcpy(configStringsStore->marlin_title, pchr); } break; @@ -684,12 +723,12 @@ void parseConfigKey(u16 index) case C_INDEX_PREHEAT_NAME_1: case C_INDEX_PREHEAT_NAME_2: case C_INDEX_PREHEAT_NAME_3: - case C_INDEX_PREHEAT_NAME_4: { char pchr[LINE_MAX_CHAR]; strcpy(pchr, strrchr(cur_line, ':') + 1); - int len = strlen(pchr) + 1; - if (inLimit(len, NAME_MIN_LENGTH, MAX_LABEL_LENGTH)) + int utf8len = getUTF8Length((u8*)pchr); + int bytelen = strlen(pchr) + 1; + if (inLimit(utf8len,NAME_MIN_LENGTH,MAX_STRING_LENGTH) && inLimit(bytelen,NAME_MIN_LENGTH,MAX_GCODE_LENGTH)) strcpy(configStringsStore->preheat_name[index - C_INDEX_PREHEAT_NAME_1], pchr); } @@ -698,7 +737,6 @@ void parseConfigKey(u16 index) case C_INDEX_PREHEAT_TEMP_1: case C_INDEX_PREHEAT_TEMP_2: case C_INDEX_PREHEAT_TEMP_3: - case C_INDEX_PREHEAT_TEMP_4: { int val_index = index - C_INDEX_PREHEAT_TEMP_1; if (key_seen("B:")) @@ -789,24 +827,24 @@ void parseConfigKey(u16 index) break; #endif -#ifdef LED_color_PIN +#ifdef LED_COLOR_PIN case C_INDEX_KNOB_COLOR: - if (inLimit(config_value(), 0, LED_color_NUM)) + if (inLimit(config_value(), 0, LED_color_NUM-1)) infoSettings.knob_led_color = config_value(); break; #endif -#ifdef LCD_LED_PIN +#ifdef LCD_LED_PWM_CHANNEL case C_INDEX_BRIGHTNESS: - if (inLimit(config_value(), 0, 100)) + if (inLimit(config_value(), 0, ITEM_BRIGHTNESS_NUM-1)) infoSettings.lcd_brightness = config_value(); break; case C_INDEX_BRIGHTNESS_IDLE: - if (inLimit(config_value(), 0, 100)) + if (inLimit(config_value(), 0, ITEM_BRIGHTNESS_NUM-1)) infoSettings.lcd_idle_brightness = config_value(); break; case C_INDEX_BRIGHTNESS_IDLE_DELAY: - if (inLimit(config_value(), 0, 100)) + if (inLimit(config_value(), 0, ITEM_SECONDS_NUM-1)) infoSettings.lcd_idle_timer = config_value(); break; #endif @@ -829,13 +867,17 @@ void parseConfigKey(u16 index) { char pchr[LINE_MAX_CHAR]; strcpy(pchr,strrchr(cur_line,':') + 1); - int len = strlen(pchr)+1; - if (inLimit(len,NAME_MIN_LENGTH,MAX_STRING_LENGTH)) + int utf8len = getUTF8Length((u8*)pchr); + int bytelen = strlen(pchr) + 1; + if (inLimit(utf8len,NAME_MIN_LENGTH,MAX_GCODE_NAME_LENGTH) && inLimit(bytelen,NAME_MIN_LENGTH,MAX_GCODE_LENGTH)) { - strcpy(configCustomGcodes->name[customcode_index], pchr); - customcode_index++; + strcpy(configCustomGcodes->name[customcode_index++], pchr); + customcode_good[index - C_INDEX_CUSTOM_LABEL_1] = 1; //set name was found ok + } + else + { + customcode_good[index - C_INDEX_CUSTOM_LABEL_1] = 0;//set name was not ok } - break; } case C_INDEX_CUSTOM_GCODE_1: @@ -854,14 +896,18 @@ void parseConfigKey(u16 index) case C_INDEX_CUSTOM_GCODE_14: case C_INDEX_CUSTOM_GCODE_15: { + int fileindex = index - C_INDEX_CUSTOM_GCODE_1; //actual gcode index in config file char pchr[LINE_MAX_CHAR]; strcpy(pchr,strrchr(cur_line,':') + 1); int len = strlen(pchr) + 1; - if (inLimit(len,GCODE_MIN_LENGTH,MAX_GCODE_LENGTH)) - { - strcpy(configCustomGcodes->gcode[customcode_index], pchr); - } - + if (inLimit(len,GCODE_MIN_LENGTH,MAX_GCODE_LENGTH) && (customcode_good[fileindex] == 1)) //check if gcode length is ok and the name was ok + { + strcpy(configCustomGcodes->gcode[customcode_index-1], pchr); + } + else if (customcode_good[fileindex] == 1) //if name was ok but gcode is not ok then reduce count + { + customcode_index--; + } break; } //---------------------------------------------------------Start, End & Cancel G-codes diff --git a/TFT/src/User/API/config.h b/TFT/src/User/API/config.h index aa5a376742..dcbd5f6a6f 100644 --- a/TFT/src/User/API/config.h +++ b/TFT/src/User/API/config.h @@ -9,13 +9,19 @@ #define LINE_MAX_CHAR 100 #define CONFIG_FILE_PATH "0:config.ini" +#define CONFIG_UNIFIEDMENU "unified_menu:" #define CONFIG_UART_BAUDRATE "baudrate:" #define CONFIG_LANGUAGE "language:" + #define CONFIG_TITLE_BG "title_back_color:" -#define CONFIG_BG_COLOR "background_color:" -#define CONFIG_FONT_COLOR "font_color:" +#define CONFIG_MENU_BG_COLOR "background_color:" +#define CONFIG_MENU_FONT_COLOR "font_color:" #define CONFIG_NOTIFY_COLOR "reminder_color:" -#define CONFIG_SD_NOTIFY_COLOR "volume_reminder_color:" +#define CONFIG_SD_NOTIFY_COLOR "volume_status_color:" +#define CONFIG_SS_XYZ_BG_COLOR "status_xyz_bg_color:" +#define CONFIG_LIST_BORDER_COLOR "list_border_color:" +#define CONFIG_LIST_BUTTON_BG_COLOR "list_button_bg_color:" + #define CONFIG_ROTATE_UI "rotate_ui:" #define CONFIG_TERMINAL_ACK "terminal_ack:" #define CONFIG_INVERT_AXIS "invert_axis:" @@ -53,13 +59,11 @@ #define CONFIG_LEVEL_Z_RAISE "level_z_raise:" #define CONFIG_LEVEL_FEEDRATE "level_feedrate:" #define CONFIG_PREHEAT_NAME_1 "preheat_name1:" -#define CONFIG_PREHEAT_TEMP_1 "preheat_temp1:" #define CONFIG_PREHEAT_NAME_2 "preheat_name2:" -#define CONFIG_PREHEAT_TEMP_2 "preheat_temp2:" #define CONFIG_PREHEAT_NAME_3 "preheat_name3:" +#define CONFIG_PREHEAT_TEMP_1 "preheat_temp1:" +#define CONFIG_PREHEAT_TEMP_2 "preheat_temp2:" #define CONFIG_PREHEAT_TEMP_3 "preheat_temp3:" -#define CONFIG_PREHEAT_NAME_4 "preheat_name4:" -#define CONFIG_PREHEAT_TEMP_4 "preheat_temp4:" //-----------------------------Power Supply Settings (if connected to TFT Controller) #define CONFIG_PS_ON "ps_on:" #define CONFIG_PS_LOGIC "ps_on_active_high:" @@ -81,34 +85,34 @@ #define CONFIG_BRIGHTNESS_IDLE_DELAY "lcd_idle_delay:" //-----------------------------Custom G-Code Commands (up to 15 custom G-code) #define CONFIG_CUSTOM_LABEL_1 "custom_label_1:" -#define CONFIG_CUSTOM_GCODE_1 "custom_gcode_1:" #define CONFIG_CUSTOM_LABEL_2 "custom_label_2:" -#define CONFIG_CUSTOM_GCODE_2 "custom_gcode_2:" #define CONFIG_CUSTOM_LABEL_3 "custom_label_3:" -#define CONFIG_CUSTOM_GCODE_3 "custom_gcode_3:" #define CONFIG_CUSTOM_LABEL_4 "custom_label_4:" -#define CONFIG_CUSTOM_GCODE_4 "custom_gcode_4:" #define CONFIG_CUSTOM_LABEL_5 "custom_label_5:" -#define CONFIG_CUSTOM_GCODE_5 "custom_gcode_5:" #define CONFIG_CUSTOM_LABEL_6 "custom_label_6:" -#define CONFIG_CUSTOM_GCODE_6 "custom_gcode_6:" #define CONFIG_CUSTOM_LABEL_7 "custom_label_7:" -#define CONFIG_CUSTOM_GCODE_7 "custom_gcode_7:" #define CONFIG_CUSTOM_LABEL_8 "custom_label_8:" -#define CONFIG_CUSTOM_GCODE_8 "custom_gcode_8:" #define CONFIG_CUSTOM_LABEL_9 "custom_label_9:" -#define CONFIG_CUSTOM_GCODE_9 "custom_gcode_9:" #define CONFIG_CUSTOM_LABEL_10 "custom_label_10:" -#define CONFIG_CUSTOM_GCODE_10 "custom_gcode_10:" #define CONFIG_CUSTOM_LABEL_11 "custom_label_11:" -#define CONFIG_CUSTOM_GCODE_11 "custom_gcode_11:" #define CONFIG_CUSTOM_LABEL_12 "custom_label_12:" -#define CONFIG_CUSTOM_GCODE_12 "custom_gcode_12:" #define CONFIG_CUSTOM_LABEL_13 "custom_label_13:" -#define CONFIG_CUSTOM_GCODE_13 "custom_gcode_13:" #define CONFIG_CUSTOM_LABEL_14 "custom_label_14:" -#define CONFIG_CUSTOM_GCODE_14 "custom_gcode_14:" #define CONFIG_CUSTOM_LABEL_15 "custom_label_15:" +#define CONFIG_CUSTOM_GCODE_1 "custom_gcode_1:" +#define CONFIG_CUSTOM_GCODE_2 "custom_gcode_2:" +#define CONFIG_CUSTOM_GCODE_3 "custom_gcode_3:" +#define CONFIG_CUSTOM_GCODE_4 "custom_gcode_4:" +#define CONFIG_CUSTOM_GCODE_5 "custom_gcode_5:" +#define CONFIG_CUSTOM_GCODE_6 "custom_gcode_6:" +#define CONFIG_CUSTOM_GCODE_7 "custom_gcode_7:" +#define CONFIG_CUSTOM_GCODE_8 "custom_gcode_8:" +#define CONFIG_CUSTOM_GCODE_9 "custom_gcode_9:" +#define CONFIG_CUSTOM_GCODE_10 "custom_gcode_10:" +#define CONFIG_CUSTOM_GCODE_11 "custom_gcode_11:" +#define CONFIG_CUSTOM_GCODE_12 "custom_gcode_12:" +#define CONFIG_CUSTOM_GCODE_13 "custom_gcode_13:" +#define CONFIG_CUSTOM_GCODE_14 "custom_gcode_14:" #define CONFIG_CUSTOM_GCODE_15 "custom_gcode_15:" //-----------------------------Start, End & Cancel G-codes #define CONFIG_START_GCODE_ON "start_gcode_enabled:" @@ -133,7 +137,6 @@ #define GCODE_MIN_LENGTH 3 // gcode length less than this will not pe parsed. #define MIN_SIZE_LIMIT 0 // machine size less than this will not be parsed. #define MIN_POS_LIMIT 0 // position value less than this will not be parsed. -#define MAX_EXT_SPEED_LIMIT 5000 // Extruder speed less than this will not pe parsed. #define MIN_TOOL_TEMP 20 // extruder temp less than this will not pe parsed. #define MIN_BED_TEMP 20 // bed temp less than this will not pe parsed. #define MIN_RUNOUT_DISTANCE 1 // runout distance less than this will not be parsed. diff --git a/TFT/src/User/API/config.inc b/TFT/src/User/API/config.inc index ffcd9a8bd9..1fc638eb22 100644 --- a/TFT/src/User/API/config.inc +++ b/TFT/src/User/API/config.inc @@ -5,13 +5,17 @@ * * Description: https://en.wikipedia.org/wiki/X_Macro */ +X_CONFIG(UNIFIEDMENU) X_CONFIG(UART_BAUDRATE) X_CONFIG(LANGUAGE) X_CONFIG(TITLE_BG) -X_CONFIG(BG_COLOR) -X_CONFIG(FONT_COLOR) +X_CONFIG(MENU_BG_COLOR) +X_CONFIG(MENU_FONT_COLOR) X_CONFIG(NOTIFY_COLOR) X_CONFIG(SD_NOTIFY_COLOR) +X_CONFIG(SS_XYZ_BG_COLOR) +X_CONFIG(LIST_BORDER_COLOR) +X_CONFIG(LIST_BUTTON_BG_COLOR) X_CONFIG(ROTATE_UI) X_CONFIG(TERMINAL_ACK) X_CONFIG(INVERT_AXIS) @@ -51,11 +55,9 @@ X_CONFIG(LEVEL_FEEDRATE) X_CONFIG(PREHEAT_NAME_1) X_CONFIG(PREHEAT_NAME_2) X_CONFIG(PREHEAT_NAME_3) -X_CONFIG(PREHEAT_NAME_4) X_CONFIG(PREHEAT_TEMP_1) X_CONFIG(PREHEAT_TEMP_2) X_CONFIG(PREHEAT_TEMP_3) -X_CONFIG(PREHEAT_TEMP_4) //-----------------------------Power Supply Settings (if connected to TFT Controller) X_CONFIG(PS_ON) X_CONFIG(PS_LOGIC) diff --git a/TFT/src/User/API/flashStore.h b/TFT/src/User/API/flashStore.h index 3ff5ccf7cd..16510c03f4 100644 --- a/TFT/src/User/API/flashStore.h +++ b/TFT/src/User/API/flashStore.h @@ -4,9 +4,9 @@ #include "stdbool.h" #include "variants.h" #include "Settings.h" -#include "includes.h" extern bool wasRestored; +#define PARA_SIZE 512 //bytes bool readStoredPara(void); void storePara(void); diff --git a/TFT/src/User/API/interfaceCmd.c b/TFT/src/User/API/interfaceCmd.c index 93269504b5..230b8a2603 100644 --- a/TFT/src/User/API/interfaceCmd.c +++ b/TFT/src/User/API/interfaceCmd.c @@ -356,7 +356,7 @@ void sendQueueCmd(void) case 105: //M105 heatSetUpdateWaiting(false); - avoid_terminal = infoSettings.terminalACK; + avoid_terminal = !infoSettings.terminalACK; break; diff --git a/TFT/src/User/API/parseACK.c b/TFT/src/User/API/parseACK.c index 501984eecd..830cce9539 100644 --- a/TFT/src/User/API/parseACK.c +++ b/TFT/src/User/API/parseACK.c @@ -185,7 +185,7 @@ void parseACK(void) } } } - avoid_terminal = infoSettings.terminalACK; + avoid_terminal = !infoSettings.terminalACK; updateNextHeatCheckTime(); } else if(ack_seen("X:") && ack_index == 2) diff --git a/TFT/src/User/Configuration.h b/TFT/src/User/Configuration.h index 4d3029ca9f..dccb28115a 100644 --- a/TFT/src/User/Configuration.h +++ b/TFT/src/User/Configuration.h @@ -19,34 +19,34 @@ /** * Default Startup Knob LED Color (TFT35 E3) * - * Options: 1: LED_OFF, 2: LED_WHITE, 3: LED_RED, - * 4: LED_ORANGE, 5: LED_YELLOW, 6: LED_GREEN, - * 7: LED_BLUE, 8: LED_INDIGO, 9: LED_VIOLET + * Options: 0: LED_OFF, 1: LED_WHITE, 2: LED_RED, + * 3: LED_ORANGE, 4: LED_YELLOW, 5: LED_GREEN, + * 6: LED_BLUE, 7: LED_INDIGO, 8: LED_VIOLET * * Default value is: 1 for LED_OFF */ -#define STARTUP_KNOB_LED_COLOR 1 // LED_OFF +#define STARTUP_KNOB_LED_COLOR 0 // LED_OFF #define KEEP_KNOB_LED_COLOR_MARLIN_MODE // Keeps the LED state in Marlin Mode /** * Default LCD Brightness and LCD IDLE Brightness * - * Brightness: 1: LCD_5_PERCENT, 2: LCD_10_PERCENT, 3: LCD_20_PERCENT, - * 4: LCD_30_PERCENT, 5: LCD_40_PERCENT, 6: LCD_50_PERCENT, - * 7: LCD_60_PERCENT, 8: LCD_70_PERCENT, 9: LCD_80_PERCENT, - * 10: LCD_90_PERCENT, 11: LCD_100_PERCENT + * Brightness: 0: LCD_5_PERCENT, 1: LCD_10_PERCENT, 2: LCD_20_PERCENT, + * 3: LCD_30_PERCENT, 4: LCD_40_PERCENT, 5: LCD_50_PERCENT, + * 6: LCD_60_PERCENT, 7: LCD_70_PERCENT, 8: LCD_80_PERCENT, + * 9: LCD_90_PERCENT, 10: LCD_100_PERCENT * * Settings for the idle dim timer. The LCD screen will dim to idle brightness, * if the display is not touched for the period of the lcd idle timer. * - * Idle Timer: 1: LCD_DIM_OFF, 2: LCD_DIM_5_SECONDS. 3: LCD_DIM_10_SECONDS, - * 4: LCD_DIM_30_SECONDS, 5: LCD_DIM_60_SECONDS, 6: LCD_DIM_120_SECONDS, - * 7: LCD_DIM_300_SECONDS, 8: LCD_DIM_CUSTOM_SECONDS + * Idle Timer: 0: LCD_DIM_OFF, 1: LCD_DIM_5_SECONDS. 2: LCD_DIM_10_SECONDS, + * 3: LCD_DIM_30_SECONDS, 4: LCD_DIM_60_SECONDS, 5: LCD_DIM_120_SECONDS, + * 6: LCD_DIM_300_SECONDS, 7: LCD_DIM_CUSTOM_SECONDS * */ -#define DEFAULT_LCD_BRIGHTNESS 11 // 11: LCD_100_PERCENT - Brightness value from list +#define DEFAULT_LCD_BRIGHTNESS 10 // 10: LCD_100_PERCENT - Brightness value from list #define DEFAULT_LCD_IDLE_BRIGHTNESS 2 // 2: LCD_10_PERCENT - Brightness value from list -#define DEFAULT_LCD_IDLE_TIMER 1 // 1: LCD_DIM_OFF +#define DEFAULT_LCD_IDLE_TIMER 0 // 0: LCD_DIM_OFF #define LCD_DIM_CUSTOM_SECONDS 600 // Custom value in seconds. Will be used if // LCD_DIM_CUSTOM_SECONDS is set as idle timer. @@ -146,6 +146,9 @@ #define FONT_COLOR 0 // Font foreground color #define REMINDER_FONT_COLOR 2 // Reminder font color, such as: "No print attached", "Busy processing", etc. #define VOLUME_REMINDER_FONT_COLOR 5 // Volume reminder font color, such as: "Card inserted", "Card removed" +#define STATUS_XYZ_BG_COLOR 15 // Backgroud color for X Y Z positon display in Status Screen. +#define LISTVIEW_BORDER_COLOR 15 //Border color in List view +#define LISTVIEW_ICON_COLOR 15 //icon color in List view #define TOOL_NUM 1 // set in 1~6 #define EXTRUDER_NUM 1 // set in 1~6 @@ -213,14 +216,7 @@ * Manual Leveling * Move to four corner points to Leveling manually (Point 1, Point 2, Point 3, Point 4) */ -#define LEVELING_POINT_1_X (X_MIN_POS + 20) -#define LEVELING_POINT_1_Y (Y_MIN_POS + 20) -#define LEVELING_POINT_2_X (X_MAX_POS - 20) -#define LEVELING_POINT_2_Y (Y_MIN_POS + 20) -#define LEVELING_POINT_3_X (X_MAX_POS - 20) -#define LEVELING_POINT_3_Y (Y_MAX_POS - 20) -#define LEVELING_POINT_4_X (X_MIN_POS + 20) -#define LEVELING_POINT_4_Y (Y_MAX_POS - 20) +#define LEVELING_EDGE_DISTANCE 20 // Inset distance from bed's edge for calulating leveling point location. #define LEVELING_POINT_Z 0.2f // Z-axis position when nozzle stays for leveling #define LEVELING_POINT_MOVE_Z 10.0f // Z-axis position when nozzle move to next point #define LEVELING_POINT_XY_FEEDRATE 6000 // (mm/min) X and Y axes move feedrate @@ -243,7 +239,7 @@ // Enable Unified Move Menu // Move, Home, Extrude, ABL at one Place and bring G-code Menu on Home Menu -#define UNIFIED_MENU +#define UNIFIED_MENU true //for unified menu: true | for classic menu: false /** * SD support diff --git a/TFT/src/User/Hal/LCD_Init.c b/TFT/src/User/Hal/LCD_Init.c index 6421cd2098..b8c41ee587 100644 --- a/TFT/src/User/Hal/LCD_Init.c +++ b/TFT/src/User/Hal/LCD_Init.c @@ -36,20 +36,7 @@ const uint32_t LCD_BRIGHTNESS[ITEM_BRIGHTNESS_NUM] = { LCD_90_PERCENT, LCD_100_PERCENT }; -const LABEL itemBrightness[ITEM_BRIGHTNESS_NUM] = { - //item value text(only for custom value) - LABEL_5_PERCENT, - LABEL_10_PERCENT, - LABEL_20_PERCENT, - LABEL_30_PERCENT, - LABEL_40_PERCENT, - LABEL_50_PERCENT, - LABEL_60_PERCENT, - LABEL_70_PERCENT, - LABEL_80_PERCENT, - LABEL_90_PERCENT, - LABEL_100_PERCENT -}; + const LABEL itemDimTime[ITEM_SECONDS_NUM] = { //item value text(only for custom value) LABEL_OFF, @@ -61,6 +48,7 @@ const LABEL itemDimTime[ITEM_SECONDS_NUM] = { LABEL_300_SECONDS, LABEL_CUSTOM_SECONDS }; + const uint32_t LCD_DIM_IDLE_TIME[ITEM_SECONDS_NUM] = { LCD_DIM_OFF, LCD_DIM_5_SECONDS, diff --git a/TFT/src/User/Menu/Heat.c b/TFT/src/User/Menu/Heat.c index f106c1591c..3994fa2ac8 100644 --- a/TFT/src/User/Menu/Heat.c +++ b/TFT/src/User/Menu/Heat.c @@ -88,7 +88,7 @@ bool heatGetIsWaiting(TOOL tool) bool heatHasWaiting(void) { TOOL i; - for(i = BED; i < infoSettings.ext_count; i++) + for(i = BED; i < infoSettings.tool_count; i++) { if(heater.T[i].waiting != WAIT_NONE) return true; @@ -112,7 +112,7 @@ void heatSetIsWaiting(TOOL tool, HEATER_WAIT isWaiting) void heatClearIsWaiting(void) { - for(TOOL i = BED; i < infoSettings.ext_count; i++) + for(TOOL i = BED; i < infoSettings.tool_count; i++) { heater.T[i].waiting = WAIT_NONE; } @@ -122,7 +122,7 @@ void heatClearIsWaiting(void) /* Set current heater tool, nozzle or hot bed */ void heatSetCurrentTool(TOOL tool) { - if(tool >= infoSettings.ext_count) return; + if(tool >= infoSettings.tool_count) return; heater.tool = tool; } /* Get current tool, nozzle or hot bed */ @@ -134,7 +134,7 @@ TOOL heatGetCurrentTool(void) /* Set current nozzle */ void heatSetCurrentToolNozzle(TOOL tool) { - if(tool >= infoSettings.ext_count && tool < NOZZLE0) return; + if(tool >= infoSettings.tool_count && tool < NOZZLE0) return; heater.nozzle = tool; heater.tool = tool; } @@ -229,7 +229,7 @@ void menuHeat(void) break; case KEY_ICON_4: - lastHeater.tool = heater.tool = (TOOL)((heater.tool+1) % (infoSettings.ext_count + 1)); + lastHeater.tool = heater.tool = (TOOL)((heater.tool+1) % (infoSettings.tool_count + 1)); heatItems.items[key_num] = itemTool[heater.tool]; menuDrawItem(&heatItems.items[key_num], key_num); showTemperature(); @@ -315,7 +315,7 @@ void loopCheckHeater(void) }while(0); /* Query the heater that needs to wait for the temperature to rise, whether it reaches the set temperature */ - for(u8 i=0; icount; gc_page_count = (gcode_num+LISTITEM_PER_PAGE-1)/LISTITEM_PER_PAGE; @@ -196,7 +195,7 @@ void menuMachineSettings(void) // icon label {{ICON_CUSTOM, LABEL_CUSTOM}, {ICON_RGB_SETTINGS, LABEL_RGB_SETTINGS}, - {ICON_GCODE, LABEL_GCODE}, + {ICON_GCODE, LABEL_TERMINAL}, {ICON_SHUT_DOWN, LABEL_SHUT_DOWN}, {ICON_PARAMETER, LABEL_PARAMETER_SETTING}, {ICON_BACKGROUND, LABEL_BACKGROUND}, diff --git a/TFT/src/User/Menu/MachineSettings.h b/TFT/src/User/Menu/MachineSettings.h index 5f90338f76..cd30e3a2c5 100644 --- a/TFT/src/User/Menu/MachineSettings.h +++ b/TFT/src/User/Menu/MachineSettings.h @@ -1,5 +1,6 @@ #ifndef _MACHINE_SETTINGS_H_ #define _MACHINE_SETTINGS_H_ +#include "includes.h" void menuRGBSettings(void); void menuMachineSettings(void); diff --git a/TFT/src/User/Menu/MainPage.c b/TFT/src/User/Menu/MainPage.c index a674c2be24..96a299d4e9 100644 --- a/TFT/src/User/Menu/MainPage.c +++ b/TFT/src/User/Menu/MainPage.c @@ -1,86 +1,103 @@ #include "MainPage.h" #include "includes.h" -MENUITEMS mainPageItems = { + + +void unifiedMenu(void){ + //1 title, ITEM_PER_PAGE items(icon+label) +MENUITEMS unifiedPageItems = { // title - LABEL_READY, - // icon label - #ifdef UNIFIED_MENU //if Unified menu is selected - {{ICON_HEAT_FAN, LABEL_UNIFIEDHEAT}, - {ICON_HOME_MOVE, LABEL_UNIFIEDMOVE}, - {ICON_EXTRUDE, LABEL_EXTRUDE}, - {ICON_STOP, LABEL_EMERGENCYSTOP}, - {ICON_GCODE, LABEL_GCODE}, - {ICON_CUSTOM, LABEL_CUSTOM}, - {ICON_SETTINGS, LABEL_SETTINGS}, - {ICON_BACK, LABEL_BACK}} - #else - {{ICON_HEAT, LABEL_PREHEAT}, - {ICON_MOVE, LABEL_MOVE}, - {ICON_HOME, LABEL_HOME}, - {ICON_PRINT, LABEL_PRINT}, - {ICON_EXTRUDE, LABEL_EXTRUDE}, - {ICON_FAN, LABEL_FAN}, - {ICON_SETTINGS, LABEL_SETTINGS}, - {ICON_LEVELING, LABEL_LEVELING}} - #endif + LABEL_MAINMENU, + // icon label + {{ICON_HEAT_FAN, LABEL_UNIFIEDHEAT}, + {ICON_HOME_MOVE, LABEL_UNIFIEDMOVE}, + {ICON_EXTRUDE, LABEL_EXTRUDE}, + {ICON_STOP, LABEL_EMERGENCYSTOP}, + {ICON_GCODE, LABEL_TERMINAL}, + {ICON_CUSTOM, LABEL_CUSTOM}, + {ICON_SETTINGS, LABEL_SETTINGS}, + {ICON_BACK, LABEL_BACK}} }; -void menuMain(void) + KEY_VALUES key_num = KEY_IDLE; + GUI_SetBkColor(infoSettings.bg_color); + + menuDrawPage(&unifiedPageItems); + + while(infoMenu.menu[infoMenu.cur] == unifiedMenu) + { + key_num = menuKeyGetValue(); + switch(key_num) + { + case KEY_ICON_0: infoMenu.menu[++infoMenu.cur] = menuUnifiedHeat; break; + case KEY_ICON_1: infoMenu.menu[++infoMenu.cur] = menuUnifiedMove; break; + case KEY_ICON_2: infoMenu.menu[++infoMenu.cur] = menuExtrude; break; + case KEY_ICON_3: storeCmd("M112\n"); break; // Emergency Stop : Used for emergency stopping, a reset is required to return to operational mode. + // it may need to wait for a space to open up in the command queue. + // Enable EMERGENCY_PARSER in Marlin Firmware for an instantaneous M112 command. + case KEY_ICON_4: infoMenu.menu[++infoMenu.cur] = menuSendGcode; break; + case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuCustom; break; + case KEY_ICON_6: infoMenu.menu[++infoMenu.cur] = menuSettings; break; + case KEY_ICON_7: infoMenu.cur--; break; + default:break; + } + loopProcess(); + } +} + +void classicMenu(void) { //1 title, ITEM_PER_PAGE items(icon+label) + MENUITEMS classicPageItems = { + // title + LABEL_READY, + // icon label + {{ICON_HEAT, LABEL_PREHEAT}, + {ICON_MOVE, LABEL_MOVE}, + {ICON_HOME, LABEL_HOME}, + {ICON_PRINT, LABEL_PRINT}, + {ICON_EXTRUDE, LABEL_EXTRUDE}, + {ICON_FAN, LABEL_FAN}, + {ICON_SETTINGS, LABEL_SETTINGS}, + {ICON_LEVELING, LABEL_LEVELING}} + }; - - #ifndef UNIFIED_MENU - if(infoMachineSettings.autoLevel == 1){ - mainPageItems.items[7].icon = ICON_LEVELING; - mainPageItems.items[7].label.index = LABEL_ABL; + if (infoMachineSettings.autoLevel == 1) + { + classicPageItems.items[7].icon = ICON_LEVELING; + classicPageItems.items[7].label.index = LABEL_ABL; } - else{ - mainPageItems.items[7].icon = ICON_MANUAL_LEVEL; - mainPageItems.items[7].label.index = LABEL_LEVELING; + else + { + classicPageItems.items[7].icon = ICON_MANUAL_LEVEL; + classicPageItems.items[7].label.index = LABEL_LEVELING; } - #endif - KEY_VALUES key_num=KEY_IDLE; GUI_SetBkColor(infoSettings.bg_color); - menuDrawPage(&mainPageItems); - while(infoMenu.menu[infoMenu.cur] == menuMain) + menuDrawPage(&classicPageItems); + + while(infoMenu.menu[infoMenu.cur] == classicMenu) { key_num = menuKeyGetValue(); switch(key_num) { - #ifdef UNIFIED_MENU //if Unified menu is selected - case KEY_ICON_0: infoMenu.menu[++infoMenu.cur] = menuUnifiedHeat; break; - case KEY_ICON_1: infoMenu.menu[++infoMenu.cur] = menuUnifiedMove; break; - case KEY_ICON_2: infoMenu.menu[++infoMenu.cur] = menuExtrude; break; - case KEY_ICON_3: storeCmd("M112\n"); break; // Emergency Stop : Used for emergency stopping, a reset is required to return to operational mode. - // it may need to wait for a space to open up in the command queue. - // Enable EMERGENCY_PARSER in Marlin Firmware for an instantaneous M112 command. - case KEY_ICON_4: infoMenu.menu[++infoMenu.cur] = menuSendGcode; break; - case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuCustom; break; - case KEY_ICON_6: infoMenu.menu[++infoMenu.cur] = menuSettings; break; - case KEY_ICON_7: infoMenu.cur--; break; - default:break; - #else - case KEY_ICON_0: infoMenu.menu[++infoMenu.cur] = menuPreheat; break; - case KEY_ICON_1: infoMenu.menu[++infoMenu.cur] = menuMove; break; - case KEY_ICON_2: infoMenu.menu[++infoMenu.cur] = menuHome; break; - case KEY_ICON_3: infoMenu.menu[++infoMenu.cur] = menuPrint; break; - case KEY_ICON_4: infoMenu.menu[++infoMenu.cur] = menuExtrude; break; - case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuFan; break; - case KEY_ICON_6: infoMenu.menu[++infoMenu.cur] = menuSettings; break; - case KEY_ICON_7: - if(infoMachineSettings.autoLevel == 1){ - infoMenu.menu[++infoMenu.cur] = menuAutoLeveling; - } - else{ - infoMenu.menu[++infoMenu.cur] = menuManualLeveling; - } - break; - default:break; - #endif + case KEY_ICON_0: infoMenu.menu[++infoMenu.cur] = menuPreheat; break; + case KEY_ICON_1: infoMenu.menu[++infoMenu.cur] = menuMove; break; + case KEY_ICON_2: infoMenu.menu[++infoMenu.cur] = menuHome; break; + case KEY_ICON_3: infoMenu.menu[++infoMenu.cur] = menuPrint; break; + case KEY_ICON_4: infoMenu.menu[++infoMenu.cur] = menuExtrude; break; + case KEY_ICON_5: infoMenu.menu[++infoMenu.cur] = menuFan; break; + case KEY_ICON_6: infoMenu.menu[++infoMenu.cur] = menuSettings; break; + case KEY_ICON_7: + if(infoMachineSettings.autoLevel == 1){ + infoMenu.menu[++infoMenu.cur] = menuAutoLeveling; + } + else{ + infoMenu.menu[++infoMenu.cur] = menuManualLeveling; + } + break; + default:break; } loopProcess(); } diff --git a/TFT/src/User/Menu/MainPage.h b/TFT/src/User/Menu/MainPage.h index ee59625014..a7aa82c92e 100644 --- a/TFT/src/User/Menu/MainPage.h +++ b/TFT/src/User/Menu/MainPage.h @@ -1,6 +1,7 @@ #ifndef _MAINPAGE_H_ #define _MAINPAGE_H_ -void menuMain(void); +void unifiedMenu(void); +void classicMenu(void); #endif diff --git a/TFT/src/User/Menu/Mode.c b/TFT/src/User/Menu/Mode.c index 3987d67eeb..47f49b22e5 100644 --- a/TFT/src/User/Menu/Mode.c +++ b/TFT/src/User/Menu/Mode.c @@ -41,11 +41,11 @@ void infoMenuSelect(void) GUI_SetColor(lcd_colors[infoSettings.font_color]); GUI_SetBkColor(lcd_colors[infoSettings.bg_color]); - #ifdef UNIFIED_MENU //if Unified menu is selected + if(infoSettings.unified_menu == 1) //if Unified menu is selected infoMenu.menu[infoMenu.cur] = menuStatus; //status screen as default screen on boot - #else // classic UI - infoMenu.menu[infoMenu.cur] = menuMain; - #endif + else + infoMenu.menu[infoMenu.cur] = classicMenu; // classic UI + #ifdef SHOW_BTT_BOOTSCREEN if (freshboot) { diff --git a/TFT/src/User/Menu/Parametersetting.c b/TFT/src/User/Menu/Parametersetting.c index cc72ac1e02..cee7b02bfb 100644 --- a/TFT/src/User/Menu/Parametersetting.c +++ b/TFT/src/User/Menu/Parametersetting.c @@ -1,35 +1,6 @@ #include "Parametersetting.h" #include "includes.h" -const GUI_RECT rect_of_numkey[KEY_NUM]={ - {0*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//1 - {1*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//2 - {2*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//3 - {3*SKEYWIDTH, ICON_START_Y+0*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT},//OK - - {0*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//4 - {1*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//5 - {2*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//6 - {3*SKEYWIDTH, ICON_START_Y+1*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT},//Del - - {0*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//7 - {1*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//8 - {2*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},//9 - {3*SKEYWIDTH, ICON_START_Y+2*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT},// - - {0*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 1*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//. - {1*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 2*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//0 - {2*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 3*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},//- - {3*SKEYWIDTH, ICON_START_Y+3*SKEYHEIGHT, 4*SKEYWIDTH, ICON_START_Y+4*SKEYHEIGHT},// -}; - -const char *const Key_Num[KEY_NUM] = { - "1","2","3","\u0894", - "4","5","6","\u0899", - "7","8","9","\u0895", - ".","0","-","" -}; - const char *const parameter_Cmd[PARAMETERS_COUNT][STEPPER_COUNT] = { {"M92 X%.2f\n", "M92 Y%.2f\n", "M92 Z%.2f\n", "M92 T0 E%.2f\n", "M92 T1 E%.2f\n"}, //Steps/mm {"M906 X%.0f\n", "M906 Y%.0f\n", "M906 Z%.0f\n", "M906 T0 E%.0f\n", "M906 I1 E%.0f\n"}, //Current @@ -140,12 +111,6 @@ void setParameter(PARAMETER_NAME name, int index, float val){ } } -//get keypress for NumPad -NUM_KEY_VALUES NumKeyGetValue(void) -{ - return (NUM_KEY_VALUES)KEY_GetValue(sizeof(rect_of_numkey)/sizeof(rect_of_numkey[0]), rect_of_numkey); -} - //show menu for selected parameter type void menuShowParameter(void){ KEY_VALUES key_num = KEY_IDLE; @@ -154,11 +119,11 @@ void menuShowParameter(void){ // title parameter_names[cur_parameter], // icon ItemType Item Title item value text(only for custom value) - {{ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_DYNAMIC}, - {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_DYNAMIC}, - {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_DYNAMIC}, - {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_DYNAMIC}, - {ICONCHAR_BACKGROUND, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_DYNAMIC}, + {{ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_CUSTOM_VALUE}, + {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_CUSTOM_VALUE}, + {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_CUSTOM_VALUE}, + {ICONCHAR_EDIT, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_CUSTOM_VALUE}, + {ICONCHAR_BACKGROUND, LIST_CUSTOMVALUE, LABEL_DYNAMIC, LABEL_CUSTOM_VALUE}, {ICONCHAR_BACKGROUND, LIST_LABEL, LABEL_BACKGROUND, LABEL_BACKGROUND}, {ICONCHAR_BACKGROUND, LIST_LABEL, LABEL_BACKGROUND, LABEL_BACKGROUND}, {ICONCHAR_BACK, LIST_LABEL, LABEL_BACKGROUND, LABEL_BACKGROUND},} @@ -210,7 +175,7 @@ void menuShowParameter(void){ //accept negative values only for probe offset bool negative_val = false; if(cur_parameter == P_PROBE_OFFSET || cur_parameter == P_BUMPSENSITIVITY) negative_val = true; - float v = num_pad(getParameter(cur_parameter,key_num),negative_val); + float v = numPadFloat(getParameter(cur_parameter,key_num),negative_val); if (v != getParameter(cur_parameter,key_num)) { storeCmd(parameter_Cmd[cur_parameter][key_num],v); @@ -340,147 +305,6 @@ void menuParameterSettings(void){ } -void Draw_keyboard(void) -{ - TSC_ReDrawIcon = NULL; - GUI_SetBkColor(BLACK); - GUI_ClearRect(0, 0, LCD_WIDTH, rect_of_numkey[0].y0); - GUI_SetBkColor(WHITE); - GUI_ClearRect(0, rect_of_numkey[0].y0, LCD_WIDTH, LCD_HEIGHT); - GUI_SetColor(BLACK); - - for (int i = 0;i<3;i++){ - GUI_DrawLine(rect_of_numkey[i].x1,rect_of_numkey[i].y0,rect_of_numkey[12+i].x1,rect_of_numkey[12+i].y1); - GUI_DrawLine(rect_of_numkey[i*4].x0,rect_of_numkey[i*4].y1,rect_of_numkey[3+i*4].x1,rect_of_numkey[3+i*4].y1); - } - - for(uint8_t i=0 ;i"); - char tempstr[BUFLONG]; - my_sprintf(tempstr, "%.2f", old_val); - GUI_SetColor(WHITE); - GUI_DispStringInPrect(&oldParameterRect,(u8*)tempstr); - touchSound = false; - while (1) - { - key_num = NumKeyGetValue(); - switch (key_num) - { - case NUM_KEY_EXIT: - BUZZER_PLAY(sound_cancel); - touchSound = true; - return old_val; - - case NUM_KEY_DEL: - BUZZER_PLAY(sound_keypress); - if(nowIndex) - ParameterBuf[--nowIndex] = 0; - break; - - case NUM_KEY_1: - case NUM_KEY_2: - case NUM_KEY_3: - case NUM_KEY_4: - case NUM_KEY_5: - case NUM_KEY_6: - case NUM_KEY_7: - case NUM_KEY_8: - case NUM_KEY_9: - case NUM_KEY_0: - BUZZER_PLAY(sound_keypress); - if(nowIndex < BUFLONG-1) - { - ParameterBuf[nowIndex++] = Key_Num[key_num][0]; - ParameterBuf[nowIndex] = 0; - } - break; - case NUM_KEY_DEC: - BUZZER_PLAY(sound_keypress); - if(!strchr((const char *)ParameterBuf, Key_Num[key_num][0])){ - if(nowIndex < BUFLONG-1) - { - ParameterBuf[nowIndex++] = Key_Num[key_num][0]; - ParameterBuf[nowIndex] = 0; - } - } - break; - case NUM_KEY_MINUS: - BUZZER_PLAY(sound_keypress); - if(!strchr((const char *)ParameterBuf, Key_Num[key_num][0]) && negative_val){ - if(nowIndex == 0) - { - ParameterBuf[nowIndex++] = Key_Num[key_num][0]; - ParameterBuf[nowIndex] = 0; - } - } - break; - - case NUM_KEY_OK: - /* if(nowIndex) - { - ParameterBuf[nowIndex++] = '\n'; - ParameterBuf[nowIndex] = 0; - - cmd_long = strlen(para_cmd); - cmd_buff = malloc(cmd_long + strlen(ParameterBuf)); - if(cmd_buff) - { - strcpy(cmd_buff, para_cmd); - storeCmd(strcat(cmd_buff, ParameterBuf)); - free(cmd_buff); - } - - ParameterBuf[nowIndex = 0] = 0; - - } */ - - //Send_Settingcmd(); - BUZZER_PLAY(sound_ok); - touchSound = true; - return strtof(ParameterBuf,NULL); - - default: - break; - } - - if(lastIndex != nowIndex) - { - lastIndex = nowIndex; - GUI_SetBkColor(BLACK); - GUI_SetColor(WHITE); - GUI_ClearPrect(&newParameterRect); - GUI_DispStringInPrect(&newParameterRect, (u8 *)ParameterBuf); - GUI_RestoreColorDefault(); - } - loopBackEnd(); - } - -} - void temp_Change(void) { diff --git a/TFT/src/User/Menu/Parametersetting.h b/TFT/src/User/Menu/Parametersetting.h index a9e40e3cff..7e8ae5a5ea 100644 --- a/TFT/src/User/Menu/Parametersetting.h +++ b/TFT/src/User/Menu/Parametersetting.h @@ -3,8 +3,6 @@ #include "menu.h" #include "coordinate.h" -#define SKEYHEIGHT (LCD_HEIGHT-ICON_START_Y)/4 -#define SKEYWIDTH LCD_WIDTH/4 #define ICON_NOZZLE_X 2*ICON_WIDTH+ICON_WIDTH/2 #define VALUE_NOZZLE_X ICON_NOZZLE_X+BYTE_WIDTH @@ -12,47 +10,6 @@ #define ICON_BED_X 3*ICON_WIDTH+2*BYTE_WIDTH+ICON_WIDTH/2 #define VALUE_BED_X ICON_BED_X+BYTE_WIDTH -#define KEY_NUM 16 -#define BUFLONG 6 -typedef enum -{ - SKEY_0 = 0, - SKEY_1, - SKEY_2, - SKEY_3, - SKEY_4, - SKEY_5, - SKEY_6, - SKEY_7, - SKEY_8, - SKEY_9, - SKEY_10, - SKEY_11, - SKEY_IDLE = IDLE_TOUCH, -}SKEY_VALUES; - -typedef enum -{ - NUM_KEY_1 = 0, - NUM_KEY_2, - NUM_KEY_3, - NUM_KEY_OK, - NUM_KEY_4, - NUM_KEY_5, - NUM_KEY_6, - NUM_KEY_DEL, - NUM_KEY_7, - NUM_KEY_8, - NUM_KEY_9, - NUM_KEY_EXIT, - NUM_KEY_DEC, - NUM_KEY_0, - NUM_KEY_MINUS, - NUM_KEY_15, - - NUM_KEY_IDLE = IDLE_TOUCH, -}NUM_KEY_VALUES; - typedef enum { P_STEPS_PER_MM = 0, @@ -95,7 +52,6 @@ float getParameter(PARAMETER_NAME name, int index); void setParameter(PARAMETER_NAME name, int index, float val); void menuParameterSettings(void); -float num_pad(float old_val, bool negative_val); void show_GlobalInfo(void); void temp_Change(void); diff --git a/TFT/src/User/Menu/PreheatMenu.c b/TFT/src/User/Menu/PreheatMenu.c index 36066e3aab..ac489a1612 100644 --- a/TFT/src/User/Menu/PreheatMenu.c +++ b/TFT/src/User/Menu/PreheatMenu.c @@ -41,15 +41,17 @@ void menuPreheat(void) {ICON_BACKGROUND, LABEL_BACKGROUND}, {ICON_BACKGROUND, LABEL_BACKGROUND}, {ICON_PREHEAT_BOTH, LABEL_PREHEAT_BOTH}, - #ifdef UNIFIED_MENU {ICON_BACKGROUND, LABEL_BACKGROUND}, - #else - {ICON_HEAT, LABEL_HEAT}, - #endif {ICON_BACK, LABEL_BACK}, } }; + if(infoSettings.unified_menu !=1) + { + preheatItems.items[6].icon = ICON_HEAT; + preheatItems.items[6].label.index = LABEL_HEAT; + } + preheatnames = (STRINGS_STORE*)malloc(sizeof(STRINGS_STORE)); uint8_t *data_p = (uint8_t *)preheatnames; W25Qxx_ReadBuffer(data_p,STRINGS_STORE_ADDR,sizeof(STRINGS_STORE)); @@ -88,12 +90,13 @@ void menuPreheat(void) menuDrawItem(&preheatItems.items[key_num], key_num);; break; - #ifndef UNIFIED_MENU case KEY_ICON_6: - infoMenu.menu[++infoMenu.cur] = menuHeat; + if(infoSettings.unified_menu != 1) + { + infoMenu.menu[++infoMenu.cur] = menuHeat; + } break; - #endif case KEY_ICON_7: free(preheatnames); infoMenu.cur--; break; diff --git a/TFT/src/User/Menu/ScreenSettings.c b/TFT/src/User/Menu/ScreenSettings.c index 8fd87f37c1..f689b23d8f 100644 --- a/TFT/src/User/Menu/ScreenSettings.c +++ b/TFT/src/User/Menu/ScreenSettings.c @@ -78,9 +78,11 @@ LABEL_SCREEN_SETTINGS, #ifdef ST7920_SPI // LCD12864 background color + screenSettingsItems.items[KEY_ICON_4].icon = ICON_BKCOLOR; screenSettingsItems.items[KEY_ICON_4].label = lcd_color_names[infoSettings.marlin_mode_bg_color]; // LCD12864 font color + screenSettingsItems.items[KEY_ICON_5].icon = ICON_FONTCOLOR; screenSettingsItems.items[KEY_ICON_5].label = lcd_color_names[infoSettings.marlin_mode_font_color]; #endif diff --git a/TFT/src/User/Menu/StatusScreen.c b/TFT/src/User/Menu/StatusScreen.c index 5d77a7f9df..254efba5ac 100644 --- a/TFT/src/User/Menu/StatusScreen.c +++ b/TFT/src/User/Menu/StatusScreen.c @@ -95,23 +95,23 @@ void drawTemperature(void) char tempstr[100]; GUI_SetTextMode(GUI_TEXTMODE_TRANS); GUI_SetColor(HEADING_COLOR); - menuDrawIconOnly(&ToolItems[0],0); //Ext icon - GUI_DispStringRight(pointID[0].x, pointID[0].y, (u8 *)heatDisplayID[current_Ext]); //Ext label + menuDrawIconOnly(&ToolItems[0],0); //Ext icon + GUI_DispStringRight(pointID[0].x, pointID[0].y, (u8 *)heatDisplayID[current_Ext]); //Ext label GUI_SetColor(VAL_COLOR); my_sprintf(tempstr, "%d/%d", heatGetCurrentTemp(current_Ext), heatGetTargetTemp(current_Ext)); - GUI_DispStringInPrect(&rectB[0], (u8 *)tempstr); //Ext value + GUI_DispStringInPrect(&rectB[0], (u8 *)tempstr); //Ext value GUI_SetColor(HEADING_COLOR); menuDrawIconOnly(&ToolItems[1],1); //Bed icon - GUI_DispStringRight(pointID[1].x, pointID[1].y, (u8 *)heatDisplayID[BED]); //Bed label + GUI_DispStringRight(pointID[1].x, pointID[1].y, (u8 *)heatDisplayID[BED]); //Bed label GUI_SetColor(VAL_COLOR); my_sprintf(tempstr, "%d/%d", heatGetCurrentTemp(BED), heatGetTargetTemp(BED)); - GUI_DispStringInPrect(&rectB[1], (u8 *)tempstr); //Bed value + GUI_DispStringInPrect(&rectB[1], (u8 *)tempstr); //Bed value GUI_SetColor(HEADING_COLOR); menuDrawIconOnly(&ToolItems[2],2); //Fan icon - GUI_DispStringRight(pointID[2].x, pointID[2].y, (u8 *)fanID[current_fan]); //Fan label + GUI_DispStringRight(pointID[2].x, pointID[2].y, (u8 *)fanID[current_fan]); //Fan label GUI_SetColor(VAL_COLOR); u8 fs; @@ -126,18 +126,18 @@ void drawTemperature(void) my_sprintf(tempstr, "%d", fs); } - GUI_DispStringInPrect(&rectB[2], (u8 *)tempstr); //Fan value + GUI_DispStringInPrect(&rectB[2], (u8 *)tempstr); //Fan value GUI_SetColor(HEADING_COLOR); - menuDrawIconOnly(&SpeedItems[current_speedID],3); //Speed / flow icon - GUI_DispStringRight(pointID[3].x, pointID[3].y, (u8 *)SpeedID[current_speedID]); //Speed / flow label + menuDrawIconOnly(&SpeedItems[current_speedID],3); //Speed / flow icon + GUI_DispStringRight(pointID[3].x, pointID[3].y, (u8 *)SpeedID[current_speedID]);//Speed / flow label GUI_SetColor(VAL_COLOR); my_sprintf(tempstr, "%d%s", speedGetPercent(current_speedID),"%"); - GUI_DispStringInPrect(&rectB[3], (u8 *)tempstr); //Speed / Flow value + GUI_DispStringInPrect(&rectB[3], (u8 *)tempstr); //Speed / Flow value GUI_SetTextMode(GUI_TEXTMODE_NORMAL); GUI_SetColor(GANTRYLBL_COLOR); - GUI_SetBkColor(GANTRYLBL_BKCOLOR); + GUI_SetBkColor(lcd_colors[infoSettings.status_xyz_bg_color]); my_sprintf(tempstr, " X: %.2f Y: %.2f Z: %.2f ", xaxis, yaxis, zaxis); GUI_DispStringInPrect(&RecGantry,(u8 *)tempstr); @@ -311,12 +311,11 @@ void menuStatus(void) GUI_SetBkColor(lcd_colors[infoSettings.bg_color]); //set_status_icon(); menuDrawPage(&StatusItems); - GUI_SetColor(GANTRYLBL_BKCOLOR); + GUI_SetColor(lcd_colors[infoSettings.status_xyz_bg_color]); //GUI_ClearPrect(&RecGantry); GUI_FillPrect(&RecGantry); drawTemperature(); drawStatusScreenMsg(); - while (infoMenu.menu[infoMenu.cur] == menuStatus) { if(infoHost.connected != lastConnection_status){ @@ -345,7 +344,7 @@ void menuStatus(void) infoMenu.menu[++infoMenu.cur] = menuSpeed; break; case KEY_ICON_4: - infoMenu.menu[++infoMenu.cur] = menuMain; + infoMenu.menu[++infoMenu.cur] = unifiedMenu; break; case KEY_ICON_7: infoMenu.menu[++infoMenu.cur] = menuPrint; diff --git a/TFT/src/User/Menu/leveling.c b/TFT/src/User/Menu/leveling.c index 0e02b50160..0e99aac0f9 100644 --- a/TFT/src/User/Menu/leveling.c +++ b/TFT/src/User/Menu/leveling.c @@ -76,7 +76,6 @@ LABEL_LEVELING, void moveToLevelingPoint(u8 point) { - static const s16 pointPosition[][2] = { s16 pointPosition[4][2] = { {infoSettings.machine_size_min[X_AXIS] + infoSettings.level_edge, infoSettings.machine_size_min[Y_AXIS] + infoSettings.level_edge}, {infoSettings.machine_size_max[X_AXIS] - infoSettings.level_edge, infoSettings.machine_size_min[X_AXIS] + infoSettings.level_edge}, diff --git a/TFT/src/User/Menu/menu.c b/TFT/src/User/Menu/menu.c index 0951ac259d..471f6a21b1 100644 --- a/TFT/src/User/Menu/menu.c +++ b/TFT/src/User/Menu/menu.c @@ -149,8 +149,9 @@ void reminderMessage(int16_t inf, SYS_STATUS status) { reminder.inf = inf; GUI_SetColor(lcd_colors[infoSettings.reminder_color]); + GUI_SetBkColor(lcd_colors[infoSettings.title_bg_color]); GUI_DispStringInPrect(&reminder.rect, textSelect(reminder.inf)); - GUI_SetColor(lcd_colors[infoSettings.font_color]); + GUI_RestoreColorDefault(); reminder.status = status; reminder.time = OS_GetTimeMs() + 2000; // 2 seconds } @@ -159,10 +160,11 @@ void volumeReminderMessage(int16_t inf, SYS_STATUS status) { volumeReminder.inf = inf; GUI_SetColor(lcd_colors[infoSettings.sd_reminder_color]); + GUI_SetBkColor(lcd_colors[infoSettings.title_bg_color]); GUI_DispStringInPrect(&volumeReminder.rect, textSelect(volumeReminder.inf)); - GUI_SetColor(lcd_colors[infoSettings.font_color]); volumeReminder.status = status; volumeReminder.time = OS_GetTimeMs() + 2000; + GUI_RestoreColorDefault(); } void busyIndicator(SYS_STATUS status) @@ -204,9 +206,18 @@ void loopReminderClear(void) /* Clear warning message */ reminder.status = STATUS_IDLE; - if(curMenuItems == NULL) + if (isListview) + { + if (curListItems == NULL) return; - menuDrawTitle(labelGetAddress(&curMenuItems->title)); + menuDrawTitle(labelGetAddress(&curListItems->title)); + } + else + { + if (curMenuItems == NULL) + return; + menuDrawTitle(labelGetAddress(&curMenuItems->title)); + } } void loopVolumeReminderClear(void) @@ -223,9 +234,19 @@ void loopVolumeReminderClear(void) /* Clear warning message */ volumeReminder.status = STATUS_IDLE; + if(isListview) + { + if(curListItems == NULL) + return; + menuDrawTitle(labelGetAddress(&curListItems->title)); + } + else + { if(curMenuItems == NULL) return; menuDrawTitle(labelGetAddress(&curMenuItems->title)); + } + } void loopBusySignClear(void) @@ -243,7 +264,7 @@ void loopBusySignClear(void) /* End Busy display sing */ busySign.status = STATUS_IDLE; - GUI_SetColor(lcd_colors[infoSettings.bg_color]); + GUI_SetColor(lcd_colors[infoSettings.title_bg_color]); GUI_FillCircle(busySign.rect.x0, (busySign.rect.y1 - busySign.rect.y0) / 2, (busySign.rect.x1-busySign.rect.x0)/2); GUI_SetColor(lcd_colors[infoSettings.font_color]); } @@ -262,9 +283,10 @@ void menuDrawTitle(const uint8_t *content) //(const MENUITEMS * menuItems) show_GlobalInfo(); if(reminder.status == STATUS_IDLE) return; - GUI_SetColor(RED); + GUI_SetColor(lcd_colors[infoSettings.reminder_color]); + GUI_SetBkColor(lcd_colors[infoSettings.title_bg_color]); GUI_DispStringInPrect(&reminder.rect, textSelect(reminder.inf)); - GUI_SetColor(lcd_colors[infoSettings.font_color]); + GUI_RestoreColorDefault(); } //Draw the entire interface diff --git a/TFT/src/User/SanityCheck.c b/TFT/src/User/SanityCheck.c new file mode 100644 index 0000000000..2199c3ee3c --- /dev/null +++ b/TFT/src/User/SanityCheck.c @@ -0,0 +1,12 @@ +#include "SanityCheck.h" + +//Main settings +void sizecheck(void){ +// if error shows 'the size of an array must be greater than zero' +// then the size of the array is larger tha allocated size in flash. +SIZE_CHECK( sizeof(SETTINGS) > PARA_SIZE); //Size of infoSettings is larger tha allocated size in flash. +SIZE_CHECK( sizeof(STRINGS_STORE) > STRINGS_STORE_MAX_SIZE); // check size of strings_store is larger tha allocated size in flash. +SIZE_CHECK( sizeof(CUSTOM_GCODES) > CUSTOM_GCODE_MAX_SIZE); // check size of custom_gcodes is larger tha allocated size in flash. +SIZE_CHECK( sizeof(PRINT_GCODES) > PRINT_GCODES_MAX_SIZE); // check size of print_gcodes is larger tha allocated size in flash. + +} \ No newline at end of file diff --git a/TFT/src/User/SanityCheck.h b/TFT/src/User/SanityCheck.h index 599f81ec73..d6cf4e7082 100644 --- a/TFT/src/User/SanityCheck.h +++ b/TFT/src/User/SanityCheck.h @@ -1,32 +1,43 @@ #ifndef _SANITYCHECK_H_ #define _SANITYCHECK_H_ + #include "includes.h" #include "Configuration.h" +#include "flashStore.h" +#include "Settings.h" +// +//check size of settings against max allocated size at compile time +#define SIZE_CHECK(object) ((void)sizeof(char[1 - 2*!!(object)])) + #if CONFIG_VERSION != CONFIG_SUPPPORT - #error "the Configuration.h is old. please use the latest Configuration.h file" + #error "the Configuration.h is old. please use the latest Configuration.h file" #endif #ifndef ST7920_SPI - #ifdef CLEAN_MODE_SWITCHING_SUPPORT - #error "CLEAN_MODE_SWITCHING_SUPPORT can only be enabled for TFT controllers which support ST7920 Emulator/Marlin Mode. Disable CLEAN_MODE_SWITCHING_SUPPORT in Configuration.h" - #endif + #ifdef CLEAN_MODE_SWITCHING_SUPPORT + #error "CLEAN_MODE_SWITCHING_SUPPORT can only be enabled for TFT controllers which support ST7920 Emulator/Marlin Mode. Disable CLEAN_MODE_SWITCHING_SUPPORT in Configuration.h" + #endif #endif #ifdef LED_COLOR_PIN + #ifdef STARTUP_KNOB_LED_COLOR - #if STARTUP_KNOB_LED_COLOR < 1 - #error "STARTUP_knob_LED_COLOR cannot be less than 1" + #if STARTUP_KNOB_LED_COLOR < 0 + #error "STARTUP_knob_LED_COLOR cannot be less than 1" #endif - #if STARTUP_KNOB_LED_COLOR > 9 - #error "STARTUP_knob_LED_COLOR cannot be greater than 9" + #if STARTUP_KNOB_LED_COLOR > 8 + #error "STARTUP_knob_LED_COLOR cannot be greater than 9" #endif #else - #define STARTUP_KNOB_LED_COLOR 1 + #define STARTUP_KNOB_LED_COLOR 0 #endif - #else - #define STARTUP_KNOB_LED_COLOR 1 + +#else + + #define STARTUP_KNOB_LED_COLOR 0 + #endif #ifdef EXTRUDE_STEPS @@ -41,11 +52,22 @@ #error "CANCEL_PRINT_GCODE is now PRINT_CANCEL_GCODE. Please update your Configuration.h file." #endif +#ifndef ST7920_BANNER_TEXT + #define ST7920_BANNER_TEXT "LCD12864 Simulator" #endif -#ifndef ST7920_BANNER_TEXT -#define ST7920_BANNER_TEXT "LCD12864 Simulator" +#if TOOL_NUM > MAX_TOOL_COUNT + #error "TOOL_NUM can not be more than 6" +#endif + +#if EXT_NUM > MAX_TOOL_COUNT + #error "EXT_NUM can not be more than 6" +#endif + +#if FAN_NUM > MAX_TOOL_COUNT + #error "FAN_NUM can not be more than 6" #endif + #ifdef CUSTOM_0_LABEL #define ENABLE_CUSTOM0 1 #else @@ -167,7 +189,6 @@ #endif - #define CUSTOM_GCODE_ENABLED {ENABLE_CUSTOM0, ENABLE_CUSTOM1, ENABLE_CUSTOM2, ENABLE_CUSTOM3, ENABLE_CUSTOM4,\ ENABLE_CUSTOM5, ENABLE_CUSTOM6, ENABLE_CUSTOM7, ENABLE_CUSTOM8, ENABLE_CUSTOM9,\ ENABLE_CUSTOM10,ENABLE_CUSTOM11,ENABLE_CUSTOM12,ENABLE_CUSTOM13,ENABLE_CUSTOM14} @@ -182,3 +203,5 @@ + +#endif diff --git a/TFT/src/User/config.ini b/TFT/src/User/config.ini index fb7227e5f6..bb4a393280 100644 --- a/TFT/src/User/config.ini +++ b/TFT/src/User/config.ini @@ -1,10 +1,23 @@ +#### Default Config file for BigTreeTech TFT Controllers +# +# BIGTREE_TFT35_V1_1 / BIGTREE_TFT35_V1_2 / BIGTREE_TFT35_V2_0 +# BIGTREE_TFT35_V3_0 / BIGTREE_TFT35_E3_V3_0 / BIGTREE_TFT28_V1_0 +# BIGTREE_TFT28_V3_0 / BIGTREE_TFT24_V1_1 / MKS_32_V1_4 +# +# Firmware Source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware +# #-------------------------------------------------------------------- # General Settings #-------------------------------------------------------------------- +#### UNIFIED MENU / CLASSIC MENU +# Select a UI Menu flavour +# Options: [Unified Menu: 1, Classic Menu: 0] +unified_menu:1 + #### Baudrate # Options: [0: 2400, 1: 9600, 2: 19200, 3: 38400, 4: 57600, 5: 115200, 6: 250000, 7: 500000,8: 1000000 ] -baudrate:4 +baudrate:5 #### Default Touch Mode Language # Select the language to display on the LCD while in Touch Mode. @@ -15,13 +28,13 @@ language:0 #### Default Touch Mode Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] # Title background color title_back_color:1 #Background color -background_color:0 +background_color:1 #Font foreground color font_color:0 @@ -29,15 +42,33 @@ font_color:0 #Reminder font color, such as: "No print attached", "Busy processing", etc. reminder_color:5 -#Volume reminder font color, such as: "Card inserted", "Card removed" -volume_reminder_color:5 +#Volume status/reminder font color, such as: "Card inserted", "Card removed" +volume_status_color:5 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 + +#Backgroud color for X Y Z position display in Status Screen. +status_xyz_bg_color:15 + +#List View Border Color +list_border_color:15 + +#List View button background color +list_button_bg_color:15 #### Rotate UI 180 degrees # Options: [enable: 1, disable: 0] rotate_ui:0 -#### Show Temprature ACK in Gcode Terminal -# Options: [enable: 1, disable: 0] +#### Show or hide Temperature ACK in Gcode Terminal +# Options: [Show: 1, Hide: 0] terminal_ack:0 #### invert X axis button function in Move menu to match move buttons to actual axis @@ -66,7 +97,7 @@ default_mode:0 #### Default Marlin Mode Background & Font Color Options # Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7, -# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 13, DARKGREEN: 14, GRAY: 15, DARKGRAY: 16 ] +# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15 ] marlin_bg_color:1 marlin_fn_color:8 @@ -98,11 +129,11 @@ ext_count:1 # Options: [1 to 6] fan_count:1 -#### Bed / Extruder Maximum Tempratures +#### Bed / Extruder Maximum Temperatures # format [max_temp: BED: T0: T1: T2: T3: T4: T5:] max_temp: BED:150 T0:275 T1:275 T2:275 T3:275 T4:275 T5:275 -#### Cold Extrusion Minimum Temprature +#### Cold Extrusion Minimum Temperature min_temp:180 #### Fan Maximum PWM speed (0 to 255) @@ -127,7 +158,7 @@ move_speed: S1000 N3000 F5000 ext_speed: S60 N600 F1200 ####Auto Save Load Leveling Data -# The TFT will auto detect if Auto Bed Level is available. +# The TFT will auto-detect if Auto Bed Level is available. # Enable this will send "M500" after "G29" to store leveling value # and send "M420 S1" to enable leveling state after startup # Options:[1:enable, 0: disable] @@ -171,8 +202,9 @@ level_z_pos:0.2 level_z_raise:10 level_feedrate: X6000 Y6000 Z6000 -#### Preheat Temprature +#### Preheat Temperature # Maximum Filament name length 7 characters +# If default names are changed, make sure to change Icons to match the names #format [T B] preheat_name1:PLA preheat_temp1:T200 B60 @@ -195,8 +227,8 @@ ps_on:0 # Options:[HIGH: 1, LOW: 0] ps_on_active_high:1 -#### Maximum hotend temperature of automatic shut down after printing (only if auto power is enabled) -# wait for the hotend temperature to be lower than this value, then turn off the power automatically +#### Maximum hot-end temperature of automatic shut down after printing (only if auto power is enabled) +# wait for the hot-end temperature to be lower than this value, then turn off the power automatically auto_shutdown_temp:50 #-------------------------------------------------------------------- @@ -236,7 +268,7 @@ btt_mini_ups:0 #-------------------------------------------------------------------- -# Other device specific settings +# Other device-specific settings #-------------------------------------------------------------------- #### Buzzer / sound @@ -244,17 +276,17 @@ btt_mini_ups:0 buzzer:1 #### Knob Led Color (only for TFT35 E3.0) -#Options: [ 1: LED_OFF, 2: LED_WHITE, 3: LED_RED, 4: LED_ORANGE, 5: LED_YELLOW, 6: LED_GREEN,7: LED_BLUE, 8: LED_INDIGO, 9: LED_VIOLET] -knob_led_color:1 +#Options: [ 0: LED_OFF, 1: LED_WHITE, 2: LED_RED, 3: LED_ORANGE, 4: LED_YELLOW, 5: LED_GREEN, 6: LED_BLUE, 7: LED_INDIGO, 8: LED_VIOLET] +knob_led_color:0 #### Default LCD Brightness levels (only for TFT35v3.0 & TFT28v3.0) -# Options: [(low) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] +# Options: [(low) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (full)] lcd_brightness:10 lcd_idle_brightness:5 -####Default LCD idle time(in sec) (only for TFT35v3.0 & TFT28v3.0) -# Options: [off: 0, 5sec: 1, 10sec: 2, 30sec: 3, 60sec: 4,120sec: 5, 300sec: 6] -lcd_idle_delay:3 +####Default LCD idle time (only for TFT35v3.0 & TFT28v3.0) +# Options [0: Off, 1: 5Sec, 2: 10Sec , 3: 30sec, 4: 1min, 5: 2min, 6: 5min, 7: 10min] +lcd_idle_delay:4 #-------------------------------------------------------------------- @@ -269,7 +301,7 @@ lcd_idle_delay:3 # if the values are left blank then default name and G-code will be used -# Options: [Label maximum length: 20 characters, G-code Maximum length 70 characters] +# Options: [Label maximum length: 24 characters, G-code Maximum length 70 characters] custom_label_1:Disable steppers custom_gcode_1:M84\n @@ -278,13 +310,13 @@ custom_gcode_2:G28\nG29\nG0\n custom_label_3:Release sd card custom_gcode_3:M22\n custom_label_4:restore leveling -custom_gcode_4:M420 s1\n +custom_gcode_4:M420 S1\n custom_label_5:Save to EEPROM custom_gcode_5:M500\n custom_label_6:restore from EEPROM custom_gcode_6:M501\n -#custom_label_7:EEPROM defaults -#custom_gcode_7:M502\n +custom_label_7:EEPROM defaults +custom_gcode_7:M502\n #custom_label_8:custom8 #custom_gcode_8:M105\n #custom_label_9:custom9 @@ -325,4 +357,3 @@ end_gcode:G90\nG1 E-4\nG92 E0\nM18\n #### Cancel G-code - run this G-code after canceling print # maximum length 50 characters cancel_gcode:G28 XY R10\n - diff --git a/TFT/src/User/includes.h b/TFT/src/User/includes.h index 72ced053c6..027bcba76b 100644 --- a/TFT/src/User/includes.h +++ b/TFT/src/User/includes.h @@ -53,9 +53,10 @@ #include "flashStore.h" #include "parseACK.h" #include "Selectmode.h" -#include "Parametersetting.h" #include "extend.h" +#include "list_item.h" +#include "Numpad.h" #include "SanityCheck.h" //menu @@ -71,6 +72,7 @@ #include "Speed.h" #include "BabyStep.h" #include "ledcolor.h" +#include "Parametersetting.h" #include "Extrude.h" #include "Fan.h" @@ -89,7 +91,6 @@ #include "UnifiedMove.h" #include "UnifiedHeat.h" #include "StatusScreen.h" -#include "list_item.h" #define MAX_MENU_DEPTH 10 // max sub menu depth typedef void (*FP_MENU)(void); diff --git a/TFT/src/User/main.c b/TFT/src/User/main.c index 298a0eeb69..ec5d8488bf 100644 --- a/TFT/src/User/main.c +++ b/TFT/src/User/main.c @@ -48,9 +48,8 @@ void Hardware_GenericInit(void) #ifdef LED_COLOR_PIN knob_LED_Init(); - #else - #define STARTUP_KNOB_LED_COLOR 1 #endif + #ifdef U_DISK_SUPPORT USBH_Init(&USB_OTG_Core, USB_OTG_FS_CORE_ID, &USB_Host, &USBH_MSC_cb, &USR_cb); #endif diff --git a/config_instructions.md b/config_instructions.md new file mode 100644 index 0000000000..1ca749951c --- /dev/null +++ b/config_instructions.md @@ -0,0 +1,47 @@ +## Firmware configuration using **config.ini** File + +**The TFT Firmware can be configured with **config.ini** File without the need to re-compile the firmware.** +use the **config.ini** file from from one of these folders: + +[`Copy to SD Card root directory to update`](https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/tree/master/Copy%20to%20SD%20Card%20root%20directory%20to%20update) +or +[`Copy to SD Card root directory to update - Unified Menu Material theme`](https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/tree/master/Copy%20to%20SD%20Card%20root%20directory%20to%20update%20-%20Unified%20Menu%20Material%20theme) + +### Editing **config.ini** File: + +Before editing config.ini file please read the following points: + - All the Settings Keywords are in small-caps (a-z) followed by the ' : ' colon sign. + - If any Keyword has in-valid values then it will be skipped by the TFT Controller and the Keyword with in-valid values will be displayed on the screen during update. + - Any text after the ' # ' hash sign will not be read by the TFT Controller and it will skip to next line. + - There should be only one keyword per line. If there are more than one Keywords in one line then only the fist one will be read by the TFT. + - The Keyword values should start after the ' : ' colon sign. + - All G-Code strings should be in single Line. + - To denote EOL / NewLine, Use **\n** in the G-Code strings. The TFT will convert the **\n** to EOL while updating. eg. + ``` + start_gcode:G28\nG29\nG1 X10 Y10 Z10\n + ``` + +### Instructions: +1. Open the **config.ini** File in any text editor like Notepad or Notepad++. + ![image1](images/config2.png) + + +2. Change the settings parameter values according to options provided in the **config.ini** file. + ![image2](images/config1.png) + + +3. Ignore / Leave the Keywords that are not supported by your TFT Variant. All unsupported Settings Keywords are skipped by the TFT. + + +4. Save the **config.ini** File. + Save the **config.ini** File. Do not change the name of the file. + + +5. Copy the **config.ini** file to the root directory of the SD card. (The SD card capacity should be less than or equal to 8GB and formatted as FAT32) + ![image3](images/config3.png) + + +6. Insert the SD card in the TFT's SD card slot and restart the TFT by pressing the reset buttion or disconnecting and connecting the power cable. + + +7. The TFT will update and store the configuraiton form **config.ini** file. diff --git a/images/config1.png b/images/config1.png new file mode 100644 index 0000000000..d85b2a60f4 Binary files /dev/null and b/images/config1.png differ diff --git a/images/config2.png b/images/config2.png new file mode 100644 index 0000000000..a975f108aa Binary files /dev/null and b/images/config2.png differ diff --git a/images/config3.png b/images/config3.png new file mode 100644 index 0000000000..390129b4fe Binary files /dev/null and b/images/config3.png differ diff --git a/platformio.ini b/platformio.ini index 0392f4b61c..64b8a61deb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -49,7 +49,7 @@ build_flags = -fmax-errors=5 -ITFT/src/User/Hal/STM32_USB_HOST_Library/Class/MSC/inc -ITFT/src/User/Hal/STM32_USB_HOST_Library/Usr/inc -ITFT/src/User/Hal/STM32_USB_OTG_Driver/inc - -DSOFTWARE_VERSION=26 + -DSOFTWARE_VERSION=26.1 [stm32f10x] default_src_filter = ${common.default_src_filter} + + +