Revert "Skip logging during auto-range transitions to avoid settling artifacts"

This reverts commit 420383eb0a.
This commit is contained in:
2026-03-10 17:27:05 +07:00
parent 420383eb0a
commit c154a67299
+11 -58
View File
@@ -62,21 +62,6 @@ def cmd_measure(meter: Hioki3193, args: argparse.Namespace) -> None:
print(f" {name:>8s} = {value:+.6E}")
SETTLE_CYCLES = 3 # Number of cycles to skip after a range change
def _read_ranges(
meter: Hioki3193,
voltage_channels: list[int],
current_channels: list[int],
) -> list[str]:
"""Read current voltage and current ranges for the given channels."""
return (
[meter.get_voltage_range(ch) for ch in voltage_channels]
+ [meter.get_current_range(ch) for ch in current_channels]
)
def cmd_monitor(meter: Hioki3193, args: argparse.Namespace) -> None:
"""Continuously monitor measurements at an interval."""
items = args.items if args.items else ["U5", "I5", "P5", "U6", "I6", "P6", "EFF1"]
@@ -101,37 +86,19 @@ def cmd_monitor(meter: Hioki3193, args: argparse.Namespace) -> None:
print(f"{'Time':>10s} {header}")
print("-" * (12 + 14 * len(items)))
# Range settle tracking
prev_ranges = _read_ranges(meter, voltage_channels, current_channels)
settle_remaining = 0
try:
count = 0
while args.count == 0 or count < args.count:
result = meter.measure(*items)
ranges = _read_ranges(meter, voltage_channels, current_channels)
# Detect range change
if ranges != prev_ranges:
settle_remaining = SETTLE_CYCLES
range_desc = ", ".join(
f"{a}->{b}" for a, b in zip(prev_ranges, ranges) if a != b
)
print(f" ** Range changed ({range_desc}), settling {SETTLE_CYCLES} cycles...")
prev_ranges = ranges
ts = time.strftime("%H:%M:%S")
vals = " ".join(f"{v:>+12.4E}" for v in result.values.values())
if settle_remaining > 0:
print(f"{ts:>10s} {vals} [settling {settle_remaining}]")
settle_remaining -= 1
time.sleep(interval)
continue
print(f"{ts:>10s} {vals}")
if writer:
ranges = (
[meter.get_voltage_range(ch) for ch in voltage_channels]
+ [meter.get_current_range(ch) for ch in current_channels]
)
writer.writerow(
[time.strftime("%Y-%m-%d %H:%M:%S")]
+ [f"{v:.6E}" for v in result.values.values()]
@@ -320,9 +287,6 @@ def cmd_live(meter: Hioki3193, args: argparse.Namespace) -> None:
# Error threshold - values above this are instrument error codes
ERROR_THRESHOLD = 1e90
# Range settle tracking (lists for mutability in closure)
settle_state = {"prev": _read_ranges(meter, voltage_channels, current_channels), "remaining": 0}
def update(_frame):
try:
result = meter.measure(*items)
@@ -330,31 +294,20 @@ def cmd_live(meter: Hioki3193, args: argparse.Namespace) -> None:
print(f"Read error: {e}")
return list(lines.values())
ranges = _read_ranges(meter, voltage_channels, current_channels)
# Detect range change
if ranges != settle_state["prev"]:
settle_state["remaining"] = SETTLE_CYCLES
range_desc = ", ".join(
f"{a}->{b}" for a, b in zip(settle_state["prev"], ranges) if a != b
)
print(f" ** Range changed ({range_desc}), settling {SETTLE_CYCLES} cycles...")
settle_state["prev"] = ranges
now = time.time() - t0
timestamps.append(now)
# Print to console
ts = time.strftime("%H:%M:%S")
vals = " ".join(f"{v:>+12.4E}" for v in result.values.values())
if settle_state["remaining"] > 0:
print(f"{ts} {vals} [settling {settle_state['remaining']}]")
settle_state["remaining"] -= 1
return list(lines.values())
timestamps.append(now)
print(f"{ts} {vals}")
# CSV logging
if writer:
ranges = (
[meter.get_voltage_range(ch) for ch in voltage_channels]
+ [meter.get_current_range(ch) for ch in current_channels]
)
writer.writerow(
[time.strftime("%Y-%m-%d %H:%M:%S")]
+ [f"{v:.6E}" for v in result.values.values()]