ENH:supports new fields for flag3

jira:[none]

Change-Id: I013c7b843f3f7d5156a8d209572da2bc078e9191
This commit is contained in:
tao wang 2025-04-08 16:02:35 +08:00 committed by lane.wei
parent 65868cf603
commit 106d9865c3
5 changed files with 25 additions and 29 deletions

View File

@ -796,7 +796,7 @@ bool MachineObject::is_extrusion_cali_finished()
void MachineObject::_parse_tray_now(std::string tray_now)
{
m_tray_now = tray_now;
m_tray_now = tray_now;
if (tray_now.empty()) {
return;
} else {
@ -3779,6 +3779,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("flag3")) {
int flag3 = jj["flag3"].get<int>();
is_support_filament_setting_inprinting = get_flag_bits(flag3, 3);
is_enable_ams_np = get_flag_bits(flag3, 9);
}
}
if (!key_field_only) {
@ -4468,12 +4469,12 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj["ams"]["version"].is_number())
ams_version = jj["ams"]["version"].get<int>();
}
if (jj["ams"].contains("tray_now")) {
this->_parse_tray_now(jj["ams"]["tray_now"].get<std::string>());
}
if (jj["ams"].contains("tray_tar")) {
m_tray_tar = jj["ams"]["tray_tar"].get<std::string>();
}
if (jj["ams"].contains("tray_now")) {
_parse_tray_now(jj["ams"]["tray_now"].get<std::string>());
}
if (jj["ams"].contains("ams_rfid_status"))
ams_rfid_status = jj["ams"]["ams_rfid_status"].get<int>();

View File

@ -1310,6 +1310,7 @@ public:
/*for more extruder*/
bool is_enable_np{ false };
bool is_enable_ams_np{ false };
ExtderData m_extder_data;
NozzleData m_nozzle_data;

View File

@ -3283,7 +3283,7 @@ void StatusPanel::update_ams(MachineObject *obj)
} else {
m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id);
m_ams_control->SetExtruder(ext.ext_has_filament, MAIN_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id);
}
/*left*/
@ -3298,7 +3298,7 @@ void StatusPanel::update_ams(MachineObject *obj)
} else {
m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id);
m_ams_control->SetExtruder(ext.ext_has_filament, DEPUTY_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id);
}
//}
@ -4192,9 +4192,10 @@ void StatusPanel::on_ams_load_curr()
;
}
if (obj->is_enable_np) {
if (obj->is_enable_np || obj->is_enable_ams_np) {
try {
if (!curr_ams_id.empty() && !curr_can_id.empty()) { obj->command_ams_change_filament(true, curr_ams_id, "0", old_temp, new_temp);
if (!curr_ams_id.empty() && !curr_can_id.empty()) {
obj->command_ams_change_filament(true, curr_ams_id, "0", old_temp, new_temp);
}
} catch (...) {}
} else {
@ -4257,6 +4258,8 @@ void StatusPanel::on_ams_load_vams(wxCommandEvent& event) {
void StatusPanel::on_ams_switch(SimpleEvent &event)
{
if(obj){
/*right*/
if (obj->m_extder_data.extders.size() > 0) {
auto ext = obj->m_extder_data.extders[MAIN_NOZZLE_ID];
if (ext.ext_has_filament) {
@ -4268,7 +4271,7 @@ void StatusPanel::on_ams_switch(SimpleEvent &event)
} else {
m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id);
m_ams_control->SetExtruder(ext.ext_has_filament, MAIN_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id);
}
/*left*/
@ -4283,7 +4286,7 @@ void StatusPanel::on_ams_switch(SimpleEvent &event)
} else {
m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id);
m_ams_control->SetExtruder(ext.ext_has_filament, DEPUTY_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id);
}
}
}
@ -4550,20 +4553,13 @@ void StatusPanel::on_ams_refresh_rfid(wxCommandEvent &event)
auto has_filament_at_extruder = false;
auto use_new_command = false;
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 {
if (obj->is_enable_np || obj->is_enable_ams_np) {
use_new_command = true;
if (ams_it->second->nozzle < obj->m_extder_data.extders.size()) {
has_filament_at_extruder = obj->m_extder_data.extders[ams_it->second->nozzle].ext_has_filament;
}
} else {
has_filament_at_extruder = obj->is_filament_at_extruder();
}
if (has_filament_at_extruder) {

View File

@ -1465,19 +1465,17 @@ bool AMSControl::Enable(bool enable)
return wxWindow::Enable(enable);
}
void AMSControl::SetExtruder(bool on_off, std::string ams_id, std::string slot_id)
void AMSControl::SetExtruder(bool on_off, int nozzle_id, std::string ams_id, std::string slot_id)
{
AmsItem *item = nullptr;
if (m_ams_item_list.find(ams_id) != m_ams_item_list.end()) { item = m_ams_item_list[ams_id]; }
if (!item) {
return;
}
if (!on_off) {
m_extruder->OnAmsLoading(false, item->get_nozzle_id());
} else {
if (on_off && item) {
auto col = item->GetTagColr(slot_id);
m_extruder->OnAmsLoading(true, item->get_nozzle_id(), col);
m_extruder->OnAmsLoading(true, nozzle_id, col);
}
else {
m_extruder->OnAmsLoading(false, nozzle_id);
}
}

View File

@ -170,7 +170,7 @@ public:
void AddAms(std::vector<AMSinfo> single_info, const std::string &series_name, const std::string &printer_type, AMSPanelPos pos = AMSPanelPos::LEFT_PANEL);
void AddAmsPreview(std::vector<AMSinfo>single_info, AMSPanelPos pos);
//void AddExtraAms(std::vector<AMSinfo>single_info);
void SetExtruder(bool on_off, std::string ams_id, std::string slot_id);
void SetExtruder(bool on_off, int nozzle_id, std::string ams_id, std::string slot_id);
void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SwitchAms(std::string ams_id);