From 27eafd72f20436b95ffff0c4d18b884265f46ea0 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 21 Sep 2020 14:50:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/mks_wifi/mks_wifi_ui.cpp | 30 +++++++++++++++------- Marlin/src/module/mks_wifi/mks_wifi_ui.h | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Marlin/src/module/mks_wifi/mks_wifi_ui.cpp b/Marlin/src/module/mks_wifi/mks_wifi_ui.cpp index f9cb0bfe36..97c1068cdc 100644 --- a/Marlin/src/module/mks_wifi/mks_wifi_ui.cpp +++ b/Marlin/src/module/mks_wifi/mks_wifi_ui.cpp @@ -4,16 +4,27 @@ #include "../../lcd/tft/tft.h" #include "../../lcd/tft/tft_color.h" +#include "../../lcd/ultralcd.h" extern TFT tft; +char str[100]; -void mks_update_status(char *filename,int current_filesize, int file_size){ - char str[100]; +void mks_update_status(char *filename,uint32_t current_filesize, uint32_t file_size){ + static uint32_t call_count = 0; static uint32_t last_value = 200; - uint8_t percent_done; - - percent_done = current_filesize*100/file_size; - if((percent_done != last_value)){ + uint32_t percent_done; + uint16_t width; + + //При расчете процентов размер файла превышает максимум для uint32_t + if(current_filesize >= (UINT32_MAX/100) ){ + current_filesize = current_filesize/100; + file_size = file_size/100; + } + + percent_done = (current_filesize*100)/file_size; + if(((uint8_t)percent_done != last_value)){ + call_count++; + DEBUG("LCD call %ld CF: %ld FS: %ld",call_count,current_filesize,file_size); tft.queue.reset(); tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); tft.set_background(COLOR_BACKGROUND); @@ -21,13 +32,14 @@ void mks_update_status(char *filename,int current_filesize, int file_size){ sprintf(str,"%s",filename); tft.add_text(8, 100, COLOR_WHITE, str); - tft.add_bar(8,150, ((TFT_WIDTH-10)*percent_done)/100, 30, COLOR_GREEN); + width = ((TFT_WIDTH-10)*(uint8_t)percent_done)/100; + tft.add_bar(8,150, width, 30, COLOR_GREEN); - sprintf(str,"%d of %d (%d%%)",current_filesize,file_size,percent_done); + sprintf(str,"%ld of %ld (%d%%)",current_filesize,file_size,(uint8_t)percent_done); tft.add_text(100, 150, COLOR_WHITE, str); tft.queue.sync(); - last_value = percent_done; + last_value = percent_done; }; } diff --git a/Marlin/src/module/mks_wifi/mks_wifi_ui.h b/Marlin/src/module/mks_wifi/mks_wifi_ui.h index 72cac790f1..85ebc698bf 100644 --- a/Marlin/src/module/mks_wifi/mks_wifi_ui.h +++ b/Marlin/src/module/mks_wifi/mks_wifi_ui.h @@ -5,7 +5,7 @@ #if ENABLED(TFT_480x320) || ENABLED(TFT_480x320_SPI) -void mks_update_status(char *filename,int current_filesize, int file_size); +void mks_update_status(char *filename,uint32_t current_filesize, uint32_t file_size); void mks_end_transmit(void); #endif