diff --git a/main.py b/main.py index fc7dcd7..8bc549f 100644 --- a/main.py +++ b/main.py @@ -290,34 +290,33 @@ def cmd_str(): last_avg_abs = 0 def _flush_pressure_buf(reason: str): - if not config.AIR_PRESSURE_lOG: - return nonlocal pressure_buf, pressure_sum, pressure_min, pressure_max, pressure_t0_ms, logger, pressure_abs_sum, last_avg_abs if not pressure_buf: return - t1_ms = time.ticks_ms() - n = len(pressure_buf) - avg = (pressure_sum / n) if n else 0 - avg_abs = (pressure_abs_sum / n) if n else 0 - # 一行输出:方便后处理画曲线;同时带上统计信息便于快速看波峰 - line = ( - f"[气压批量] reason={reason} " - f"t0={pressure_t0_ms} t1={t1_ms} n={n} " - f"min={pressure_min} max={pressure_max} avg={avg:.1f} avg_abs={avg_abs:.3f} " - f"values={','.join(map(str, pressure_buf))}" - f" convert value (kpa): {(max(pressure_buf, key=lambda x: x[1])[1] - last_avg_abs) / (5 - 2.5) * config.AIR_PRESSURE_HARDWARE_MAX:.1f}" - ) - if logger: - logger.debug(line) - else: - print(line) + if config.AIR_PRESSURE_lOG: + t1_ms = time.ticks_ms() + n = len(pressure_buf) + avg = (pressure_sum / n) if n else 0 + avg_abs = (pressure_abs_sum / n) if n else 0 + line = ( + f"[气压批量] reason={reason} " + f"t0={pressure_t0_ms} t1={t1_ms} n={n} " + f"min={pressure_min} max={pressure_max} avg={avg:.1f} avg_abs={avg_abs:.3f} " + f"values={','.join(map(str, pressure_buf))}" + f" convert value (kpa): {(max(pressure_buf, key=lambda x: x[1])[1] - last_avg_abs) / (5 - 2.5) * config.AIR_PRESSURE_HARDWARE_MAX:.1f}" + ) + if logger: + logger.debug(line) + else: + print(line) + last_avg_abs = avg_abs + # 无论是否记录日志,都必须清空 buffer,否则内存泄漏 pressure_buf = [] pressure_sum = 0 pressure_abs_sum = 0 pressure_min = 4095 pressure_max = 0 pressure_t0_ms = None - last_avg_abs = avg_abs # 主循环:检测扳机触发 → 拍照 → 分析 → 上报 while not app.need_exit():