6 Commits
Author SHA1 Message Date
linyimin 165eeff64e fix: 拍照优先 2026-08-11 14:38:45 +08:00
linyimin a184ff7d55 fix: 修改版本号 2026-08-11 14:33:03 +08:00
linyimin 054e9e6d90 fix: 修改日志级别 2026-08-11 14:21:05 +08:00
linyimin ae339889c2 fix: 靶子检测 2026-08-11 14:17:21 +08:00
linyimin b94b0f2e55 fix: 靶子检测 2026-08-11 14:15:21 +08:00
linyimin e82941a161 pref: 删除无引用方法调用 2026-08-11 13:52:53 +08:00
7 changed files with 10 additions and 17 deletions
+1
View File
@@ -1,3 +1,4 @@
/cpp_ext/build/
/.cursor/
/dist/
.idea
+1 -1
View File
@@ -1,6 +1,6 @@
id: t11
name: t11
version: 2.15.18
version: 2.15.31
author: t11
icon: ''
desc: t11
+5 -13
View File
@@ -122,7 +122,7 @@ def cmd_str():
# 1. 初始化日志系统
import logging
logger_manager.init_logging(log_level=logging.DEBUG)
logger_manager.init_logging(log_level=logging.WARNING)
logger = logger_manager.logger
# 充电关机独立读取 INA226,不依赖 TCP 连接或心跳流程。
@@ -290,37 +290,31 @@ def cmd_str():
pressure_buf = []
pressure_sum = 0
pressure_abs_sum = 0
pressure_min = 4095
pressure_max = 0
pressure_t0_ms = None
last_avg_abs = 0
def _flush_pressure_buf(reason: str):
nonlocal pressure_buf, pressure_sum, pressure_min, pressure_max, pressure_t0_ms, logger, pressure_abs_sum, last_avg_abs
nonlocal pressure_buf, pressure_sum, pressure_min, pressure_max, pressure_t0_ms, logger
if not pressure_buf:
return
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"min={pressure_min} max={pressure_max} avg={avg:.1f} "
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
@@ -342,6 +336,7 @@ def cmd_str():
time.sleep_ms(250)
continue
# todo 去除或者不在这里检测
# 不在 OTA 状态下,检测是否空闲足够长,自动关机
# print(f"[MAIN] 空闲时间: {hardware_manager.get_idle_time_in_sec() }秒")
# print(f"配置关机时间:{config.AUTO_POWER_OFF_IN_SECONDS} 秒")
@@ -358,12 +353,10 @@ def cmd_str():
if network_manager.manual_trigger_flag:
network_manager.clear_manual_trigger()
adc_val = config.ADC_TRIGGER_THRESHOLD + 1
adc_abs_val = 10
if logger:
logger.info("[TEST] TCP命令触发射箭")
else:
adc_val = hardware_manager.adc_obj.read()
adc_abs_val = hardware_manager.adc_obj.read_vol()
except Exception as e:
logger = logger_manager.logger
if logger:
@@ -374,9 +367,8 @@ def cmd_str():
# ====== 气压采样缓存(每次循环都记录,批量输出日志)======
if pressure_t0_ms is None:
pressure_t0_ms = current_time
pressure_buf.append((adc_val, adc_abs_val))
pressure_buf.append(adc_val)
pressure_sum += adc_val
pressure_abs_sum += adc_abs_val
if adc_val < pressure_min:
pressure_min = adc_val
if adc_val > pressure_max:
+1 -1
View File
@@ -320,8 +320,8 @@ def process_shot(adc_val):
logger = logger_manager.logger
try:
network_manager.safe_enqueue({"shoot_event": "start"}, msg_type=2, high=True)
frame = camera_manager.read_frame()
network_manager.safe_enqueue({"shoot_event": "start"}, msg_type=2, high=True)
# 调用算法分析
analysis_result = analyze_shot(frame)
Binary file not shown.
+1 -1
View File
@@ -4,6 +4,6 @@
应用版本号
每次 OTA 更新时,只需要更新这个文件中的版本号
"""
VERSION = '2.15.25'
VERSION = '2.15.31'
+1 -1
View File
@@ -631,7 +631,7 @@ def detect_circle_v3(frame, laser_point=None, img_cv=None):
min_r = min(rc["radius"], yellow_radius)
max_r = max(rc["radius"], yellow_radius)
size_ratio = min_r / max_r if max_r > 0 else 0
if dist_centers < max_dist and size_ratio > 0.5:
if dist_centers < max_dist and size_ratio >= 0.3:
if logger:
logger.info(f"[target] -> 找到匹配的红圈: 黄心({yellow_center}), "
f"红心({rc['center']}), 距离:{dist_centers:.1f}, "