mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-11 08:47:50 -06:00
Added upload firmware function to printer connection
This commit is contained in:
parent
d7262c6ac6
commit
f5e8e7df80
1 changed files with 25 additions and 1 deletions
|
@ -9,6 +9,7 @@ import functools
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Signal import Signal, SignalEmitter
|
from UM.Signal import Signal, SignalEmitter
|
||||||
|
from UM.Resources import Resources
|
||||||
|
|
||||||
|
|
||||||
class PrinterConnection(SignalEmitter):
|
class PrinterConnection(SignalEmitter):
|
||||||
|
@ -113,6 +114,29 @@ class PrinterConnection(SignalEmitter):
|
||||||
if not self._connect_thread.isAlive():
|
if not self._connect_thread.isAlive():
|
||||||
self._connect_thread.start()
|
self._connect_thread.start()
|
||||||
|
|
||||||
|
|
||||||
|
def updateFirmware(self, file_name):
|
||||||
|
if self._is_connecting or self._is_connected:
|
||||||
|
return False
|
||||||
|
|
||||||
|
hex_file = intelHex.readHex(file_name)
|
||||||
|
if len(hex_file) == 0:
|
||||||
|
Logger.log('e', "Unable to read provided hex file. Could not update firmware")
|
||||||
|
return False
|
||||||
|
programmer = stk500v2.Stk500v2()
|
||||||
|
programmer.connect(self._serial_port)
|
||||||
|
time.sleep(1) #Give programmer some time to connect
|
||||||
|
if not programmer.isConnected():
|
||||||
|
Logger.log('e', "Unable to connect with serial. Could not update firmware")
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
programmer.programChip(hex_file)
|
||||||
|
except Exception as e:
|
||||||
|
Logger.log("e", "Exception while trying to update firmware" , e)
|
||||||
|
return False
|
||||||
|
programmer.close()
|
||||||
|
return True
|
||||||
|
|
||||||
## Private connect function run by thread. Can be started by calling connect.
|
## Private connect function run by thread. Can be started by calling connect.
|
||||||
def _connect(self):
|
def _connect(self):
|
||||||
self._is_connecting = True
|
self._is_connecting = True
|
||||||
|
@ -121,7 +145,7 @@ class PrinterConnection(SignalEmitter):
|
||||||
programmer.connect(self._serial_port) #Connect with the serial, if this succeeds, it's an arduino based usb device.
|
programmer.connect(self._serial_port) #Connect with the serial, if this succeeds, it's an arduino based usb device.
|
||||||
self._serial = programmer.leaveISP()
|
self._serial = programmer.leaveISP()
|
||||||
except ispBase.IspError as e:
|
except ispBase.IspError as e:
|
||||||
Logger.log('i', "Could not establish connection on %s: %s. Device is not arduino based." %(self._serial_port,str(e)))
|
Logger.log('i', "Could not establish connect ion on %s: %s. Device is not arduino based." %(self._serial_port,str(e)))
|
||||||
except:
|
except:
|
||||||
Logger.log('i', "Could not establish connection on %s, unknown reasons. Device is not arduino based." % self._serial_port)
|
Logger.log('i', "Could not establish connection on %s, unknown reasons. Device is not arduino based." % self._serial_port)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue