This commit is contained in:
2026-02-25 12:07:03 +01:00
parent 5c8a35440e
commit dc2e8c2270
3 changed files with 31 additions and 19 deletions

View File

@@ -90,22 +90,27 @@ class BuzzerConnection:
with open(filepath, 'rb') as f:
while bytes_sent < file_size:
# NEU: Prüfe, ob der Controller VORZEITIG abgebrochen hat (z.B. ERR)
# 1. Nicht blockierende Fehlerprüfung vor jedem Chunk
if self.serial.in_waiting > 0:
line = self.serial.readline().decode('utf-8', errors='ignore').strip()
if line.startswith("ERR"):
raise BuzzerError(f"Controller hat Transfer abgebrochen: {line}")
# 2. Chunk lesen und schreiben
chunk = f.read(chunk_size)
if not chunk:
break
self.serial.write(chunk)
self.serial.flush()
# WICHTIG: self.serial.flush() hier entfernen.
# Dies verhindert den Deadlock mit dem OS-USB-Puffer.
bytes_sent += len(chunk)
# 3. Callback für UI
if progress_callback:
progress_callback(len(chunk))
# 3. Warte auf das finale OK (oder ERR bei CRC/Schreib-Fehlern)
start_time = time.time()
while (time.time() - start_time) < timeout: