From f8d603968ed27e5cbfd745bb96876ee614f1be9b Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 20 Feb 2022 00:26:09 +0800 Subject: [PATCH] =?UTF-8?q?feat.=E5=A2=9E=E5=8A=A0=E5=85=B3=E5=8D=A1?= =?UTF-8?q?=E6=8E=89=E8=90=BD=E8=AF=86=E5=88=AB=E7=9A=84=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=88=B3=E6=A3=80=E6=9F=A5=EF=BC=8C=E8=A7=A3=E5=86=B3=E4=B8=87?= =?UTF-8?q?=E4=B8=80=E5=8D=A1=E4=BD=8F=E4=BA=86=E4=BC=9A=E8=BF=9E=E7=BB=AD?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=B9=B6=E4=B8=8A=E4=BC=A0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/StageDropsTaskPlugin.cpp | 15 ++++++++++++--- src/MeoAssistant/StageDropsTaskPlugin.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index 178c9568bb..b72f825405 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -21,6 +21,12 @@ bool asst::StageDropsTaskPlugin::verify(AsstMsg msg, const json::value& details) } if (details.at("details").at("task").as_string() == "EndOfAction") { + int64_t pre_start_time = Status.get("LastStartButton2"); + int64_t pre_recognize_time = Status.get("LastRecognizeDrops"); + if (pre_start_time + RecognizationTimeOffset == pre_recognize_time) { + Log.info("Recognization time too close, pass", pre_start_time, pre_recognize_time); + return false; + } return true; } else { @@ -68,6 +74,9 @@ bool asst::StageDropsTaskPlugin::recognize_drops() std::string res = Resrc.penguin().recognize(image); Log.trace("Results of penguin recognition:\n", res); m_cur_drops = json::parse(res).value(); + + Status.set("LastRecognizeDrops", Status.get("LastStartButton2") + RecognizationTimeOffset); + return true; } @@ -112,10 +121,10 @@ void asst::StageDropsTaskPlugin::set_startbutton_delay() LogTraceFunction; if (!m_startbutton_delay_setted) { - int64_t start_times = Status.get("LastStartButton2"); + int64_t pre_start_time = Status.get("LastStartButton2"); - if (start_times > 0) { - int64_t duration = time(nullptr) - start_times; + if (pre_start_time > 0) { + int64_t duration = time(nullptr) - pre_start_time; int elapsed = Task.get("EndOfAction")->pre_delay + Task.get("PRTS")->rear_delay; int64_t delay = duration * 1000 - elapsed; m_cast_ptr->set_rear_delay("StartButton2", static_cast(delay)); diff --git a/src/MeoAssistant/StageDropsTaskPlugin.h b/src/MeoAssistant/StageDropsTaskPlugin.h index a76d303257..4ab5b3ac31 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.h +++ b/src/MeoAssistant/StageDropsTaskPlugin.h @@ -27,6 +27,7 @@ namespace asst void set_startbutton_delay(); void upload_to_penguin(); + static constexpr int64_t RecognizationTimeOffset = 20; std::unordered_map m_drop_stats; json::value m_cur_drops; bool m_startbutton_delay_setted = false;