Add shade profiles, 2D V×I sweep, meter format toggle, ON/OFF indicators, and GUI console

- Shade profile: CSV-driven irradiance/voltage sequences with load control
  (bench.run_shade_profile, CLI shade-profile command, GUI profile panel)
- 2D sweep: voltage × load current efficiency map with live graph updates
  (bench.sweep_vi, CLI sweep-vi command, GUI sweep panel with background thread)
- GUI: meter format selector (scientific/normal), supply/load ON/OFF indicators,
  console log with stdout redirect and color-coded messages
- Sample profiles: cloud_pass, partial_shade, intermittent_clouds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 15:27:48 +07:00
parent 74917e05f2
commit 956be4b77a
8 changed files with 953 additions and 14 deletions

View File

@@ -99,6 +99,15 @@ class InstrumentWorker(threading.Thread):
data = self.bench.measure_all()
data["_error"] = None
data["_timestamp"] = time.time()
# Query output states for GUI indicators
try:
data["supply_on"] = self.bench.supply.get_output_state()
except Exception:
data["supply_on"] = None
try:
data["load_on"] = self.bench.load.get_load_state()
except Exception:
data["load_on"] = None
except Exception as e:
data = {"_error": str(e), "_timestamp": time.time()}