mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 00:07:51 -06:00
Added thread safety checks to close function
This commit is contained in:
parent
a07781fa26
commit
d66faf6ecd
2 changed files with 12 additions and 9 deletions
|
@ -117,7 +117,6 @@ class PrinterConnection(SignalEmitter):
|
||||||
self._connect_thread.start()
|
self._connect_thread.start()
|
||||||
|
|
||||||
def updateFirmware(self, file_name):
|
def updateFirmware(self, file_name):
|
||||||
print("Update firmware; " , self._is_connecting, " ", self._is_connected )
|
|
||||||
if self._is_connecting or self._is_connected:
|
if self._is_connecting or self._is_connected:
|
||||||
self.close()
|
self.close()
|
||||||
hex_file = intelHex.readHex(file_name)
|
hex_file = intelHex.readHex(file_name)
|
||||||
|
@ -219,9 +218,13 @@ class PrinterConnection(SignalEmitter):
|
||||||
|
|
||||||
## Close the printer connection
|
## Close the printer connection
|
||||||
def close(self):
|
def close(self):
|
||||||
|
if self._connect_thread.isAlive():
|
||||||
|
self._connect_thread.join()
|
||||||
if self._serial is not None:
|
if self._serial is not None:
|
||||||
self._serial.close()
|
|
||||||
self.setIsConnected(False)
|
self.setIsConnected(False)
|
||||||
|
self._listen_thread.join()
|
||||||
|
self._serial.close()
|
||||||
|
|
||||||
self._serial = None
|
self._serial = None
|
||||||
|
|
||||||
def isConnected(self):
|
def isConnected(self):
|
||||||
|
@ -417,8 +420,8 @@ class PrinterConnection(SignalEmitter):
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
ret = self._serial.readline()
|
ret = self._serial.readline()
|
||||||
except:
|
except Exception as e:
|
||||||
Logger.log('e',"Unexpected error while reading serial port.")
|
Logger.log('e',"Unexpected error while reading serial port. %s" %e)
|
||||||
self._setErrorState("Printer has been disconnected")
|
self._setErrorState("Printer has been disconnected")
|
||||||
#self._errorValue = getExceptionString()
|
#self._errorValue = getExceptionString()
|
||||||
self.close()
|
self.close()
|
||||||
|
|
|
@ -76,18 +76,18 @@ class Stk500v2(ispBase.IspBase):
|
||||||
recv = self.sendMessage([0x1D, 4, 4, 0, data[0], data[1], data[2], data[3]])
|
recv = self.sendMessage([0x1D, 4, 4, 0, data[0], data[1], data[2], data[3]])
|
||||||
return recv[2:6]
|
return recv[2:6]
|
||||||
|
|
||||||
def writeFlash(self, flashData):
|
def writeFlash(self, flash_data):
|
||||||
#Set load addr to 0, in case we have more then 64k flash we need to enable the address extension
|
#Set load addr to 0, in case we have more then 64k flash we need to enable the address extension
|
||||||
pageSize = self.chip['pageSize'] * 2
|
page_size = self.chip['pageSize'] * 2
|
||||||
flashSize = pageSize * self.chip['pageCount']
|
flashSize = page_size * self.chip['pageCount']
|
||||||
if flashSize > 0xFFFF:
|
if flashSize > 0xFFFF:
|
||||||
self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00])
|
self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00])
|
||||||
else:
|
else:
|
||||||
self.sendMessage([0x06, 0x00, 0x00, 0x00, 0x00])
|
self.sendMessage([0x06, 0x00, 0x00, 0x00, 0x00])
|
||||||
|
|
||||||
loadCount = (len(flashData) + pageSize - 1) / pageSize
|
loadCount = (len(flash_data) + page_size - 1) / page_size
|
||||||
for i in range(0, loadCount):
|
for i in range(0, loadCount):
|
||||||
recv = self.sendMessage([0x13, pageSize >> 8, pageSize & 0xFF, 0xc1, 0x0a, 0x40, 0x4c, 0x20, 0x00, 0x00] + flashData[(i * pageSize):(i * pageSize + pageSize)])
|
recv = self.sendMessage([0x13, page_size >> 8, page_size & 0xFF, 0xc1, 0x0a, 0x40, 0x4c, 0x20, 0x00, 0x00] + flash_data[(i * page_size):(i * page_size + page_size)])
|
||||||
if self.progressCallback is not None:
|
if self.progressCallback is not None:
|
||||||
if self._has_checksum:
|
if self._has_checksum:
|
||||||
self.progressCallback(i + 1, loadCount)
|
self.progressCallback(i + 1, loadCount)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue