This commit is contained in:
Vincent Hanewinkel 2025-08-14 23:25:01 +02:00
parent 5602c20cb3
commit 72df5f7691

View File

@ -40,47 +40,36 @@ class DeviceWorker:
def _reader_loop(self): def _reader_loop(self):
print(f"[{self.serial}] Reader gestartet (interval={self.interval}, n={self.filter_window_size})") print(f"[{self.serial}] Reader gestartet (interval={self.interval}, n={self.filter_window_size})")
filter_window_size = 10
interval = 0.1
last_log = 0.0
current_direction = 1 # falls du das brauchst wie im Single-Logger
last_log = 0.0 last_log = 0.0
while not self._stop_evt.is_set(): while not self._stop_evt.is_set():
try:
cmd, _ = self._cmdq.get_nowait()
if cmd == "start":
self._running = True
print(f"[{self.serial}] RUNNING")
elif cmd == "stop":
self._running = False
print(f"[{self.serial}] STOPPED")
except queue.Empty:
pass
if not self._running: if not self._running:
time.sleep(0.05) time.sleep(0.05); continue
continue
try: try:
# WÄHLE HIER DIE SIGNATUR, DIE DEIN SINGLE-LOGGER NUTZT: # exakt wie im Single-Logger:
# Beispiel A (deine Datei ließ 'read(n, 500, True)' vermuten): samples = self.dev.read(filter_window_size, 500, True)
samples = self.dev.read(self.filter_window_size, 500, True)
# Beispiel B (andere pysmu-Versionen):
# samples = self.dev.read(self.filter_window_size, -1)
if not samples: if not samples:
time.sleep(self.interval) time.sleep(interval)
continue continue
vA = statistics.mean(row[0] for row in samples) # WICHTIG: gleiche Indizes wie in deinem Logger!
vB = statistics.mean(row[2] for row in samples) raw_voltage = float(np.mean([s[1][0] for s in samples])) # VB
raw_current = float(np.mean([s[0][1] for s in samples])) * current_direction # IA
now = time.time() now = time.time()
if now - last_log >= 1.0: if now - last_log >= 1.0: # 1 Hz loggen
self._writer_q.put((now, vA, vB)) self._writer_q.put((now, raw_voltage, raw_current))
last_log = now last_log = now
except Exception as e: except Exception as e:
print(f"[{self.serial}] Read-Fehler: {e}") print(f"[{self.serial}] Read-Fehler: {e}")
time.sleep(0.05) time.sleep(0.05)
time.sleep(max(0.05, self.interval)) time.sleep(max(0.05, interval))
def _writer_loop(self): def _writer_loop(self):
try: try: