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'