diff --git a/resource/tasks.json b/resource/tasks.json index a80c17e8a2..d1cd5e70b5 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -668,6 +668,7 @@ "InfrastEnteredFlag": { "template": "InfrastOverview.png", "templThreshold": 0.8, + "histThreshold": 0.8, "action": "doNothing", "next": [ "InfrastNotification", diff --git a/resource/template/InfrastOverview.png b/resource/template/InfrastOverview.png index 692f4901e9..999f362edd 100644 Binary files a/resource/template/InfrastOverview.png and b/resource/template/InfrastOverview.png differ diff --git a/src/MeoAssistance/AbstractTask.h b/src/MeoAssistance/AbstractTask.h index 8a5257d1a6..356b339c6b 100644 --- a/src/MeoAssistance/AbstractTask.h +++ b/src/MeoAssistance/AbstractTask.h @@ -26,11 +26,11 @@ namespace asst virtual int get_retry_times() { return m_retry_times; } virtual void set_task_chain(std::string name) { m_task_chain = std::move(name); } virtual const std::string& get_task_chain() { return m_task_chain; } - virtual void on_run_fails(int retry_times) { ; } + virtual void on_run_fails() { ; } protected: virtual bool sleep(unsigned millisecond); - virtual bool save_image(const cv::Mat& iamge, const std::string& dir); + virtual bool save_image(const cv::Mat& image, const std::string& dir); virtual bool need_exit() const noexcept; virtual void click_return_button(); diff --git a/src/MeoAssistance/Assistance.cpp b/src/MeoAssistance/Assistance.cpp index 71f47a3e03..bf74b6784c 100644 --- a/src/MeoAssistance/Assistance.cpp +++ b/src/MeoAssistance/Assistance.cpp @@ -406,7 +406,7 @@ void Assistance::working_proc() ++retry_times; // 执行失败再还原回去 m_tasks_deque.emplace_front(task_ptr); - task_ptr->on_run_fails(retry_times); + task_ptr->on_run_fails(); } } diff --git a/src/MeoAssistance/InfrastAbstractTask.cpp b/src/MeoAssistance/InfrastAbstractTask.cpp index f46918411b..27bbd8f0e3 100644 --- a/src/MeoAssistance/InfrastAbstractTask.cpp +++ b/src/MeoAssistance/InfrastAbstractTask.cpp @@ -27,6 +27,17 @@ void asst::InfrastAbstractTask::set_work_mode(infrast::WorkMode work_mode) noexc } } +void asst::InfrastAbstractTask::on_run_fails() +{ + LogTraceFunction; + + json::value next_json; + next_json["task_chain"] = m_task_chain; + next_json["retry_times"] = m_retry_times; + next_json["tasks"] = json::array({ "InfrastBegin" }); + m_callback(AsstMsg::AppendProcessTask, next_json, m_callback_arg); +} + bool asst::InfrastAbstractTask::enter_facility(const std::string& facility, int index) { LogTraceFunction; @@ -214,4 +225,4 @@ void asst::InfrastAbstractTask::swipe_to_the_right_of_main_ui() static int extra_delay = resource.task().task_ptr("InfrastOperListSwipeToTheLeftBegin")->rear_delay; ctrler.swipe(begin_rect, end_rect, duration, true, extra_delay, false); -} \ No newline at end of file +} diff --git a/src/MeoAssistance/InfrastAbstractTask.h b/src/MeoAssistance/InfrastAbstractTask.h index 4def3053ff..6cb4e76755 100644 --- a/src/MeoAssistance/InfrastAbstractTask.h +++ b/src/MeoAssistance/InfrastAbstractTask.h @@ -11,6 +11,7 @@ namespace asst using AbstractTask::AbstractTask; virtual ~InfrastAbstractTask() = default; virtual void set_work_mode(infrast::WorkMode work_mode) noexcept; + virtual void on_run_fails() override; protected: virtual bool enter_facility(const std::string& facility, int index = 0); diff --git a/src/MeoAssistance/InfrastMfgTask.cpp b/src/MeoAssistance/InfrastMfgTask.cpp index c2b292fc54..2b6d29d642 100644 --- a/src/MeoAssistance/InfrastMfgTask.cpp +++ b/src/MeoAssistance/InfrastMfgTask.cpp @@ -21,7 +21,9 @@ bool asst::InfrastMfgTask::run() enter_facility(FacilityName, 0); click_bottomleft_tab(); - shift_facility_list(); + if (!shift_facility_list()) { + return false; + } return true; } diff --git a/src/MeoAssistance/InfrastProductionTask.cpp b/src/MeoAssistance/InfrastProductionTask.cpp index ab64d76909..dab16b45e2 100644 --- a/src/MeoAssistance/InfrastProductionTask.cpp +++ b/src/MeoAssistance/InfrastProductionTask.cpp @@ -27,7 +27,9 @@ bool asst::InfrastProductionTask::run() m_all_available_opers.clear(); - shift_facility_list(); + if (!shift_facility_list()) { + return false; + } return true; } @@ -49,7 +51,9 @@ asst::InfrastProductionTask::InfrastProductionTask(AsstCallback callback, void* bool asst::InfrastProductionTask::shift_facility_list() { LogTraceFunction; - facility_list_detect(); + if (!facility_list_detect()) { + return false; + } if (need_exit()) { return false; } diff --git a/src/MeoAssistance/InfrastTradeTask.cpp b/src/MeoAssistance/InfrastTradeTask.cpp index 11c0d043a3..c68e473697 100644 --- a/src/MeoAssistance/InfrastTradeTask.cpp +++ b/src/MeoAssistance/InfrastTradeTask.cpp @@ -17,7 +17,9 @@ bool asst::InfrastTradeTask::run() enter_facility(FacilityName, 0); click_bottomleft_tab(); - shift_facility_list(); + if (!shift_facility_list()) { + return false; + } return true; }