diff --git a/device_worker.py b/device_worker.py index d1368df..2397b6a 100644 --- a/device_worker.py +++ b/device_worker.py @@ -40,47 +40,36 @@ class DeviceWorker: def _reader_loop(self): 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 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: - time.sleep(0.05) - continue - + time.sleep(0.05); continue try: - # WÄHLE HIER DIE SIGNATUR, DIE DEIN SINGLE-LOGGER NUTZT: - # Beispiel A (deine Datei ließ 'read(n, 500, True)' vermuten): - samples = self.dev.read(self.filter_window_size, 500, True) - # Beispiel B (andere pysmu-Versionen): - # samples = self.dev.read(self.filter_window_size, -1) + # exakt wie im Single-Logger: + samples = self.dev.read(filter_window_size, 500, True) if not samples: - time.sleep(self.interval) + time.sleep(interval) continue - vA = statistics.mean(row[0] for row in samples) - vB = statistics.mean(row[2] for row in samples) + # WICHTIG: gleiche Indizes wie in deinem Logger! + 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() - if now - last_log >= 1.0: - self._writer_q.put((now, vA, vB)) + if now - last_log >= 1.0: # 1 Hz loggen + self._writer_q.put((now, raw_voltage, raw_current)) last_log = now except Exception as e: print(f"[{self.serial}] Read-Fehler: {e}") time.sleep(0.05) - time.sleep(max(0.05, self.interval)) + time.sleep(max(0.05, interval)) def _writer_loop(self): try: