From dcf32d6685227e724a115e23314b8049fa5fd16e Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Fri, 16 Feb 2024 23:09:32 +0100 Subject: [PATCH] Fix temp chart crashing --- CYD-Klipper/src/ui/panels/temp_panel.cpp | 28 +++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp index 834a576..2a2e89d 100644 --- a/CYD-Klipper/src/ui/panels/temp_panel.cpp +++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp @@ -207,6 +207,31 @@ static void btn_retract(lv_event_t * e){ send_gcode(true, "G1 E-25 F300"); } +static void set_chart_range(lv_event_t * e) { + lv_obj_t * chart = lv_event_get_target(e); + + int max_temp = 0; + + if (printer.extruder_target_temp > max_temp) + max_temp = printer.extruder_target_temp; + + if (printer.bed_target_temp > max_temp) + max_temp = printer.bed_target_temp; + + if (printer.extruder_temp > max_temp) + max_temp = printer.extruder_temp; + + if (printer.bed_temp > max_temp) + max_temp = printer.bed_temp; + + int range = ((max_temp + 49) / 50) * 50; + + if (range < 100) + range = 100; + + lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, range); +} + static void set_hotend_temp_chart(lv_event_t * e){ lv_obj_t * chart = lv_event_get_target(e); lv_chart_series_t * series = (lv_chart_series_t *)lv_event_get_user_data(e); @@ -251,7 +276,7 @@ void temp_panel_init(lv_obj_t * panel){ lv_chart_set_point_count(chart, 120); lv_obj_set_style_size(chart, 0, LV_PART_INDICATOR); lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, CYD_SCREEN_GAP_PX / 2, CYD_SCREEN_GAP_PX / 4, 4, 3, true, CYD_SCREEN_MIN_BUTTON_WIDTH_PX); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 300); + lv_chart_set_update_mode(chart, LV_CHART_UPDATE_MODE_SHIFT); lv_chart_series_t * ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_ORANGE), LV_CHART_AXIS_PRIMARY_Y); lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); @@ -262,6 +287,7 @@ void temp_panel_init(lv_obj_t * panel){ lv_obj_add_event_cb(chart, set_hotend_temp_chart, LV_EVENT_MSG_RECEIVED, ser2); lv_obj_add_event_cb(chart, set_bed_target_temp_chart, LV_EVENT_MSG_RECEIVED, ser3); lv_obj_add_event_cb(chart, set_bed_temp_chart, LV_EVENT_MSG_RECEIVED, ser4); + lv_obj_add_event_cb(chart, set_chart_range, LV_EVENT_MSG_RECEIVED, NULL); lv_msg_subscribe_obj(DATA_PRINTER_DATA, chart, NULL); lv_obj_t * single_screen_panel = lv_create_empty_panel(root_temp_panel);