diff --git a/web.py b/web.py index eacca1b..d9fdad5 100644 --- a/web.py +++ b/web.py @@ -903,15 +903,37 @@ class RenderWorker(threading.Thread): # 雷达信息 if cfg.get("show_radar", 1): - unit_str = "厘米" if cfg.get("radar_unit", 0) else "分米" - dist_val = (radar_dist * 10 if cfg.get("radar_unit", 0) - else radar_dist) - alarm_d = cfg.get("radar_alarm_dist", 50) - rc = ((255, 80, 80) if dist_val <= alarm_d else (180, 220, 255)) - texts.append((bw + 10, 48, - f"雷达: {dist_val} {unit_str} 报警值: {alarm_d}{unit_str}", - rc, 26)) - + radar_dist_dm = radar_dist # 原始数据是分米 + alarm_d_dm = cfg.get("radar_alarm_dist", 50) # 报警值单位也是分米 + + # 当距离大于60分米(6米)时不显示 + if radar_dist_dm > 60: + pass # 不显示 + else: + # 转换为米(保留1位小数)或厘米 + if radar_dist_dm >= 10: # 大于等于1米,用米显示 + dist_val = radar_dist_dm / 10.0 + unit_str = "米" + dist_text = f"{dist_val:.1f}" + else: # 小于1米,用厘米显示 + dist_val = radar_dist_dm * 10 + unit_str = "厘米" + dist_text = f"{dist_val:.0f}" + + # 报警值也转换为对应单位 + if alarm_d_dm >= 10: + alarm_val = alarm_d_dm / 10.0 + alarm_unit = "米" + alarm_text = f"{alarm_val:.1f}" + else: + alarm_val = alarm_d_dm * 10 + alarm_unit = "厘米" + alarm_text = f"{alarm_val:.0f}" + + # 颜色逻辑:使用转换后的分米值进行比较(报警值原始单位是分米) + rc = ((255, 80, 80) if radar_dist_dm <= alarm_d_dm else (180, 220, 255)) + texts.append((10, sh-108, f"雷达: {dist_text}{unit_str} 报警值: {alarm_text}{alarm_unit}", rc, 22)) + # 停机状态 stop_text = "已停机" if is_stopped else "运行中" stop_color = ((255, 100, 100) if is_stopped else (100, 255, 100)) @@ -984,11 +1006,36 @@ class RenderWorker(threading.Thread): # 雷达信息 if cfg.get("show_radar", 1): - unit_str = "厘米" if cfg.get("radar_unit", 0) else "分米" - dist_val = (radar_dist * 10 if cfg.get("radar_unit", 0) else radar_dist) - alarm_d = cfg.get("radar_alarm_dist", 50) - rc = ((255, 80, 80) if dist_val <= alarm_d else (180, 220, 255)) - texts.append((10, sh-108, f"雷达: {dist_val} {unit_str} 报警值: {alarm_d}{unit_str}", rc, 22)) + radar_dist_dm = radar_dist # 原始数据是分米 + alarm_d_dm = cfg.get("radar_alarm_dist", 50) # 报警值单位也是分米 + + # 当距离大于60分米(6米)时不显示 + if radar_dist_dm > 60: + pass # 不显示 + else: + # 转换为米(保留1位小数)或厘米 + if radar_dist_dm >= 10: # 大于等于1米,用米显示 + dist_val = radar_dist_dm / 10.0 + unit_str = "米" + dist_text = f"{dist_val:.1f}" + else: # 小于1米,用厘米显示 + dist_val = radar_dist_dm * 10 + unit_str = "厘米" + dist_text = f"{dist_val:.0f}" + + # 报警值也转换为对应单位 + if alarm_d_dm >= 10: + alarm_val = alarm_d_dm / 10.0 + alarm_unit = "米" + alarm_text = f"{alarm_val:.1f}" + else: + alarm_val = alarm_d_dm * 10 + alarm_unit = "厘米" + alarm_text = f"{alarm_val:.0f}" + + # 颜色逻辑:使用转换后的分米值进行比较(报警值原始单位是分米) + rc = ((255, 80, 80) if radar_dist_dm <= alarm_d_dm else (180, 220, 255)) + texts.append((10, sh-108, f"雷达: {dist_text}{unit_str} 报警值: {alarm_text}{alarm_unit}", rc, 22)) # 状态信息 stop_text = "已停机" if is_stopped else "运行中" @@ -1055,11 +1102,37 @@ class RenderWorker(threading.Thread): # 雷达信息 if cfg.get("show_radar", 1): - unit_str = "厘米" if cfg.get("radar_unit", 0) else "分米" - dist_val = (radar_dist * 10 if cfg.get("radar_unit", 0) else radar_dist) - alarm_d = cfg.get("radar_alarm_dist", 50) - rc = ((255, 80, 80) if dist_val <= alarm_d else (180, 220, 255)) - texts.append((bw+10, sh-80, f"雷达: {dist_val} {unit_str} 阈值: {alarm_d}{unit_str}", rc, 22)) + radar_dist_dm = radar_dist # 原始数据是分米 + alarm_d_dm = cfg.get("radar_alarm_dist", 50) # 报警值单位也是分米 + + # 当距离大于60分米(6米)时不显示 + if radar_dist_dm > 60: + pass # 不显示 + else: + # 转换为米(保留1位小数)或厘米 + if radar_dist_dm >= 10: # 大于等于1米,用米显示 + dist_val = radar_dist_dm / 10.0 + unit_str = "米" + dist_text = f"{dist_val:.1f}" + else: # 小于1米,用厘米显示 + dist_val = radar_dist_dm * 10 + unit_str = "厘米" + dist_text = f"{dist_val:.0f}" + + # 报警值也转换为对应单位 + if alarm_d_dm >= 10: + alarm_val = alarm_d_dm / 10.0 + alarm_unit = "米" + alarm_text = f"{alarm_val:.1f}" + else: + alarm_val = alarm_d_dm * 10 + alarm_unit = "厘米" + alarm_text = f"{alarm_val:.0f}" + + # 颜色逻辑:使用转换后的分米值进行比较(报警值原始单位是分米) + rc = ((255, 80, 80) if radar_dist_dm <= alarm_d_dm else (180, 220, 255)) + texts.append((10, sh-108, f"雷达: {dist_text}{unit_str} 报警值: {alarm_text}{alarm_unit}", rc, 22)) + # 状态信息 stop_text = "已停机" if is_stopped else "运行中" @@ -1493,7 +1566,7 @@ class SettingsPanel(QWidget): "key":"radar_alarm_dist", "min":5, "max":50, "step":5}, {"name":"雷达距离单位", "type":"toggle", "key":"radar_unit", - "values":[0, 1], "labels":["分米", "厘米"]}, + "values":[0, 1], "labels":["米", "厘米"]}, {"name":"显示雷达距离", "type":"toggle", "key":"show_radar", "values":[0, 1], "labels":["关闭", "开启"]},