diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index ce3342bb72..dc4c31ac9c 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -267,19 +267,27 @@ class USBPrinterOutputDevice(PrinterOutputDevice): if b"FIRMWARE_NAME:" in line: self._setFirmwareName(line) - if line.startswith(b"ok "): + if line == b"": + # An empty line means that the firmware is idle + # Multiple empty lines probably means that the firmware and Cura are waiting + # for eachother due to a missed "ok", so we keep track of empty lines + self._firmware_idle_count += 1 + else: + self._firmware_idle_count = 0 + + if line.startswith(b"ok") or self._firmware_idle_count > 1: self._printer_busy = False self._command_received.set() if not self._command_queue.empty(): self._sendCommand(self._command_queue.get()) - if self._is_printing: + elif self._is_printing: if self._paused: pass # Nothing to do! else: self._sendNextGcodeLine() - if line.startswith(b"echo:busy: "): + if line.startswith(b"echo:busy:"): self._printer_busy = True if self._is_printing: