MainCode/adalm1000_logger.py aktualisiert

This makes the stop operation more thorough and provides better visual feedback to the user. The plot will now clearly show that the test has been stopped and reset.
(D)
This commit is contained in:
Jan 2025-05-26 13:38:12 +02:00
parent 876fecb466
commit 34be33434f

View File

@ -489,35 +489,50 @@ class BatteryTester:
return f"{hours:02d}:{minutes:02d}:{seconds:02d}" return f"{hours:02d}:{minutes:02d}:{seconds:02d}"
def stop_test(self): def stop_test(self):
"""Request immediate stop of the test""" """Request immediate stop of the test and clean up all test data"""
if not self.test_running: if not self.test_running:
return return
self.request_stop = True self.request_stop = True
self.test_running = False # This will break out of all test loops self.test_running = False
self.measuring = False self.measuring = False
# Immediately set device to safe state # Immediately set device to safe state
if hasattr(self, 'dev'): if hasattr(self, 'dev'):
self.dev.channels['A'].mode = pysmu.Mode.HI_Z try:
self.dev.channels['A'].constant(0) self.dev.channels['A'].mode = pysmu.Mode.HI_Z
self.dev.channels['A'].constant(0)
except Exception as e:
print(f"Error resetting device: {e}")
# Clear plot data # Clear all data buffers
self.time_data.clear() self.time_data.clear()
self.voltage_data.clear() self.voltage_data.clear()
self.current_data.clear() self.current_data.clear()
self.phase_data.clear()
# Reset test values
self.test_phase.set("Idle")
self.capacity_ah.set(0.0)
self.charge_capacity.set(0.0)
self.coulomb_efficiency.set(0.0)
# Reset plot if it exists
if hasattr(self, 'line_voltage') and hasattr(self, 'line_current'): if hasattr(self, 'line_voltage') and hasattr(self, 'line_current'):
self.line_voltage.set_data([], []) self.line_voltage.set_data([], [])
self.line_current.set_data([], []) self.line_current.set_data([], [])
self.ax.set_xlim(0, 1) # Reset to reasonable default ranges
self.ax2.set_xlim(0, 1) self.ax.set_xlim(0, 10) # Small range instead of 0-1
self.ax.set_ylim(0, 2) # Typical battery voltage range
self.ax2.set_ylim(-0.2, 0.2) # Typical current range
self.canvas.draw() self.canvas.draw()
self.status_var.set("Test stopped immediately") # Update UI
self.status_var.set("Test stopped - Ready for new test")
self.stop_button.config(state=tk.DISABLED) self.stop_button.config(state=tk.DISABLED)
self.start_button.config(state=tk.NORMAL) self.start_button.config(state=tk.NORMAL)
# Finalize test data # Finalize test data (logs, etc.)
self.safe_after(100, self.finalize_test) self.safe_after(100, self.finalize_test)
def center_window(self, window): def center_window(self, window):