From 83de229aa1306e80646b69ea7ba02f6b2e58f818 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 1 Apr 2025 13:02:04 +0800 Subject: [PATCH] ENH:use new command based on AMS type jira:[none] Change-Id: I9411aa5b673b4270fe468a07c38d9966bd31a29a --- src/slic3r/GUI/DeviceManager.cpp | 6 ++++-- src/slic3r/GUI/DeviceManager.hpp | 1 + src/slic3r/GUI/StatusPanel.cpp | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index c9d7bb882..803efc902 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4486,8 +4486,9 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) int type_id = 1; // 0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s /*ams info*/ + std::string info; if (it->contains("info")) { - std::string info = (*it)["info"].get(); + info = (*it)["info"].get(); type_id = get_flag_bits(info, 0, 4); nozzle_id = get_flag_bits(info, 8, 4); } @@ -4503,7 +4504,8 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) Ams* curr_ams = nullptr; auto ams_it = amsList.find(ams_id); if (ams_it == amsList.end()) { - Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); + Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); + new_ams->info = info; try { if (!ams_id.empty()) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 138ec1137..ba582ad2a 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -374,6 +374,7 @@ public: type = type_id; } std::string id; + std::string info; int left_dry_time = 0; int humidity = 5; int humidity_raw = -1; // the percentage, -1 means invalid. eg. 100 means 100% diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index b4ba993d4..aaa3bc9b6 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -4552,6 +4552,12 @@ void StatusPanel::on_ams_refresh_rfid(wxCommandEvent &event) if (obj->m_extder_data.total_extder_count <= 1 && !obj->is_enable_np) { has_filament_at_extruder = obj->is_filament_at_extruder(); + + /*for xp support n3s/n3f*/ + if (!ams_it->second->info.empty()) { + use_new_command = true; + } + } else { use_new_command = true;