From 0a18e416129ce4d6b0f9d9a04ccf55eb0cd2d5c0 Mon Sep 17 00:00:00 2001 From: ruipeng <1041589370@qq.com> Date: Thu, 8 May 2025 19:14:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8klipper?= =?UTF-8?q?=E6=97=B6=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- moonraker/components/firmware_manager.py | 41 ++++++++++++------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/moonraker/components/firmware_manager.py b/moonraker/components/firmware_manager.py index ea9f757..da7ea89 100644 --- a/moonraker/components/firmware_manager.py +++ b/moonraker/components/firmware_manager.py @@ -84,30 +84,29 @@ class FirmwareUpdate: logging.exception(f"Failed to enable power button during error recovery: {power_err}") async def build_mcu_info(self) -> None: - retries = 5 + retries = 0 printer_info: Dict[str, Any] = {} cfg_status: Dict[str, Any] = {} - while retries: - try: - printer_info = await self.klippy_apis.get_klippy_info() - cfg_status = await self.klippy_apis.query_objects({'configfile': None}) - except self.server.error: - logging.exception("PanelDue initialization request failed") - retries -= 1 - if not retries: - raise + while retries < 5: + printer_info = await self.klippy_apis.get_klippy_info() + klipper_sta = printer_info.get("state", "") + if klipper_sta != "startup": + try: + cfg_status = await self.klippy_apis.query_objects({'configfile': None}) + config = cfg_status.get('configfile', {}).get('config', {}) + self.klipper_version = printer_info.get("software_version", "").split('-')[0] + self._build_basic_mcu_info(config) + await self._update_mcu_versions() + self._check_mcu_update_needed() + logging.info("MCU versions updated successfully.") + break + except Exception as e: + retries += 1 + await asyncio.sleep(1.) + else: + logging.info("Klipper is in startup state. Waiting...") + retries += 1 await asyncio.sleep(1.) - continue - break - config = cfg_status.get('configfile', {}).get('config', {}) - self.klipper_version = printer_info.get("software_version", "").split('-')[0] - try: - self._build_basic_mcu_info(config) - await self._update_mcu_versions() - self._check_mcu_update_needed() - - except Exception as e: - logging.exception(f"An error occurred while building MCU info: {e}") def _build_basic_mcu_info(self, config: Dict[str, Any]) -> None: for mcu, value in config.items():