diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 21643c9433..4b171aedc0 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4422,8 +4422,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); } @@ -4440,6 +4441,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) auto ams_it = amsList.find(ams_id); if (ams_it == amsList.end()) { Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); + new_ams->info = info; amsList.insert(std::make_pair(ams_id, new_ams)); // new ams added event curr_ams = new_ams; diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 1949bb7b32..5c772c8abf 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 fa4f1d6205..86717e706d 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -4567,6 +4567,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;