Browse Source

Fix and update DGUS displays (#17072)

George Fu 4 years ago
parent
commit
201c991cfa
No account linked to committer's email address

+ 1
- 1
Marlin/Configuration_adv.h View File

1288
 // Additional options for DGUS / DWIN displays
1288
 // Additional options for DGUS / DWIN displays
1289
 //
1289
 //
1290
 #if HAS_DGUS_LCD
1290
 #if HAS_DGUS_LCD
1291
-  #define DGUS_SERIAL_PORT 2
1291
+  #define DGUS_SERIAL_PORT 3
1292
   #define DGUS_BAUDRATE 115200
1292
   #define DGUS_BAUDRATE 115200
1293
 
1293
 
1294
   #define DGUS_RX_BUFFER_SIZE 128
1294
   #define DGUS_RX_BUFFER_SIZE 128

+ 2
- 1
Marlin/src/inc/Conditionals_LCD.h View File

356
   #endif
356
   #endif
357
 #endif
357
 #endif
358
 
358
 
359
-// Extensible UI serial touch screens. (See src/lcd/extensible_ui)
359
+// Aliases for LCD features
360
 #if ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY)
360
 #if ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY)
361
   #define HAS_DGUS_LCD 1
361
   #define HAS_DGUS_LCD 1
362
 #endif
362
 #endif
363
 
363
 
364
+// Extensible UI serial touch screens. (See src/lcd/extensible_ui)
364
 #if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE)
365
 #if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE)
365
   #define IS_EXTUI
366
   #define IS_EXTUI
366
   #define EXTENSIBLE_UI
367
   #define EXTENSIBLE_UI

+ 14
- 8
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.cpp View File

179
   }
179
   }
180
 }
180
 }
181
 
181
 
182
+// Send the current print progress to the display.
183
+void DGUSScreenVariableHandler::DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var) {
184
+  //DEBUG_ECHOPAIR(" DGUSLCD_SendPrintProgressToDisplay ", var.VP);
185
+  uint16_t tmp = ExtUI::getProgress_percent();
186
+  //DEBUG_ECHOLNPAIR(" data ", tmp);
187
+  uint16_t data_to_send = swap16(tmp);
188
+  dgusdisplay.WriteVariable(var.VP, data_to_send);
189
+}
190
+
182
 // Send the current print time to the display.
191
 // Send the current print time to the display.
183
 // It is using a hex display for that: It expects BSD coded data in the format xxyyzz
192
 // It is using a hex display for that: It expects BSD coded data in the format xxyyzz
184
 void DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) {
193
 void DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var) {
465
 const uint16_t* DGUSLCD_FindScreenVPMapList(uint8_t screen) {
474
 const uint16_t* DGUSLCD_FindScreenVPMapList(uint8_t screen) {
466
   const uint16_t *ret;
475
   const uint16_t *ret;
467
   const struct VPMapping *map = VPMap;
476
   const struct VPMapping *map = VPMap;
468
-  while (ret = (uint16_t*) pgm_read_word(&(map->VPList))) {
477
+  while (ret = (uint16_t*) pgm_read_ptr(&(map->VPList))) {
469
     if (pgm_read_byte(&(map->screen)) == screen) return ret;
478
     if (pgm_read_byte(&(map->screen)) == screen) return ret;
470
     map++;
479
     map++;
471
   }
480
   }
846
 void DGUSScreenVariableHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) {
855
 void DGUSScreenVariableHandler::HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr) {
847
   DEBUG_ECHOLNPGM("HandleProbeOffsetZChanged");
856
   DEBUG_ECHOLNPGM("HandleProbeOffsetZChanged");
848
 
857
 
849
-  uint16_t value = swap16(*(uint16_t*)val_ptr)/100;
850
-  ExtUI::setZOffset_mm(value);
858
+  const float offset = float(swap16(*(uint16_t*)val_ptr)) / 100.0f;
859
+  ExtUI::setZOffset_mm(offset);
851
   ScreenHandler.skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
860
   ScreenHandler.skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
852
   return;
861
   return;
853
 }
862
 }
858
 
867
 
859
     int16_t flag = swap16(*(uint16_t*)val_ptr);
868
     int16_t flag = swap16(*(uint16_t*)val_ptr);
860
     int16_t steps = flag ? -20 : 20;
869
     int16_t steps = flag ? -20 : 20;
861
-    ExtUI::smartAdjustAxis_steps(steps,ExtUI::axis_t::Z,true);
870
+    ExtUI::smartAdjustAxis_steps(steps, ExtUI::axis_t::Z, true);
862
     ScreenHandler.ForceCompleteUpdate();
871
     ScreenHandler.ForceCompleteUpdate();
863
     return;
872
     return;
864
   }
873
   }
1307
           //DEBUG_ECHOPAIR(" vp=", vp, " dlen=", dlen);
1316
           //DEBUG_ECHOPAIR(" vp=", vp, " dlen=", dlen);
1308
           DGUS_VP_Variable ramcopy;
1317
           DGUS_VP_Variable ramcopy;
1309
           if (populate_VPVar(vp, &ramcopy)) {
1318
           if (populate_VPVar(vp, &ramcopy)) {
1310
-            if (!(dlen == ramcopy.size || (dlen == 2 && ramcopy.size == 1)))
1311
-              DEBUG_ECHOLNPGM("SIZE MISMATCH");
1312
-            else if (ramcopy.set_by_display_handler) {
1319
+            if (ramcopy.set_by_display_handler)
1313
               ramcopy.set_by_display_handler(ramcopy, &tmp[3]);
1320
               ramcopy.set_by_display_handler(ramcopy, &tmp[3]);
1314
-            }
1315
             else
1321
             else
1316
               DEBUG_ECHOLNPGM(" VPVar found, no handler.");
1322
               DEBUG_ECHOLNPGM(" VPVar found, no handler.");
1317
           }
1323
           }

+ 8
- 2
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplay.h View File

26
 #include "../../../../inc/MarlinConfigPre.h"
26
 #include "../../../../inc/MarlinConfigPre.h"
27
 
27
 
28
 #include "../../../../MarlinCore.h"
28
 #include "../../../../MarlinCore.h"
29
+#if HAS_BED_PROBE
30
+  #include "../../../../module/probe.h"
31
+#endif
29
 #include "DGUSVPVariable.h"
32
 #include "DGUSVPVariable.h"
30
 
33
 
31
 enum DGUSLCD_Screens : uint8_t;
34
 enum DGUSLCD_Screens : uint8_t;
140
     // Hook for PID autotune
143
     // Hook for PID autotune
141
     static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
144
     static void HandlePIDAutotune(DGUS_VP_Variable &var, void *val_ptr);
142
   #endif
145
   #endif
143
-  // Hook for "Change probe offset z"
144
-  static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
146
+  #if HAS_BED_PROBE
147
+    // Hook for "Change probe offset z"
148
+    static void HandleProbeOffsetZChanged(DGUS_VP_Variable &var, void *val_ptr);
149
+  #endif
145
   #if ENABLED(BABYSTEPPING)
150
   #if ENABLED(BABYSTEPPING)
146
     // Hook for live z adjust action
151
     // Hook for live z adjust action
147
     static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
152
     static void HandleLiveAdjustZ(DGUS_VP_Variable &var, void *val_ptr);
210
   static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
215
   static void DGUSLCD_SendStringToDisplayPGM(DGUS_VP_Variable &var);
211
   static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
216
   static void DGUSLCD_SendTemperaturePID(DGUS_VP_Variable &var);
212
   static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
217
   static void DGUSLCD_SendPercentageToDisplay(DGUS_VP_Variable &var);
218
+  static void DGUSLCD_SendPrintProgressToDisplay(DGUS_VP_Variable &var);
213
   static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
219
   static void DGUSLCD_SendPrintTimeToDisplay(DGUS_VP_Variable &var);
214
   #if ENABLED(PRINTCOUNTER)
220
   #if ENABLED(PRINTCOUNTER)
215
     static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);
221
     static void DGUSLCD_SendPrintAccTimeToDisplay(DGUS_VP_Variable &var);

+ 10
- 3
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinitionFYSETC.cpp View File

213
     VP_T_Bed_Is, VP_T_Bed_Set,
213
     VP_T_Bed_Is, VP_T_Bed_Set,
214
   #endif
214
   #endif
215
   VP_Feedrate_Percentage,
215
   VP_Feedrate_Percentage,
216
+  VP_SD_Print_ProbeOffsetZ,
216
   0x0000
217
   0x0000
217
 };
218
 };
218
 
219
 
279
   0x0000
280
   0x0000
280
 };
281
 };
281
 
282
 
283
+const uint16_t VPList_Z_Offset[] PROGMEM = {
284
+  #if HOTENDS >= 1
285
+    VP_SD_Print_ProbeOffsetZ,
286
+  #endif
287
+  0x0000
288
+};
289
+
282
 const struct VPMapping VPMap[] PROGMEM = {
290
 const struct VPMapping VPMap[] PROGMEM = {
283
   { DGUSLCD_SCREEN_BOOT, VPList_Boot },
291
   { DGUSLCD_SCREEN_BOOT, VPList_Boot },
284
   { DGUSLCD_SCREEN_MAIN, VPList_Main },
292
   { DGUSLCD_SCREEN_MAIN, VPList_Main },
297
   { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting },
305
   { DGUSLCD_SCREEN_WAITING, VPList_PIDTuningWaiting },
298
   { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat },
306
   { DGUSLCD_SCREEN_FLC_PREHEAT, VPList_FLCPreheat },
299
   { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting },
307
   { DGUSLCD_SCREEN_FLC_PRINTING, VPList_FLCPrinting },
308
+  { DGUSLCD_SCREEN_Z_OFFSET, VPList_Z_Offset },
300
   { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM },
309
   { DGUSLCD_SCREEN_STEPPERMM, VPList_StepPerMM },
301
   { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 },
310
   { DGUSLCD_SCREEN_PID_E, VPList_PIDE0 },
302
   { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED },
311
   { DGUSLCD_SCREEN_PID_BED, VPList_PIDBED },
418
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
427
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
419
 
428
 
420
   // Print Progress
429
   // Print Progress
421
-  #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
422
-    VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay),
423
-  #endif
430
+  VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintProgressToDisplay ),
424
 
431
 
425
   // Print Time
432
   // Print Time
426
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay),
433
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay),

+ 6
- 5
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinitionFYSETC.h View File

43
   DGUSLCD_SCREEN_STEPPERMM           = 212,
43
   DGUSLCD_SCREEN_STEPPERMM           = 212,
44
   DGUSLCD_SCREEN_PID_E               = 214,
44
   DGUSLCD_SCREEN_PID_E               = 214,
45
   DGUSLCD_SCREEN_PID_BED             = 218,
45
   DGUSLCD_SCREEN_PID_BED             = 218,
46
-  DGUSLCD_SCREEN_INFOS               =  30,
46
+  DGUSLCD_SCREEN_Z_OFFSET            = 222,
47
+  DGUSLCD_SCREEN_INFOS               =  36,
47
   DGUSLCD_SCREEN_CONFIRM             = 240,
48
   DGUSLCD_SCREEN_CONFIRM             = 240,
48
   DGUSLCD_SCREEN_KILL                = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
49
   DGUSLCD_SCREEN_KILL                = 250, ///< Kill Screen. Must always be 250 (to be able to display "Error wrong LCD Version")
49
   DGUSLCD_SCREEN_WAITING             = 251,
50
   DGUSLCD_SCREEN_WAITING             = 251,
121
 // Fan Control Buttons , switch between "off" and "on"
122
 // Fan Control Buttons , switch between "off" and "on"
122
 constexpr uint16_t VP_FAN0_CONTROL = 0x2200;
123
 constexpr uint16_t VP_FAN0_CONTROL = 0x2200;
123
 constexpr uint16_t VP_FAN1_CONTROL = 0x2202;
124
 constexpr uint16_t VP_FAN1_CONTROL = 0x2202;
124
-//constexpr uint16_t VP_FAN2_CONTROL = 0x2204;
125
-//constexpr uint16_t VP_FAN3_CONTROL = 0x2206;
125
+constexpr uint16_t VP_FAN2_CONTROL = 0x2204;
126
+constexpr uint16_t VP_FAN3_CONTROL = 0x2206;
126
 
127
 
127
 // Heater Control Buttons , triged between "cool down" and "heat PLA" state
128
 // Heater Control Buttons , triged between "cool down" and "heat PLA" state
128
 constexpr uint16_t VP_E0_CONTROL = 0x2210;
129
 constexpr uint16_t VP_E0_CONTROL = 0x2210;
240
 // Fan status
241
 // Fan status
241
 constexpr uint16_t VP_FAN0_STATUS = 0x3300;
242
 constexpr uint16_t VP_FAN0_STATUS = 0x3300;
242
 constexpr uint16_t VP_FAN1_STATUS = 0x3302;
243
 constexpr uint16_t VP_FAN1_STATUS = 0x3302;
243
-//constexpr uint16_t VP_FAN2_STATUS = 0x3304;
244
-//constexpr uint16_t VP_FAN3_STATUS = 0x3306;
244
+constexpr uint16_t VP_FAN2_STATUS = 0x3304;
245
+constexpr uint16_t VP_FAN3_STATUS = 0x3306;
245
 
246
 
246
 // Heater status
247
 // Heater status
247
 constexpr uint16_t VP_E0_STATUS = 0x3310;
248
 constexpr uint16_t VP_E0_STATUS = 0x3310;

+ 1
- 3
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinitionHIPRECY.cpp View File

418
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
418
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
419
 
419
 
420
   // Print Progress
420
   // Print Progress
421
-  #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
422
-    VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ),
423
-  #endif
421
+  VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintProgressToDisplay ),
424
 
422
 
425
   // Print Time
423
   // Print Time
426
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ),
424
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ),

+ 1
- 3
Marlin/src/lcd/extensible_ui/lib/dgus/DGUSDisplayDefinitionOrigin.cpp View File

250
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
250
   VPHELPER(VP_ZPos, &current_position.z, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendFloatAsLongValueToDisplay<2>),
251
 
251
 
252
   // Print Progress
252
   // Print Progress
253
-  #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
254
-    VPHELPER(VP_PrintProgress_Percentage, &ui.progress_override, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendWordValueToDisplay ),
255
-  #endif
253
+  VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintProgressToDisplay ),
256
 
254
 
257
   // Print Time
255
   // Print Time
258
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ),
256
   VPHELPER_STR(VP_PrintTime, nullptr, VP_PrintTime_LEN, nullptr, DGUSScreenVariableHandler::DGUSLCD_SendPrintTimeToDisplay ),

Loading…
Cancel
Save