diff --git a/plugins/USBPrinting/AutoDetectBaudJob.py b/plugins/USBPrinting/AutoDetectBaudJob.py index 574e241453..72f4f20262 100644 --- a/plugins/USBPrinting/AutoDetectBaudJob.py +++ b/plugins/USBPrinting/AutoDetectBaudJob.py @@ -10,6 +10,9 @@ from time import time, sleep from serial import Serial, SerialException +# An async job that attempts to find the correct baud rate for a USB printer. +# It tries a pre-set list of baud rates. All these baud rates are validated by requesting the temperature a few times +# and checking if the results make sense. If getResult() is not None, it was able to find a correct baud rate. class AutoDetectBaudJob(Job): def __init__(self, serial_port): super().__init__() @@ -43,7 +46,7 @@ class AutoDetectBaudJob(Job): serial.baudrate = baud_rate except: continue - sleep(1.5) # Ensure that we are not talking to the bootloader. 1.5 seconds seems to be the magic number + sleep(1.5) # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number successful_responses = 0 serial.write(b"\n") # Ensure we clear out previous responses @@ -60,4 +63,4 @@ class AutoDetectBaudJob(Job): return serial.write(b"M105\n") - self.setResult(None) # Unable to detect the correct baudrate. \ No newline at end of file + self.setResult(None) # Unable to detect the correct baudrate. diff --git a/plugins/USBPrinting/FirmwareUpdateWindow.qml b/plugins/USBPrinting/FirmwareUpdateWindow.qml index bd0c85f49d..e0f9de314e 100644 --- a/plugins/USBPrinting/FirmwareUpdateWindow.qml +++ b/plugins/USBPrinting/FirmwareUpdateWindow.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Ultimaker B.V. +// Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -68,7 +68,6 @@ UM.Dialog left: parent.left; right: parent.right; } - } SystemPalette diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 100643b490..1e28e252d1 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -22,6 +22,7 @@ from threading import Thread from time import time, sleep from queue import Queue from enum import IntEnum +from typing import Union, Optional, List import re import functools # Used for reduce @@ -34,20 +35,20 @@ class USBPrinterOutputDevice(PrinterOutputDevice): firmwareProgressChanged = pyqtSignal() firmwareUpdateStateChanged = pyqtSignal() - def __init__(self, serial_port, baud_rate = None): + def __init__(self, serial_port: str, baud_rate: Optional[int] = None): super().__init__(serial_port) self.setName(catalog.i18nc("@item:inmenu", "USB printing")) self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print via USB")) self.setDescription(catalog.i18nc("@info:tooltip", "Print via USB")) self.setIconName("print") - self._serial = None + self._serial = None # type: Optional[Serial] self._serial_port = serial_port self._timeout = 3 # List of gcode lines to be printed - self._gcode = [] + self._gcode = [] # type: List[str] self._gcode_position = 0 self._use_auto_detect = True @@ -61,13 +62,13 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._update_firmware_thread = Thread(target=self._updateFirmware, daemon = True) - self._last_temperature_request = None + self._last_temperature_request = None # type: Optional[int] self._is_printing = False # A print is being sent. ## Set when print is started in order to check running time. - self._print_start_time = None - self._print_estimated_time = None + self._print_start_time = None # type: Optional[int] + self._print_estimated_time = None # type: Optional[int] self._accepts_commands = True @@ -90,7 +91,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): # \param kwargs Keyword arguments. def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None, **kwargs): if self._is_printing: - return # Aleady printing + return # Aleady printing Application.getInstance().getController().setActiveStage("MonitorStage") @@ -181,7 +182,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): ## Start a print based on a g-code. # \param gcode_list List with gcode (strings). - def _printGCode(self, gcode_list): + def _printGCode(self, gcode_list: List[str]): self._gcode.clear() self._paused = False @@ -201,13 +202,13 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self.writeFinished.emit(self) - def _autoDetectFinished(self, job): + def _autoDetectFinished(self, job: AutoDetectBaudJob): result = job.getResult() if result is not None: self.setBaudRate(result) self.connect() # Try to connect (actually create serial, etc) - def setBaudRate(self, baud_rate): + def setBaudRate(self, baud_rate: int): if baud_rate not in self._all_baud_rates: Logger.log("w", "Not updating baudrate to {baud_rate} as it's an unknown baudrate".format(baud_rate=baud_rate)) return @@ -243,13 +244,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._update_thread = Thread(target=self._update, daemon=True) self._serial = None - def sendCommand(self, command): + ## Send a command to printer. + def sendCommand(self, command: Union[str, bytes]): if self._is_printing: self._command_queue.put(command) elif self._connection_state == ConnectionState.connected: self._sendCommand(command) - def _sendCommand(self, command): + def _sendCommand(self, command: Union[str, bytes]): if self._serial is None: return diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index 4de71e8b23..58b6106fb0 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -22,7 +22,7 @@ import serial.tools.list_ports i18n_catalog = i18nCatalog("cura") -## Manager class that ensures that a usbPrinteroutput device is created for every connected USB printer. +## Manager class that ensures that an USBPrinterOutput device is created for every connected USB printer. @signalemitter class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin): addUSBOutputDeviceSignal = Signal()