From b62327413f5122b3365072b8e985116b02788b87 Mon Sep 17 00:00:00 2001 From: linyimin <18316471919@139.com> Date: Tue, 11 Aug 2026 17:35:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8E=8B=E5=8A=9B=E4=BC=A0=E6=84=9F?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.yaml | 2 +- main.py | 45 ++++++++++++++++++++++++++++++--------------- version.md | 1 + version.py | 2 +- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/app.yaml b/app.yaml index d5b2f86..ca38caf 100644 --- a/app.yaml +++ b/app.yaml @@ -1,6 +1,6 @@ id: t11 name: t11 -version: 2.15.31 +version: 2.16.1 author: t11 icon: '' desc: t11 diff --git a/main.py b/main.py index 21f489e..321e7c3 100644 --- a/main.py +++ b/main.py @@ -294,6 +294,10 @@ def cmd_str(): pressure_max = 0 pressure_t0_ms = None + # 压力突变检测(上升沿触发) + prev_adc_val = 0 # 上一次ADC值 + ADC_JUMP_THRESHOLD = 250 # 突变阈值:相邻两次采样差值超过此值视为突变 + def _flush_pressure_buf(reason: str): nonlocal pressure_buf, pressure_sum, pressure_min, pressure_max, pressure_t0_ms, logger if not pressure_buf: @@ -375,18 +379,27 @@ def cmd_str(): pressure_max = adc_val if len(pressure_buf) >= PRESSURE_BATCH_SIZE: _flush_pressure_buf("batch") - # if adc_val >= 2000: - # print(f"adc :{adc_val}") - if adc_val >= config.ADC_TRIGGER_THRESHOLD: + + # 压力突变检测:当前值与前一次值的差值超过阈值时触发 + adc_diff = adc_val - prev_adc_val + if adc_diff >= ADC_JUMP_THRESHOLD and prev_adc_val > 0 : hardware_manager.start_idle_timer() # 重新计时 diff_ms = current_time - last_adc_trigger if diff_ms < 3000: logger.info(f"[MAIN] 扳机触发过于频繁, {diff_ms}ms") + prev_adc_val = adc_val continue last_adc_trigger = current_time - # 触发前先把缓存刷出来,避免波形被长耗时处理截断 + # 触发前先把缓存刷出来 _flush_pressure_buf("before_trigger") + if logger: + logger.info( + f"[TRIGGER] ▲ 压力突变触发! " + f"adc={adc_val}, prev={prev_adc_val}, " + f"diff=+{adc_diff}, t={current_time}ms" + ) + try: process_shot(adc_val) except Exception as e: @@ -395,17 +408,19 @@ def cmd_str(): logger.error(f"[MAIN] 图像处理异常: {e}") import traceback logger.error(traceback.format_exc()) - time.sleep_ms(100) - continue - else: - if config.SHOW_CAMERA_PHOTO_WHILE_SHOOTING: - try: - camera_manager.show(camera_manager.read_frame()) - except Exception as e: - logger = logger_manager.logger - if logger: - logger.error(f"[MAIN] 显示异常: {e}") - time.sleep_ms(5) + + prev_adc_val = adc_val + + # 未触发时的显示逻辑 + # 未触发时的显示逻辑 + if config.SHOW_CAMERA_PHOTO_WHILE_SHOOTING: + try: + camera_manager.show(camera_manager.read_frame()) + except Exception as e: + logger = logger_manager.logger + if logger: + logger.error(f"[MAIN] 显示异常: {e}") + time.sleep_ms(1) except Exception as e: # 主循环的顶层异常捕获,防止程序静默退出 diff --git a/version.md b/version.md index 8116534..c921654 100644 --- a/version.md +++ b/version.md @@ -36,3 +36,4 @@ # 2.15.24 空改测试 # 2.15.25 修复整合后关机失败和ota格式更新问题 # 2.15.26 +# 2.16.1 修复压力传感触发判断按照增量 \ No newline at end of file diff --git a/version.py b/version.py index f2c7323..d877970 100644 --- a/version.py +++ b/version.py @@ -4,6 +4,6 @@ 应用版本号 每次 OTA 更新时,只需要更新这个文件中的版本号 """ -VERSION = '2.15.31' +VERSION = '2.16.1'