From b60cdcfed85b1dc89c23ee21cb613e5be86eb14d Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 10 Dec 2024 17:29:43 +0800 Subject: [PATCH] FIX:Fixed incorrect printer status jira:[fixed device issue ] Change-Id: Ibab8db09854adca1e80acaf3831c6e4191e137c7 (cherry picked from commit 0572d811780ac406214665af7748e4ba8243bdc8) --- resources/images/filament_load_extruder.png | Bin 20037 -> 18989 bytes src/slic3r/GUI/DeviceManager.cpp | 49 +++++++------- src/slic3r/GUI/DeviceManager.hpp | 2 + src/slic3r/GUI/StatusPanel.cpp | 71 +++++++++++--------- src/slic3r/GUI/Widgets/FilamentLoad.cpp | 35 +++++----- 5 files changed, 85 insertions(+), 72 deletions(-) diff --git a/resources/images/filament_load_extruder.png b/resources/images/filament_load_extruder.png index 30afd6494d79b8d93aba87106ab9287342d5cb2d..e04121ea72f829a351a60f907dc2f872450b060f 100644 GIT binary patch literal 18989 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 literal 20037 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

aCXP}R-}s)y0-t+s7B_nu)vd+w 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 Bwv7M) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 0c512efd1..2169a2756 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1640,8 +1640,6 @@ int MachineObject::command_select_extruder(int id) { BOOST_LOG_TRIVIAL(info) << "select_extruder"; - nozzle_selected_count = HOLD_COUNT_MAX; - json j; j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); j["print"]["command"] = "select_extruder"; @@ -1923,8 +1921,6 @@ int MachineObject::command_set_nozzle_new(int nozzle_id, int temp) { BOOST_LOG_TRIVIAL(info) << "set_nozzle_temp"; - nozzle_selected_count = HOLD_COUNT_MAX; - json j; j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); j["print"]["command"] = "set_nozzle_temp"; @@ -5372,7 +5368,7 @@ void MachineObject::converse_to_duct(bool is_suppt_part_fun, bool is_suppt_aux_f m_air_duct_data.curren_mode = -1; //def mode - if (is_suppt_part_fun) { + if (is_suppt_part_fun) { AirParts part_fan; part_fan.type = int(AirDuctType::AIR_FAN_TYPE); part_fan.id = int(AIR_FUN::FAN_COOLING_0_AIRDOOR); @@ -5706,9 +5702,9 @@ void MachineObject::parse_new_info(json print) json const &nozzle = device["nozzle"]; m_nozzle_data = NozzleData(); - m_nozzle_data.extder_exist = get_flag_bits(nozzle["exist"].get(), 0, 15); - m_nozzle_data.cut_exist = get_flag_bits(nozzle["exist"].get(), 16, 31); - m_nozzle_data.state = get_flag_bits(nozzle["state"].get(), 0, 3); + m_nozzle_data.extder_exist = get_flag_bits(nozzle["exist"].get(), 0, 15); + m_nozzle_data.cut_exist = get_flag_bits(nozzle["exist"].get(), 16, 31); + m_nozzle_data.state = get_flag_bits(nozzle["state"].get(), 0, 3); for (auto it = nozzle["info"].begin(); it != nozzle["info"].end(); it++) { Nozzle nozzle_obj; @@ -5752,18 +5748,21 @@ void MachineObject::parse_new_info(json print) if (device.contains("extruder")) { json const& extruder = device["extruder"]; - m_extder_data = ExtderData(); - m_extder_data.total_extder_count = get_flag_bits(extruder["state"].get(), 0, 3); + auto extder_data = ExtderData(); + extder_data.total_extder_count = get_flag_bits(extruder["state"].get(), 0, 3); - if (nozzle_selected_count > 0) { - nozzle_selected_count--; - } else { - m_extder_data.current_extder_id = get_flag_bits(extruder["state"].get(), 4, 3); - m_extder_data.target_extder_id = get_flag_bits(extruder["state"].get(), 8, 3); - m_extder_data.switch_extder_state = (ExtruderSwitchState) get_flag_bits(extruder["state"].get(), 12, 2); - m_extder_data.current_loading_extder_id = get_flag_bits(extruder["state"].get(), 15, 3); + + extder_data.current_extder_id = get_flag_bits(extruder["state"].get(), 4, 3); + extder_data.target_extder_id = get_flag_bits(extruder["state"].get(), 8, 3); + extder_data.switch_extder_state = (ExtruderSwitchState) get_flag_bits(extruder["state"].get(), 12, 2); + + if (extder_data.switch_extder_state != ExtruderSwitchState::ES_SWITCHING && extder_data.target_extder_id == extder_data.current_extder_id) { + flag_update_nozzle = true; } + extder_data.current_loading_extder_id = get_flag_bits(extruder["state"].get(), 15, 3); + extder_data.current_busy_for_loading = get_flag_bits(extruder["state"].get(), 19); + for (auto it = extruder["info"].begin(); it != extruder["info"].end(); it++) { Extder extder_obj; @@ -5813,19 +5812,21 @@ void MachineObject::parse_new_info(json print) } } } - m_extder_data.extders.push_back(extder_obj); + extder_data.extders.push_back(extder_obj); } - if (m_extder_data.extders.size() <= 0) { + if (extder_data.extders.size() <= 0) { // def data - m_extder_data.current_extder_id = 0; - m_extder_data.target_extder_id = 0; - m_extder_data.total_extder_count = 1; + extder_data.current_extder_id = 0; + extder_data.target_extder_id = 0; + extder_data.total_extder_count = 1; Extder nozzle; - m_extder_data.extders.push_back(nozzle); + extder_data.extders.push_back(nozzle); } + + m_extder_data = extder_data; } - } + } } bool MachineObject::is_nozzle_data_invalid() diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 63e9f3eaa..1c3b85d8f 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -221,6 +221,7 @@ struct ExtderData int target_extder_id{0}; int total_extder_count {0}; int current_loading_extder_id {-1}; + bool current_busy_for_loading{false}; ExtruderSwitchState switch_extder_state; std::vector extders; }; @@ -917,6 +918,7 @@ public: int xcam_filament_tangle_detect_count = 0; int ams_print_option_count = 0; int nozzle_selected_count = 0; + bool flag_update_nozzle = {true}; //supported features bool is_support_chamber_edit{false}; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 4aea7cd33..9b2a2d3b6 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2161,10 +2161,11 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co Bind(wxEVT_WEBREQUEST_STATE, &StatusPanel::on_webrequest_state, this); Bind(wxCUSTOMEVT_SET_TEMP_FINISH, [this](wxCommandEvent e) { - int id = e.GetInt(); + int id = e.GetInt(); if (id == m_tempCtrl_bed->GetType()) { on_set_bed_temp(); } else if (id == m_tempCtrl_nozzle->GetType()) { + if (e.GetString() == wxString::Format("%d", MAIN_NOZZLE_ID)) { on_set_nozzle_temp(MAIN_NOZZLE_ID); } else if (e.GetString() == wxString::Format("%d", DEPUTY_NOZZLE_ID)) { @@ -2190,6 +2191,8 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co m_tempCtrl_bed->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_set_focus), NULL, this); m_tempCtrl_nozzle->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this); m_tempCtrl_nozzle->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_set_focus), NULL, this); + m_tempCtrl_nozzle_deputy->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this); + m_tempCtrl_nozzle_deputy->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_set_focus), NULL, this); m_tempCtrl_chamber->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_cham_temp_kill_focus), NULL, this); m_tempCtrl_chamber->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_cham_temp_set_focus), NULL, this); m_switch_lamp->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_lamp_switch), NULL, this); @@ -2256,6 +2259,10 @@ StatusPanel::~StatusPanel() m_tempCtrl_bed->Disconnect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_set_focus), NULL, this); m_tempCtrl_nozzle->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this); m_tempCtrl_nozzle->Disconnect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_set_focus), NULL, this); + + m_tempCtrl_nozzle_deputy->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this); + m_tempCtrl_nozzle_deputy->Disconnect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_set_focus), NULL, this); + m_switch_lamp->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_lamp_switch), NULL, this); /*m_switch_nozzle_fan->Disconnect(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); m_switch_printing_fan->Disconnect(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_nozzle_fan_switch), NULL, this); @@ -2853,24 +2860,28 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) if (m_temp_nozzle_timeout > 0) { m_temp_nozzle_timeout--; } else { - if (!nozzle_temp_input) { m_tempCtrl_nozzle->SetTagTemp((int) obj->m_extder_data.extders[MAIN_NOZZLE_ID].target_temp); } + if (!nozzle_temp_input) { + m_tempCtrl_nozzle->SetTagTemp((int) obj->m_extder_data.extders[MAIN_NOZZLE_ID].target_temp); + } } if (m_temp_nozzle_deputy_timeout > 0) { m_temp_nozzle_deputy_timeout--; } else { - if (!nozzle_temp_input && nozzle_num >= 2) { m_tempCtrl_nozzle_deputy->SetTagTemp((int)obj->m_extder_data.extders[DEPUTY_NOZZLE_ID].target_temp); } + if (!nozzle_temp_input && nozzle_num >= 2) { + m_tempCtrl_nozzle_deputy->SetTagTemp((int)obj->m_extder_data.extders[DEPUTY_NOZZLE_ID].target_temp); + } } - if ((obj->m_extder_data.extders[0].target_temp - obj->m_extder_data.extders[0].temp) >= TEMP_THRESHOLD_VAL) { + if ((obj->m_extder_data.extders[MAIN_NOZZLE_ID].target_temp - obj->m_extder_data.extders[MAIN_NOZZLE_ID].temp) >= TEMP_THRESHOLD_VAL) { m_tempCtrl_nozzle->SetIconActive(); } else { m_tempCtrl_nozzle->SetIconNormal(); } if (nozzle_num >= 2 && obj->m_extder_data.extders.size() > 1){ - if ((obj->m_extder_data.extders[1].target_temp - obj->m_extder_data.extders[1].temp) >= TEMP_THRESHOLD_VAL) { + if ((obj->m_extder_data.extders[DEPUTY_NOZZLE_ID].target_temp - obj->m_extder_data.extders[DEPUTY_NOZZLE_ID].temp) >= TEMP_THRESHOLD_VAL) { m_tempCtrl_nozzle_deputy->SetIconActive(); } else { @@ -2913,17 +2924,18 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) m_extruderImage[select_index]->update(ExtruderState::FILLED_LOAD, ExtruderState::FILLED_UNLOAD); /*current*/ - if (obj->m_extder_data.current_extder_id == 0xf) { - m_extruderImage[select_index]->setExtruderUsed(""); - m_nozzle_btn_panel->updateState(""); - } else if (obj->m_extder_data.current_extder_id == MAIN_NOZZLE_ID) { - m_extruderImage[select_index]->setExtruderUsed("right"); - m_nozzle_btn_panel->updateState("right"); - } else if (obj->m_extder_data.current_extder_id == DEPUTY_NOZZLE_ID) { - m_extruderImage[select_index]->setExtruderUsed("left"); - m_nozzle_btn_panel->updateState("left"); + if (obj->flag_update_nozzle) { + if (obj->m_extder_data.current_extder_id == 0xf) { + m_extruderImage[select_index]->setExtruderUsed(""); + m_nozzle_btn_panel->updateState(""); + } else if (obj->m_extder_data.current_extder_id == MAIN_NOZZLE_ID) { + m_extruderImage[select_index]->setExtruderUsed("right"); + m_nozzle_btn_panel->updateState("right"); + } else if (obj->m_extder_data.current_extder_id == DEPUTY_NOZZLE_ID) { + m_extruderImage[select_index]->setExtruderUsed("left"); + m_nozzle_btn_panel->updateState("left"); + } } - Layout(); } else { m_nozzle_btn_panel->Hide(); m_extruder_book->SetSelection(m_nozzle_num); @@ -3162,24 +3174,19 @@ void StatusPanel::update_ams(MachineObject *obj) m_ams_control->SetExtruder(false, true, ext.snow.ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); } } - - - //m_ams_control->SetAmsStep(std::to_string(VIRTUAL_TRAY_MAIN_ID), "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3); - //m_ams_control->SetExtruder(true, true, std::to_string(VIRTUAL_TRAY_MAIN_ID), *wxRED); } bool ams_loading_state = false; auto ams_status_sub = obj->ams_status_sub; int vt_tray_id = VIRTUAL_TRAY_DEPUTY_ID; - /*if (obj->is_enable_np) { - if (obj->m_extder_data.current_loading_extder_id == MAIN_NOZZLE_ID || obj->m_extder_data.current_loading_extder_id == DEPUTY_NOZZLE_ID) { + if (obj->is_enable_np) { + if (obj->m_extder_data.current_busy_for_loading) { ams_loading_state = true; } - } else if(obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE){ + } else if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { ams_loading_state = true; - }*/ - + } if (ams_loading_state) { update_filament_step(); @@ -3346,7 +3353,6 @@ void StatusPanel::update_ams_insert_material(MachineObject* obj) { void StatusPanel::update_ams_control_state(std::string ams_id, std::string slot_id) { - return; // set default value to true bool enable[ACTION_BTN_COUNT]; enable[ACTION_BTN_LOAD] = true; @@ -3362,10 +3368,13 @@ void StatusPanel::update_ams_control_state(std::string ams_id, std::string slot_ else { /*switch now*/ bool in_switch_filament = false; - for ( auto ext : obj->m_extder_data.extders) { - if (ext.ams_stat == AmsStatusMain::AMS_STATUS_MAIN_FILAMENT_CHANGE) { + + if (obj->is_enable_np) { + if (obj->m_extder_data.current_busy_for_loading) { in_switch_filament = true; } + } else if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { + in_switch_filament = true; } if (in_switch_filament) { @@ -4011,7 +4020,7 @@ void StatusPanel::on_set_nozzle_temp(int nozzle_id) if (nozzle_id == DEPUTY_NOZZLE_ID) { wxString str = m_tempCtrl_nozzle_deputy->GetTextCtrl()->GetValue(); if (str.ToLong(&nozzle_temp) && obj) { - // set_hold_count(m_temp_nozzle_deputy_timeout); + set_hold_count(m_temp_nozzle_deputy_timeout); if (nozzle_temp > m_tempCtrl_nozzle_deputy->get_max_temp()) { nozzle_temp = m_tempCtrl_nozzle_deputy->get_max_temp(); m_tempCtrl_nozzle_deputy->SetTagTemp(wxString::Format("%d", nozzle_temp)); @@ -4055,7 +4064,6 @@ void StatusPanel::on_ams_load(SimpleEvent &event) void StatusPanel::update_filament_step() { - //m_ams_control->UpdateStepCtrl(obj->is_filament_at_extruder()); m_filament_step->UpdateStepCtrl(obj->is_filament_at_extruder()); if (!obj->is_filament_at_extruder()) { m_is_load_with_temp = true; @@ -4654,7 +4662,7 @@ void StatusPanel::on_nozzle_fan_switch(wxCommandEvent &event) m_fan_control_popup->Destroy(); m_fan_control_popup = nullptr; } - + if (!obj) return; @@ -4776,7 +4784,7 @@ void StatusPanel::on_xyz_abs(wxCommandEvent &event) void StatusPanel::on_nozzle_selected(wxCommandEvent &event) { if (obj) { - obj->m_extder_data.current_extder_id = event.GetInt(); + obj->flag_update_nozzle = false; auto nozzle_id = event.GetInt();obj->command_select_extruder(nozzle_id); } } @@ -4851,6 +4859,7 @@ void StatusPanel::set_default() speed_lvl_timeout = 0; m_switch_lamp_timeout = 0; m_temp_nozzle_timeout = 0; + m_temp_nozzle_deputy_timeout = 0; m_temp_bed_timeout = 0; m_temp_chamber_timeout = 0; m_switch_nozzle_fan_timeout = 0; diff --git a/src/slic3r/GUI/Widgets/FilamentLoad.cpp b/src/slic3r/GUI/Widgets/FilamentLoad.cpp index 6aff47be7..26f9c0522 100644 --- a/src/slic3r/GUI/Widgets/FilamentLoad.cpp +++ b/src/slic3r/GUI/Widgets/FilamentLoad.cpp @@ -45,10 +45,11 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ m_filament_load_steps->Idle(); m_filament_unload_steps->Idle(); m_filament_vt_load_steps->Idle(); - this->Hide(); + if (IsShown()) {Hide(); } return; } - this->Show(); + + if (!IsShown()) {Show();} wxString step_str = wxEmptyString; if (item_idx < FilamentStep::STEP_COUNT) { step_str = FILAMENT_CHANGE_STEP_STRING[item_idx]; @@ -58,36 +59,36 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ if (f_type == FilamentStepType::STEP_TYPE_LOAD) { step_control = m_filament_load_steps; if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) { - if (this->GetSelection() != 0) { - this->SetSelection(0); + if (GetSelection() != 0) { + SetSelection(0); } m_filament_load_steps->SelectItem(m_filament_load_steps->GetItemUseText(step_str)); } else { m_filament_load_steps->Idle(); - this->Hide(); - this->Layout(); + Hide(); + Layout(); } } else if (f_type == FilamentStepType::STEP_TYPE_UNLOAD) { step_control = m_filament_unload_steps; if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) { if (GetSelection() != 1) { - this->SetSelection(1); - this->Layout(); + SetSelection(1); + Layout(); } m_filament_unload_steps->SelectItem(m_filament_unload_steps->GetItemUseText(step_str)); } else { m_filament_unload_steps->Idle(); - this->Hide(); - this->Layout(); + Hide(); + Layout(); } } else if (f_type == FilamentStepType::STEP_TYPE_VT_LOAD) { step_control = m_filament_vt_load_steps; - this->SetSelection(2); - this->Layout(); + SetSelection(2); + Layout(); if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) { if (item_idx == STEP_CONFIRM_EXTRUDED) { m_filament_vt_load_steps->SelectItem(2); @@ -98,8 +99,8 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ } else { m_filament_vt_load_steps->Idle(); - this->Hide(); - this->Layout(); + Hide(); + Layout(); } } else { @@ -110,8 +111,8 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ } else { m_filament_load_steps->Idle(); - this->Hide(); - this->Layout(); + Hide(); + Layout(); } } @@ -130,7 +131,7 @@ void FilamentLoad::UpdateStepCtrl(bool is_extrusion_exist) { is_extrusion = true; //Forgot what it means, need to update dynamically - if (m_ams_model == AMSModel::GENERIC_AMS || m_ext_model == AMSModel::GENERIC_AMS) { + if (m_ams_model == AMSModel::GENERIC_AMS || m_ext_model == AMSModel::N3F_AMS) { if (is_extrusion) { m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]); m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);