From 6f56255cbfecaa2f9440b1017bce439ab53717db Mon Sep 17 00:00:00 2001 From: flt6 <1404262047@qq.com> Date: Thu, 5 Jun 2025 22:23:18 +0800 Subject: [PATCH] tmp Former-commit-id: b7e0d7df2a42a28fd683029bdf79b88a27cb1130 --- main.py | 13 ++++++++----- utils.py | 8 ++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 834b1be..3210929 100644 --- a/main.py +++ b/main.py @@ -49,10 +49,12 @@ class MAT: def process_left(self, now: float, value_only=False): if self.state.mode == State.Mode.CRAZY: value_only = True + if self.state.mode == State.Mode.ABOUT: + return self.total_volume st = self.ch340.start if not value_only: self.ch340.stop() - assert abs(self.ch340._get_time()-1) < 1e3 + assert abs(self.ch340._get_time()-1) < 1e-3 r = now - st ret = self.total_volume - (1-r) * self.speeds[self.state.mode.value] if value_only: @@ -138,12 +140,12 @@ class MAT: self.control_logger.info(f"middle比例{trans_ratio:.2%}<60%,退出middle检查,返回fast模式") if self.state.mode == State.Mode.ABOUT and self.state.about_check: - h = self.history.get_recent_records(self.about_time,now) + h = self.history.get_recent_records(self.about_time/3,now) ratio = self.history.get_state_ratio("about", h) self.history.about_history.append(ratio<0.3) - while len(self.history.about_history) > 10: + while len(self.history.about_history) > 5: self.history.about_history.pop(0) - if len(self.history.about_history) == 10: + if len(self.history.about_history) == 5: rate = sum(self.history.about_history) / len(self.history.about_history) if rate > 0.8: self.state.exit_about() @@ -283,7 +285,6 @@ class MAT: self.about_time=about_time self.crazy = 0 - self.state.mode = State.Mode.CRAZY while self.running: if not self.ch340.running: @@ -358,6 +359,8 @@ if __name__ == "__main__": end_bounce_time=0.01 ) + mat.state.mode = State.Mode.FAST + mat.run( slow_speed = 0.05, quick_speed = 0.15, diff --git a/utils.py b/utils.py index b95d695..362e8d4 100644 --- a/utils.py +++ b/utils.py @@ -41,7 +41,8 @@ class History: self.fulled = False self.about_history = [] # 用于存储最近的about状态记录 self.base = None - self._base_time = base_time # 可视化相关属性 + self._base_time = base_time + self._base_cnt = 0 self.display = display self.fig: Any = None self.ax: Any = None @@ -59,6 +60,9 @@ class History: self.records.append(record) self._cleanup_old_records(timestamp) if self.base is None and (timestamp-self._base_time)>= self.records[0].timestamp: + if self._base_cnt < 30: + self._base_cnt+=1 + return base_records = self.get_recent_records(self._base_time, timestamp) self.base = sum([rec.rate for rec in base_records]) / len(base_records) get_endpoint_logger().info("Base rate calculated: %.2f", self.base) @@ -282,7 +286,7 @@ class State: FAST = 0 # 快速模式 SLOW = 1 # 慢速模式 (middle) ABOUT = 2 # 接近终点模式 - CRAZY = 2 # CRAZY模式 + CRAZY = 3 # CRAZY模式 # END = 3 # 终点模式 def __init__(self, bounce_time=1, end_bounce_time=5):