From 27f96d8bcef5fa64250dee3a1fb2610c041a3ada Mon Sep 17 00:00:00 2001 From: linyimin <18316471919@139.com> Date: Mon, 10 Aug 2026 12:06:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=B0=84=E7=AE=AD?= =?UTF-8?q?=E6=8B=8D=E7=85=A7=E6=85=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.yaml | 2 +- main.py | 18 ++++-------------- shoot_manager.py | 9 ++------- version.py | 2 +- 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/app.yaml b/app.yaml index 4905c15..772ceba 100644 --- a/app.yaml +++ b/app.yaml @@ -1,6 +1,6 @@ id: t11 name: t11 -version: 2.16.2 +version: 2.16.3 author: t11 icon: '' desc: t11 diff --git a/main.py b/main.py index 7c158fd..82f6223 100644 --- a/main.py +++ b/main.py @@ -278,8 +278,6 @@ def cmd_str(): logger.info("系统准备完成...") last_adc_trigger = 0 - _latest_frame = None # 预读的最新帧缓存,供射箭触发时减少延迟 - _frame_read_counter = 0 # 相机预读计数器,避免每帧都读拖慢CPU # 气压采样:减少日志频率(每 N 个点输出一条),避免 logger.debug 拖慢采样 PRESSURE_BATCH_SIZE = 100 @@ -391,8 +389,7 @@ def cmd_str(): _flush_pressure_buf("before_trigger") try: - process_shot(adc_val, pre_frame=_latest_frame) - _latest_frame = None + process_shot(adc_val) except Exception as e: logger = logger_manager.logger if logger: @@ -402,18 +399,11 @@ def cmd_str(): time.sleep_ms(100) continue else: - # 每3次循环预读一次相机帧(~15ms间隔),平衡buffer新鲜度与CPU占用 - _frame_read_counter += 1 - if _frame_read_counter >= 3: - _frame_read_counter = 0 + if config.SHOW_CAMERA_PHOTO_WHILE_SHOOTING: try: - _latest_frame = camera_manager.read_frame() - if config.SHOW_CAMERA_PHOTO_WHILE_SHOOTING and _latest_frame is not None: - camera_manager.show(_latest_frame) + camera_manager.show(camera_manager.read_frame()) except Exception as e: - logger = logger_manager.logger - if logger: - logger.error(f"[MAIN] 预读/显示异常: {e}") + pass time.sleep_ms(5) except Exception as e: diff --git a/shoot_manager.py b/shoot_manager.py index 95e5dd2..d94a214 100644 --- a/shoot_manager.py +++ b/shoot_manager.py @@ -311,21 +311,16 @@ def analyze_shot(frame, laser_point=None): return _build_circle_result(cdata, roi_xyxy) -def process_shot(adc_val, pre_frame=None): +def process_shot(adc_val): """ 处理射箭事件(逻辑控制部分) :param adc_val: ADC触发值 - :param pre_frame: 主循环预读的最新帧(可选),传入则跳过拍照以减少延迟 :return: None """ logger = logger_manager.logger try: - # 优先使用预读帧(零延迟),否则实时拍照 - if pre_frame is not None: - frame = pre_frame - else: - frame = camera_manager.read_frame() + frame = camera_manager.read_frame() # 网络事件移到拍照之后,避免阻塞拍照 network_manager.safe_enqueue({"shoot_event": "start"}, msg_type=2, high=True) diff --git a/version.py b/version.py index 0caacf8..c1c3049 100644 --- a/version.py +++ b/version.py @@ -4,6 +4,6 @@ 应用版本号 每次 OTA 更新时,只需要更新这个文件中的版本号 """ -VERSION = '2.16.2' +VERSION = '2.16.3'