FIX:update load/unload command for n3s

Change-Id: Ic4655f368a0ffb0e16139dee1fd1ffc34236e9eb
This commit is contained in:
tao wang 2025-03-04 12:08:54 +08:00 committed by lane.wei
parent 6a9fd6678e
commit fc32042639
3 changed files with 69 additions and 72 deletions

View File

@ -2081,72 +2081,71 @@ int MachineObject::command_set_chamber(int temp)
return this->publish_json(j.dump(), 1);
}
int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp)
{
assert(!is_enable_np);
//int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp)
//{
// assert(!is_enable_np);
//
// BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp;
//
// if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP;
// if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP;
// int result = 0;
//
//
// //command
// if (is_support_command_ams_switch) {
// command_ams_change_filament(tray_index, old_temp, new_temp);
// }
// //gcode
// else {
// std::string gcode = "";
// if (tray_index == 255) {
// gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
// }
// else {
// // include VIRTUAL_TRAY_MAIN_ID
// gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
// boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
// boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
// }
//
// result = this->publish_gcode(gcode);
// }
//
// return result;
//}
BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp;
if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP;
if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP;
std::string gcode = "";
int result = 0;
//command
if (is_support_command_ams_switch) {
command_ams_change_filament(tray_index, old_temp, new_temp);
}
else {
std::string gcode = "";
if (tray_index == 255) {
gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
}
else {
// include VIRTUAL_TRAY_MAIN_ID
gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
}
result = this->publish_gcode(gcode);
}
return result;
}
int MachineObject::command_ams_change_filament(int tray_id, int old_temp, int new_temp)
int MachineObject::command_ams_change_filament(bool load, std::string ams_id, std::string slot_id, int old_temp, int new_temp)
{
json j;
j["print"]["command"] = "ams_change_filament";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["target"] = tray_id;
j["print"]["curr_temp"] = old_temp;
j["print"]["tar_temp"] = new_temp;
return this->publish_json(j.dump());
try {
auto tray_id = 0;
if (ams_id < "16") {
tray_id = atoi(ams_id.c_str()) * 4 + atoi(slot_id.c_str());
}
int MachineObject::command_ams_change_filament2(bool load_or_unload, int ams_id, int slot_id, int old_temp, int new_temp)
{
assert(is_enable_np);
json j;
j["print"]["command"] = "ams_change_filament";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
//j["print"]["target"] = ams_id == VIRTUAL_TRAY_MAIN_ID?VIRTUAL_TRAY_DEPUTY_ID:slot_id; /*this is not used in new protocol*/
j["print"]["curr_temp"] = old_temp;
j["print"]["tar_temp"] = new_temp;
j["print"]["ams_id"] = ams_id;
j["print"]["ams_id"] = atoi(ams_id.c_str());
// the new protocol
if (load_or_unload)
{
j["print"]["slot_id"] = slot_id;
}
else
{
if (!load) {
j["print"]["target"] = 255;
j["print"]["slot_id"] = 255; // the new protocol to mark unload
} else {
if (tray_id == 0) {
j["print"]["target"] = atoi(ams_id.c_str());
} else {
j["print"]["target"] = tray_id;
}
j["print"]["slot_id"] = atoi(slot_id.c_str());
}
} catch (const std::exception &) {}
return this->publish_json(j.dump());
}

View File

@ -1120,9 +1120,8 @@ public:
int command_set_nozzle_new(int nozzle_id, int temp);
int command_set_chamber(int temp);
// ams controls
int command_ams_switch(int tray_index, int old_temp = 210, int new_temp = 210);
int command_ams_change_filament(int tray_id, int old_temp = 210, int new_temp = 210);
int command_ams_change_filament2(bool load_or_unload, int ams_id, int slot_id, int old_temp = 210, int new_temp = 210);
//int command_ams_switch(int tray_index, int old_temp = 210, int new_temp = 210);
int command_ams_change_filament(bool load, std::string ams_id, std::string slot_id, int old_temp = 210, int new_temp = 210);
int command_ams_user_settings(int ams_id, bool start_read_opt, bool tray_read_opt, bool remain_flag = false);
int command_ams_switch_filament(bool switch_filament);
int command_ams_air_print_detect(bool air_print_detect);

View File

@ -4175,12 +4175,11 @@ void StatusPanel::on_ams_load_curr()
if (obj->is_enable_np) {
try {
if (!curr_ams_id.empty() && !curr_can_id.empty()) {
obj->command_ams_change_filament2(true, stoi(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 {
obj->command_ams_switch(254, old_temp, new_temp);
obj->command_ams_change_filament(true, "254", "0", old_temp, new_temp);
}
}
@ -4216,12 +4215,12 @@ void StatusPanel::on_ams_load_curr()
if (obj->is_enable_np) {
try {
if (!curr_ams_id.empty() && !curr_can_id.empty()) {
obj->command_ams_change_filament2(true, stoi(curr_ams_id), stoi(curr_can_id), old_temp, new_temp);
obj->command_ams_change_filament(true, curr_ams_id, curr_can_id, old_temp, new_temp);
}
}
catch (...){}
} else {
obj->command_ams_switch(tray_index, old_temp, new_temp);
obj->command_ams_change_filament(true, curr_ams_id, curr_can_id, old_temp, new_temp);
}
}
}
@ -4273,17 +4272,17 @@ void StatusPanel::on_ams_switch(SimpleEvent &event)
void StatusPanel::on_ams_unload(SimpleEvent &event)
{
if (obj) {
if (obj->is_enable_np) {
try {
std::string curr_ams_id = m_ams_control->GetCurentAms();
std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id);
if (obj->is_enable_np) {
try {
for (auto ext : obj->m_extder_data.extders) {
if (ext.snow.ams_id == curr_ams_id && ext.snow.slot_id == curr_can_id) { obj->command_ams_change_filament2(false, stoi(curr_ams_id), 0); }
if (ext.snow.ams_id == curr_ams_id && ext.snow.slot_id == curr_can_id) { obj->command_ams_change_filament(false, curr_ams_id, "255"); }
}
} catch (...) {}
} else {
obj->command_ams_switch(255);
obj->command_ams_change_filament(false, curr_ams_id, "255");
}
}
}