From 66e3a6765cfc14f818d81f3fc0201bd96735296d Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Sat, 2 Nov 2024 14:42:14 +0100 Subject: [PATCH] Fix time in bambu integration --- .../core/bambu/bambu_printer_integration.hpp | 1 + .../src/core/bambu/bambu_printer_parsers.cpp | 22 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/CYD-Klipper/src/core/bambu/bambu_printer_integration.hpp b/CYD-Klipper/src/core/bambu/bambu_printer_integration.hpp index 924a784..22a2061 100644 --- a/CYD-Klipper/src/core/bambu/bambu_printer_integration.hpp +++ b/CYD-Klipper/src/core/bambu/bambu_printer_integration.hpp @@ -47,6 +47,7 @@ class BambuPrinter : public BasePrinter popup_message_timeout_s = -1; bambu_misc = 0; printer_data.error_screen_features = PrinterFeatureRetryError | PrinterFeatureIgnoreError | PrinterFeatureContinueError; + print_start = millis(); } bool move_printer(const char* axis, float amount, bool relative); diff --git a/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp b/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp index 01528cc..86ecbe1 100644 --- a/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp +++ b/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp @@ -120,31 +120,22 @@ void BambuPrinter::parse_state(JsonDocument& in) } else if (strcasecmp(state, "running") == 0 || strcasecmp(state, "prepare") == 0) { - if (print_start <= 0) - { - print_start = millis(); - } - printer_data.state = PrinterState::PrinterStatePrinting; } else { - print_start = 0; printer_data.state = PrinterState::PrinterStateIdle; } } - - - if (printer_data.state == PrinterState::PrinterStatePrinting) - { - printer_data.elapsed_time_s = (millis() - print_start) / 1000; - } - if (print.containsKey("mc_remaining_time")) { printer_data.remaining_time_s = print["mc_remaining_time"]; printer_data.remaining_time_s *= 60; + if (printer_data.remaining_time_s > 300) + { + print_start = millis() - (printer_data.remaining_time_s / (1 - printer_data.print_progress) * printer_data.print_progress * 1000); + } } if (print.containsKey("mc_percent")) @@ -153,6 +144,11 @@ void BambuPrinter::parse_state(JsonDocument& in) printer_data.print_progress /= 100; } + if (printer_data.state == PrinterState::PrinterStatePrinting) + { + printer_data.elapsed_time_s = (millis() - print_start) / 1000; + } + if (print.containsKey("layer_num")) { printer_data.current_layer = print["layer_num"];