From 1eacc5d38f97ba63febc5da8fd8039666e8c2645 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 1 Nov 2022 16:36:37 +0800 Subject: [PATCH] NEW: parse camera recording and resolution fields Change-Id: I8aa5af228d6ad50ff495577652c2ba716f6cc3b3 Signed-off-by: Stone Li --- src/slic3r/GUI/CameraPopup.cpp | 2 +- src/slic3r/GUI/DeviceManager.cpp | 32 +++++++++++++++++++++++++++----- src/slic3r/GUI/DeviceManager.hpp | 4 +++- src/slic3r/GUI/StatusPanel.cpp | 19 +++++-------------- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/slic3r/GUI/CameraPopup.cpp b/src/slic3r/GUI/CameraPopup.cpp index 42dfcda629..2683b347e7 100644 --- a/src/slic3r/GUI/CameraPopup.cpp +++ b/src/slic3r/GUI/CameraPopup.cpp @@ -54,7 +54,7 @@ CameraPopup::CameraPopup(wxWindow *parent, MachineObject* obj) m_text_recording->SetForegroundColour(TEXT_COL); m_switch_recording = new SwitchButton(m_panel); if (obj) - m_switch_recording->SetValue(obj->camera_recording); + m_switch_recording->SetValue(obj->camera_recording_when_printing); top_sizer->Add(m_text_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT | wxALL, FromDIP(5)); top_sizer->Add(m_switch_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, FromDIP(5)); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index ca6d03baa0..b1aec64ff2 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1148,7 +1148,12 @@ bool MachineObject::has_timelapse() return camera_timelapse; } -bool MachineObject::has_recording() +bool MachineObject::is_recording_enable() +{ + return camera_recording_when_printing; +} + +bool MachineObject::is_recording() { return camera_recording; } @@ -1621,6 +1626,7 @@ void MachineObject::reset() last_update_time = std::chrono::system_clock::now(); m_push_count = 0; camera_recording = false; + camera_recording_when_printing = false; camera_timelapse = false; printing_speed_mag = 100; gcode_file_prepare_percent = 0; @@ -2198,16 +2204,32 @@ int MachineObject::parse_json(std::string payload) } #pragma endregion +#pragma region options + try { + if (jj.contains("option")) { + if (jj["option"].is_number()) { + int option = jj["option"].get(); + if ((option & (1 << 0)) != 0) { + camera_recording = true; + } else { + camera_recording = false; + } + } + } + } + catch(...) { + } +#pragma endregion #pragma region camera // parse camera info try { if (jj.contains("ipcam")) { if (jj["ipcam"].contains("ipcam_record")) { if (jj["ipcam"]["ipcam_record"].get() == "enable") { - camera_recording = true; + camera_recording_when_printing = true; } else { - camera_recording = false; + camera_recording_when_printing = false; } } if (jj["ipcam"].contains("timelapse")) { @@ -2597,9 +2619,9 @@ int MachineObject::parse_json(std::string payload) this->camera_timelapse = false; } else if (j["camera"]["command"].get() == "ipcam_record_set") { if (j["camera"]["control"].get() == "enable") - this->camera_recording = true; + this->camera_recording_when_printing = true; if (j["camera"]["control"].get() == "disable") - this->camera_recording = false; + this->camera_recording_when_printing = false; } } } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index cf4573fce4..732c20431f 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -498,6 +498,7 @@ public: /* camera */ bool has_ipcam { false }; bool camera_recording { false }; + bool camera_recording_when_printing { false }; bool camera_timelapse { false }; bool camera_has_sdcard { false }; bool xcam_first_layer_inspector { false }; @@ -532,7 +533,8 @@ public: bool is_sdcard_printing(); bool has_sdcard(); bool has_timelapse(); - bool has_recording(); + bool is_recording_enable(); + bool is_recording(); MachineObject(NetworkAgent* agent, std::string name, std::string id, std::string ip); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index aeb5b3371b..20ae76446f 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1371,7 +1371,7 @@ void StatusPanel::update(MachineObject *obj) update_error_message(); } - upodate_camera_state(obj->has_recording(), obj->has_timelapse(), obj->has_sdcard()); + upodate_camera_state(obj->is_recording_enable(), obj->has_timelapse(), obj->has_sdcard()); m_machine_ctrl_panel->Thaw(); } @@ -1744,20 +1744,11 @@ void StatusPanel::update_ams(MachineObject *obj) for (auto tray_it = ams_it->second->trayList.begin(); tray_it != ams_it->second->trayList.end(); tray_it++) { std::string tray_id = tray_it->first; int tray_id_int = atoi(tray_id.c_str()); - if (obj->ams_insert_flag < 0) { - // old protocol - if ((obj->tray_read_done_bits & (1 << (ams_id_int * 4 + tray_id_int))) == 0) { - m_ams_control->PlayRridLoading(ams_id, tray_id); - } else { - m_ams_control->StopRridLoading(ams_id, tray_id); - } + // new protocol + if ((obj->tray_reading_bits & (1 << (ams_id_int * 4 + tray_id_int))) != 0) { + m_ams_control->PlayRridLoading(ams_id, tray_id); } else { - // new protocol - if ((obj->tray_reading_bits & (1 << (ams_id_int * 4 + tray_id_int))) != 0) { - m_ams_control->PlayRridLoading(ams_id, tray_id); - } else { - m_ams_control->StopRridLoading(ams_id, tray_id); - } + m_ams_control->StopRridLoading(ams_id, tray_id); } } } catch (...) {}