OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::ExtderSystemParser Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevExtruderSystem.h>

Static Public Member Functions

static void ParseV1_0 (const nlohmann::json &extruder_json, DevExtderSystem *system)
static void ParseV2_0 (const nlohmann::json &extruder_json, DevExtderSystem *system)

Detailed Description

Member Function Documentation

◆ ParseV1_0()

void Slic3r::ExtderSystemParser::ParseV1_0 ( const nlohmann::json & extruder_json,
DevExtderSystem * system )
static
203 {
204 if (system->GetTotalExtderCount() != 1)
205 {
206 return;
207 }
208
209 if (print_json.contains("nozzle_temper") && print_json["nozzle_temper"].is_number())
210 {
211 system->m_extders[MAIN_EXTRUDER_ID].m_cur_temp = print_json["nozzle_temper"].get<float>();
212 }
213
214 if (print_json.contains("nozzle_target_temper") && print_json["nozzle_target_temper"].is_number())
215 {
216 system->m_extders[MAIN_EXTRUDER_ID].m_target_temp = print_json["nozzle_target_temper"].get<float>();
217 }
218
219 if (print_json.contains("ams") && print_json["ams"].contains("tray_tar"))
220 {
221 const std::string& tray_tar = print_json["ams"]["tray_tar"].get<std::string>();
222 if (!tray_tar.empty())
223 {
224 int tray_tar_int = atoi(tray_tar.c_str());
225 if (tray_tar_int == VIRTUAL_TRAY_MAIN_ID) /*255 means unloading*/ {
226 system->m_extders[MAIN_EXTRUDER_ID].m_star.ams_id = "";
227 system->m_extders[MAIN_EXTRUDER_ID].m_star.slot_id = std::to_string(VIRTUAL_TRAY_MAIN_ID);
228 }
229 else if (tray_tar_int == VIRTUAL_TRAY_DEPUTY_ID) /*254 means loading ext spool*/ {
230 system->m_extders[MAIN_EXTRUDER_ID].m_star.ams_id = std::to_string(VIRTUAL_TRAY_MAIN_ID);
231 system->m_extders[MAIN_EXTRUDER_ID].m_star.slot_id = "0";
232 }
233 else
234 {
235 if (tray_tar_int >= 0x80 && tray_tar_int <= 0x87)
236 {
237 system->m_extders[MAIN_EXTRUDER_ID].m_star.ams_id = std::to_string(tray_tar_int);
238 }
239 else
240 {
241 system->m_extders[MAIN_EXTRUDER_ID].m_star.ams_id = std::to_string(tray_tar_int >> 2);
242 }
243
244 system->m_extders[MAIN_EXTRUDER_ID].m_star.slot_id = std::to_string(tray_tar_int & 0x3);
245 }
246 }
247 }
248
249 if (print_json.contains("ams") && print_json["ams"].contains("tray_now"))
250 {
251 const std::string& tray_now = print_json["ams"]["tray_now"].get<std::string>();
252 if (!tray_now.empty())
253 {
254 int tray_now_int = atoi(tray_now.c_str());
255 if (tray_now_int == VIRTUAL_TRAY_MAIN_ID)
256 {
257 system->m_extders[MAIN_EXTRUDER_ID].m_snow.ams_id = "";
258 system->m_extders[MAIN_EXTRUDER_ID].m_snow.slot_id = "";
259 }
260 else if (tray_now_int == VIRTUAL_TRAY_DEPUTY_ID)
261 {
262 system->m_extders[MAIN_EXTRUDER_ID].m_snow.ams_id = std::to_string(VIRTUAL_TRAY_MAIN_ID);
263 system->m_extders[MAIN_EXTRUDER_ID].m_snow.slot_id = "0";
264 }
265 else
266 {
267 if (tray_now_int >= 0x80 && tray_now_int <= 0x87)
268 {
269 system->m_extders[MAIN_EXTRUDER_ID].m_snow.ams_id = std::to_string(tray_now_int);
270 }
271 else
272 {
273 system->m_extders[MAIN_EXTRUDER_ID].m_snow.ams_id = std::to_string(tray_now_int >> 2);
274 }
275
276 system->m_extders[MAIN_EXTRUDER_ID].m_snow.slot_id = std::to_string(tray_now_int & 0x3);
277 }
278 }
279 }
280
281 system->m_current_busy_for_loading = false;
282 system->m_current_loading_extder_id = INVALID_EXTRUDER_ID;
283 if (!system->m_extders[MAIN_EXTRUDER_ID].m_star.ams_id.empty())
284 {
285 system->m_current_busy_for_loading = (system->m_extders[MAIN_EXTRUDER_ID].m_snow != system->m_extders[MAIN_EXTRUDER_ID].m_star);
286 if (system->m_current_busy_for_loading)
287 {
288 system->m_current_loading_extder_id = MAIN_EXTRUDER_ID;
289 }
290 }
291 }
#define VIRTUAL_TRAY_DEPUTY_ID
Definition DevDefs.h:90
#define VIRTUAL_TRAY_MAIN_ID
Definition DevDefs.h:89
#define MAIN_EXTRUDER_ID
Definition DevDefs.h:101
#define INVALID_EXTRUDER_ID
Definition DevDefs.h:104

References Slic3r::DevExtderSystem::GetTotalExtderCount(), INVALID_EXTRUDER_ID, Slic3r::DevExtderSystem::m_current_busy_for_loading, Slic3r::DevExtderSystem::m_current_loading_extder_id, Slic3r::DevExtderSystem::m_extders, MAIN_EXTRUDER_ID, VIRTUAL_TRAY_DEPUTY_ID, and VIRTUAL_TRAY_MAIN_ID.

Referenced by Slic3r::MachineObject::parse_json().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ParseV2_0()

void Slic3r::ExtderSystemParser::ParseV2_0 ( const nlohmann::json & extruder_json,
DevExtderSystem * system )
static
294 {
295 system->m_total_extder_count = DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 0, 4);
296 if (system->m_current_extder_id != DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 4, 4))
297 {
298 system->Owner()->targ_nozzle_id_from_pc = INVALID_EXTRUDER_ID;
299 system->m_current_extder_id = DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 4, 4);
300 }
301 else if (system->m_switch_extder_state == ES_SWITCHING_FAILED)
302 {
303 system->Owner()->targ_nozzle_id_from_pc = INVALID_EXTRUDER_ID;
304 }
305
306 system->m_target_extder_id = DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 8, 4);
307 system->m_switch_extder_state = (DevExtderSwitchState)DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 12, 3);
308 system->m_current_loading_extder_id = DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 15, 4);
309 system->m_current_busy_for_loading = DevUtil::get_flag_bits(extruder_json["state"].get<int>(), 19);
310
311 system->m_extders.clear();
312 for (auto it = extruder_json["info"].begin(); it != extruder_json["info"].cend(); it++)
313 {
314
315 DevExtder extder_obj(system);
316
317 const auto& njon = it.value();
318 extder_obj.SetExtId(njon["id"].get<int>());
319
320 extder_obj.m_filam_bak.clear();
321 const json& filam_bak_items = njon["filam_bak"];
322 for (const auto& filam_bak_item : filam_bak_items)
323 {
324 const auto& filam_bak_val = filam_bak_item.get<int>();
325 extder_obj.m_filam_bak.emplace_back(filam_bak_val);
326 }
327
328 extder_obj.m_ext_has_filament = (DevUtil::get_flag_bits(njon["info"].get<int>(), 1) != 0);
329 extder_obj.m_buffer_has_filament = (DevUtil::get_flag_bits(njon["info"].get<int>(), 2) != 0);
330 extder_obj.m_has_nozzle = (DevUtil::get_flag_bits(njon["info"].get<int>(), 3) != 0);
331 extder_obj.m_cur_temp = DevUtil::get_flag_bits(njon["temp"].get<int>(), 0, 16);
332 extder_obj.m_target_temp = DevUtil::get_flag_bits(njon["temp"].get<int>(), 16, 16);
333
334 extder_obj.m_spre.slot_id = std::to_string(DevUtil::get_flag_bits(njon["spre"].get<int>(), 0, 8));
335 extder_obj.m_spre.ams_id = std::to_string(DevUtil::get_flag_bits(njon["spre"].get<int>(), 8, 8));
336
337 extder_obj.m_snow.slot_id = std::to_string(DevUtil::get_flag_bits(njon["snow"].get<int>(), 0, 8));
338 extder_obj.m_snow.ams_id = std::to_string(DevUtil::get_flag_bits(njon["snow"].get<int>(), 8, 8));
339
340 extder_obj.m_star.slot_id = std::to_string(DevUtil::get_flag_bits(njon["star"].get<int>(), 0, 8));
341 extder_obj.m_star.ams_id = std::to_string(DevUtil::get_flag_bits(njon["star"].get<int>(), 8, 8));
342
343 extder_obj.m_ams_stat = DevUtil::get_flag_bits(njon["stat"].get<int>(), 0, 16);
344 extder_obj.m_rfid_stat = DevUtil::get_flag_bits(njon["stat"].get<int>(), 16, 16);
345
346 //current nozzle info
347 extder_obj.m_current_nozzle_id = njon["hnow"].get<int>();
348 system->m_extders.push_back(extder_obj);
349 }
350 }
static int get_flag_bits(std::string str, int start, int count=1)
Definition DevUtil.cpp:18
T * begin(Slic3r::Mat< N, M, T > &mat)
Definition Point.hpp:838
nlohmann::json json
Definition AssembleList.cpp:42
DevExtderSwitchState
Definition DevExtruderSystem.h:33
@ ES_SWITCHING_FAILED
Definition DevExtruderSystem.h:37

References Slic3r::DevAmsSlotInfo::ams_id, Slic3r::ES_SWITCHING_FAILED, Slic3r::DevUtil::get_flag_bits(), INVALID_EXTRUDER_ID, Slic3r::DevExtder::m_ams_stat, Slic3r::DevExtder::m_buffer_has_filament, Slic3r::DevExtder::m_cur_temp, Slic3r::DevExtderSystem::m_current_busy_for_loading, Slic3r::DevExtderSystem::m_current_extder_id, Slic3r::DevExtderSystem::m_current_loading_extder_id, Slic3r::DevExtder::m_current_nozzle_id, Slic3r::DevExtder::m_ext_has_filament, Slic3r::DevExtderSystem::m_extders, Slic3r::DevExtder::m_filam_bak, Slic3r::DevExtder::m_has_nozzle, Slic3r::DevExtder::m_rfid_stat, Slic3r::DevExtder::m_snow, Slic3r::DevExtder::m_spre, Slic3r::DevExtder::m_star, Slic3r::DevExtderSystem::m_switch_extder_state, Slic3r::DevExtderSystem::m_target_extder_id, Slic3r::DevExtder::m_target_temp, Slic3r::DevExtderSystem::m_total_extder_count, Slic3r::DevExtderSystem::Owner(), Slic3r::DevExtder::SetExtId(), Slic3r::DevAmsSlotInfo::slot_id, and Slic3r::MachineObject::targ_nozzle_id_from_pc.

Referenced by Slic3r::MachineObject::parse_new_info().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: