More cleanup

This commit is contained in:
Jaime van Kessel 2015-04-24 13:43:21 +02:00
parent f0601675f2
commit 13d2d7e42a

View file

@ -30,16 +30,17 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
self._progress = 0 self._progress = 0
self._control_view = None self._control_view = None
self._firmware_view = None self._firmware_view = None
self._extruder_temp = 0 self._extruder_temp = 0
self._bed_temp = 0 self._bed_temp = 0
self._error_message = "" self._error_message = ""
## Add menu item to top menu. ## Add menu item to top menu of the application.
self.addMenuItem(i18n_catalog.i18n("Update firmware"), self.updateAllFirmware) self.addMenuItem(i18n_catalog.i18n("Update firmware"), self.updateAllFirmware)
## Show firmware interface.
# This will create the view if its not already created.
def spawnFirmwareInterface(self, serial_port): def spawnFirmwareInterface(self, serial_port):
if self._firmware_view is None: if self._firmware_view is None:
self._firmware_view = QQuickView() self._firmware_view = QQuickView()
@ -47,7 +48,8 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
self._firmware_view.setSource(QUrl("plugins/USBPrinting/FirmwareUpdateWindow.qml")) self._firmware_view.setSource(QUrl("plugins/USBPrinting/FirmwareUpdateWindow.qml"))
self._firmware_view.show() self._firmware_view.show()
## Show control interface.
# This will create the view if its not already created.
def spawnControlInterface(self,serial_port): def spawnControlInterface(self,serial_port):
if self._control_view is None: if self._control_view is None:
self._control_view = QQuickView() self._control_view = QQuickView()
@ -55,27 +57,30 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
self._control_view.setSource(QUrl("plugins/USBPrinting/ControlWindow.qml")) self._control_view.setSource(QUrl("plugins/USBPrinting/ControlWindow.qml"))
self._control_view.show() self._control_view.show()
processingProgress = pyqtSignal(float, arguments = ['amount'])
@pyqtProperty(float,notify = processingProgress) @pyqtProperty(float,notify = processingProgress)
def progress(self): def progress(self):
return self._progress return self._progress
pyqtExtruderTemperature = pyqtSignal(float, arguments = ['amount']) processingProgress = pyqtSignal(float, arguments = ['amount'])
@pyqtProperty(float,notify = pyqtExtruderTemperature) @pyqtProperty(float,notify = pyqtExtruderTemperature)
def extruderTemperature(self): def extruderTemperature(self):
return self._extruder_temp return self._extruder_temp
pyqtBedTemperature = pyqtSignal(float, arguments = ['amount']) pyqtExtruderTemperature = pyqtSignal(float, arguments = ['amount'])
@pyqtProperty(float,notify = pyqtBedTemperature) @pyqtProperty(float,notify = pyqtBedTemperature)
def bedTemperature(self): def bedTemperature(self):
return self._bed_temp return self._bed_temp
pyqtError = pyqtSignal(str, arguments = ['amount']) pyqtBedTemperature = pyqtSignal(float, arguments = ['amount'])
@pyqtProperty(str,notify = pyqtError) @pyqtProperty(str,notify = pyqtError)
def error(self): def error(self):
return self._error_message return self._error_message
pyqtError = pyqtSignal(str, arguments = ['amount'])
## Check all serial ports and create a PrinterConnection object for them. ## Check all serial ports and create a PrinterConnection object for them.
# Note that this does not validate if the serial ports are actually usable! # Note that this does not validate if the serial ports are actually usable!
# This (the validation) is only done when the connect function is called. # This (the validation) is only done when the connect function is called.
@ -104,13 +109,6 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
connection.close() connection.close()
time.sleep(5) # Throttle, as we don't need this information to be updated every single second. time.sleep(5) # Throttle, as we don't need this information to be updated every single second.
def onExtruderTemperature(self, serial_port, index,temperature):
#print("ExtruderTemperature " , serial_port, " " , index, " " , temperature)
self._extruder_temp = temperature
self.pyqtExtruderTemperature.emit(temperature)
pass
def updateAllFirmware(self): def updateAllFirmware(self):
self.spawnFirmwareInterface("") self.spawnFirmwareInterface("")
for printer_connection in self._printer_connections: for printer_connection in self._printer_connections:
@ -142,35 +140,38 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
elif machine_type == "ultimaker2": elif machine_type == "ultimaker2":
return "MarlinUltimaker2.hex" return "MarlinUltimaker2.hex"
##TODO: Add check for multiple extruders ##TODO: Add check for multiple extruders
if firmware_name != "": if firmware_name != "":
firmware_name += ".hex" firmware_name += ".hex"
return firmware_name return firmware_name
## Callback for extruder temperature change
def onExtruderTemperature(self, serial_port, index, temperature):
self._extruder_temp = temperature
self.pyqtExtruderTemperature.emit(temperature)
## Callback for bed temperature change
def onBedTemperature(self, serial_port,temperature): def onBedTemperature(self, serial_port,temperature):
self._bed_temperature = temperature self._bed_temperature = temperature
self.pyqtBedTemperature.emit(temperature) self.pyqtBedTemperature.emit(temperature)
#print("bedTemperature " , serial_port, " " , temperature)
pass
## Callback for error
def onError(self, error): def onError(self, error):
self._error_message = error self._error_message = error
self.pyqtError.emit(error) self.pyqtError.emit(error)
pass
## Callback for progress change
def onProgress(self, progress, serial_port): def onProgress(self, progress, serial_port):
self._progress = progress self._progress = progress
self.processingProgress.emit(progress) self.processingProgress.emit(progress)
pass
## Attempt to connect with all possible connections. ## Attempt to connect with all possible connections.
def connectAllConnections(self): def connectAllConnections(self):
for connection in self._printer_connections: for connection in self._printer_connections:
connection.connect() connection.connect()
## send gcode to printer and start printing ## Send gcode to printer and start printing
def sendGCodeByPort(self, serial_port, gcode_list): def sendGCodeByPort(self, serial_port, gcode_list):
printer_connection = self.getConnectionByPort(serial_port) printer_connection = self.getConnectionByPort(serial_port)
if printer_connection is not None: if printer_connection is not None:
@ -215,7 +216,8 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
else: else:
return False return False
## Callback if the connection state of a connection is changed.
# This adds or removes the connection as a possible output device.
def serialConectionStateCallback(self, serial_port): def serialConectionStateCallback(self, serial_port):
connection = self.getConnectionByPort(serial_port) connection = self.getConnectionByPort(serial_port)
if connection.isConnected(): if connection.isConnected():
@ -229,13 +231,6 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
else: else:
Application.getInstance().removeOutputDevice(serial_port) Application.getInstance().removeOutputDevice(serial_port)
'''def _writeToSerial(self, serial_port):
gcode_list = getattr(Application.getInstance().getController().getScene(), 'gcode_list', None)
if gcode_list:
final_list = []
for gcode in gcode_list:
final_list += gcode.split('\n')
self.sendGCodeByPort(serial_port, gcode_list)'''
@pyqtSlot() @pyqtSlot()
def startPrint(self): def startPrint(self):
gcode_list = getattr(Application.getInstance().getController().getScene(), 'gcode_list', None) gcode_list = getattr(Application.getInstance().getController().getScene(), 'gcode_list', None)
@ -245,12 +240,11 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
final_list += gcode.split('\n') final_list += gcode.split('\n')
self.sendGCodeToAllActive(gcode_list) self.sendGCodeToAllActive(gcode_list)
## Get a list of printer connection objects that are connected. ## Get a list of printer connection objects that are connected.
def getActiveConnections(self): def getActiveConnections(self):
return [connection for connection in self._printer_connections if connection.isConnected()] return [connection for connection in self._printer_connections if connection.isConnected()]
## get a printer connection object by serial port ## Get a printer connection object by serial port
def getConnectionByPort(self, serial_port): def getConnectionByPort(self, serial_port):
for printer_connection in self._printer_connections: for printer_connection in self._printer_connections:
if serial_port == printer_connection.getSerialPort(): if serial_port == printer_connection.getSerialPort():
@ -271,18 +265,12 @@ class USBPrinterManager(QObject, SignalEmitter, Extension):
if not base_list or 'USBSER' in values[0]: if not base_list or 'USBSER' in values[0]:
base_list + =[values[1]] base_list + =[values[1]]
i += 1 i += 1
except: except Exception as e:
pass pass
if base_list: if base_list:
base_list = base_list + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/cu.usb*") base_list = base_list + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/cu.usb*")
base_list = filter(lambda s: not 'Bluetooth' in s, base_list) # Filter because mac sometimes puts them in the list base_list = filter(lambda s: not 'Bluetooth' in s, base_list) # Filter because mac sometimes puts them in the list
#prev = profile.getMachineSetting('serial_port_auto')
#if prev in base_list:
# base_list.remove(prev)
# base_list.insert(0, prev)
else: else:
base_list = base_list + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/cu.*") + glob.glob("/dev/tty.usb*") + glob.glob("/dev/rfcomm*") + glob.glob('/dev/serial/by-id/*') base_list = base_list + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/cu.*") + glob.glob("/dev/tty.usb*") + glob.glob("/dev/rfcomm*") + glob.glob('/dev/serial/by-id/*')
#if version.isDevVersion() and not base_list:
#base_list.append('VIRTUAL')
return base_list return base_list