MainCode/adalm1000_logger.py aktualisiert
Alles sollte funktionieren. (D)
This commit is contained in:
parent
d368cec550
commit
401f19d237
@ -218,37 +218,44 @@ class TestSequenceWorker(QObject):
|
|||||||
def run(self):
|
def run(self):
|
||||||
"""Main test sequence loop"""
|
"""Main test sequence loop"""
|
||||||
try:
|
try:
|
||||||
while self._running and (self.continuous_mode or self.parent.cycle_count == 0):
|
first_cycle = True # Ensure at least one cycle runs
|
||||||
# Reset stop request at start of each cycle
|
|
||||||
|
# Modified while condition to also check parent's continuous_mode state
|
||||||
|
while (self._running and
|
||||||
|
(self.parent.continuous_mode_check.isChecked() or first_cycle)):
|
||||||
self.parent.request_stop = False
|
self.parent.request_stop = False
|
||||||
self.parent.cycle_count += 1
|
self.parent.cycle_count += 1
|
||||||
|
first_cycle = False # Only True for the first cycle
|
||||||
|
|
||||||
|
# Existing test phases...
|
||||||
# 1. Charge phase (constant current)
|
# 1. Charge phase (constant current)
|
||||||
self.charge_phase()
|
self.charge_phase()
|
||||||
if not self._running or self.parent.request_stop:
|
if not self._running or self.parent.request_stop:
|
||||||
break
|
break
|
||||||
|
|
||||||
# 2. Rest period after charge
|
# 2. Rest period after charge
|
||||||
self.rest_phase("Post-Charge")
|
self.rest_phase("Post-Charge")
|
||||||
if not self._running or self.parent.request_stop:
|
if not self._running or self.parent.request_stop:
|
||||||
break
|
break
|
||||||
|
|
||||||
# 3. Discharge phase (capacity measurement)
|
# 3. Discharge phase (capacity measurement)
|
||||||
self.discharge_phase()
|
self.discharge_phase()
|
||||||
if not self._running or self.parent.request_stop:
|
if not self._running or self.parent.request_stop:
|
||||||
break
|
break
|
||||||
|
|
||||||
# 4. Rest period after discharge (only if not stopping)
|
# 4. Rest period after discharge (only if not stopping)
|
||||||
if self._running and not self.parent.request_stop:
|
if self._running and not self.parent.request_stop:
|
||||||
self.rest_phase("Post-Discharge")
|
self.rest_phase("Post-Discharge")
|
||||||
|
|
||||||
# Calculate Coulomb efficiency if not stopping
|
# Calculate Coulomb efficiency if not stopping
|
||||||
if not self.parent.request_stop and self.parent.charge_capacity > 0:
|
if not self.parent.request_stop and self.parent.charge_capacity > 0:
|
||||||
self.parent.coulomb_efficiency = (self.parent.capacity_ah / self.parent.charge_capacity) * 100
|
self.parent.coulomb_efficiency = (
|
||||||
|
self.parent.capacity_ah / self.parent.charge_capacity
|
||||||
|
) * 100
|
||||||
|
|
||||||
# Test completed
|
# Test completed
|
||||||
self.test_completed.emit()
|
self.test_completed.emit()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.error_occurred.emit(f"Test sequence error: {str(e)}")
|
self.error_occurred.emit(f"Test sequence error: {str(e)}")
|
||||||
finally:
|
finally:
|
||||||
@ -275,7 +282,7 @@ class BatteryTester(QMainWindow):
|
|||||||
self.interval = 0.1
|
self.interval = 0.1
|
||||||
self.log_dir = os.path.expanduser("~/adalm1000/logs")
|
self.log_dir = os.path.expanduser("~/adalm1000/logs")
|
||||||
os.makedirs(self.log_dir, exist_ok=True)
|
os.makedirs(self.log_dir, exist_ok=True)
|
||||||
|
|
||||||
# Data buffers
|
# Data buffers
|
||||||
self.time_data = deque()
|
self.time_data = deque()
|
||||||
self.voltage_data = deque()
|
self.voltage_data = deque()
|
||||||
@ -513,6 +520,7 @@ class BatteryTester(QMainWindow):
|
|||||||
self.continuous_mode_check.setChecked(True)
|
self.continuous_mode_check.setChecked(True)
|
||||||
self.continuous_mode_check.setStyleSheet(f"color: {self.fg_color};")
|
self.continuous_mode_check.setStyleSheet(f"color: {self.fg_color};")
|
||||||
button_layout.addWidget(self.continuous_mode_check)
|
button_layout.addWidget(self.continuous_mode_check)
|
||||||
|
self.continuous_mode_check.stateChanged.connect(self.handle_continuous_mode_change)
|
||||||
|
|
||||||
controls_layout.addWidget(button_frame)
|
controls_layout.addWidget(button_frame)
|
||||||
self.main_layout.addWidget(controls_frame)
|
self.main_layout.addWidget(controls_frame)
|
||||||
@ -542,6 +550,14 @@ class BatteryTester(QMainWindow):
|
|||||||
}}
|
}}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def handle_continuous_mode_change(self, state):
|
||||||
|
"""Handle changes to continuous mode checkbox during operation"""
|
||||||
|
if not state and self.test_running: # If unchecked during test
|
||||||
|
self.status_bar.showMessage("Continuous mode disabled - will complete current cycle")
|
||||||
|
# Optional visual feedback
|
||||||
|
self.continuous_mode_check.setStyleSheet(f"color: {self.warning_color};")
|
||||||
|
QTimer.singleShot(2000, lambda: self.continuous_mode_check.setStyleSheet(f"color: {self.fg_color};"))
|
||||||
|
|
||||||
def setup_plot(self):
|
def setup_plot(self):
|
||||||
"""Configure the matplotlib plot"""
|
"""Configure the matplotlib plot"""
|
||||||
self.fig = Figure(figsize=(8, 5), dpi=100, facecolor=self.bg_color)
|
self.fig = Figure(figsize=(8, 5), dpi=100, facecolor=self.bg_color)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user