diff --git a/PrinterConnection.py b/PrinterConnection.py index d94beea6c5..ff5e97584d 100644 --- a/PrinterConnection.py +++ b/PrinterConnection.py @@ -117,7 +117,6 @@ class PrinterConnection(SignalEmitter): self._connect_thread.start() def updateFirmware(self, file_name): - print("Update firmware; " , self._is_connecting, " ", self._is_connected ) if self._is_connecting or self._is_connected: self.close() hex_file = intelHex.readHex(file_name) @@ -219,9 +218,13 @@ class PrinterConnection(SignalEmitter): ## Close the printer connection def close(self): + if self._connect_thread.isAlive(): + self._connect_thread.join() if self._serial is not None: - self._serial.close() self.setIsConnected(False) + self._listen_thread.join() + self._serial.close() + self._serial = None def isConnected(self): @@ -417,8 +420,8 @@ class PrinterConnection(SignalEmitter): return None try: ret = self._serial.readline() - except: - Logger.log('e',"Unexpected error while reading serial port.") + except Exception as e: + Logger.log('e',"Unexpected error while reading serial port. %s" %e) self._setErrorState("Printer has been disconnected") #self._errorValue = getExceptionString() self.close() diff --git a/avr_isp/stk500v2.py b/avr_isp/stk500v2.py index 778adc7da3..f4c352f977 100644 --- a/avr_isp/stk500v2.py +++ b/avr_isp/stk500v2.py @@ -76,18 +76,18 @@ class Stk500v2(ispBase.IspBase): recv = self.sendMessage([0x1D, 4, 4, 0, data[0], data[1], data[2], data[3]]) 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 - pageSize = self.chip['pageSize'] * 2 - flashSize = pageSize * self.chip['pageCount'] + page_size = self.chip['pageSize'] * 2 + flashSize = page_size * self.chip['pageCount'] if flashSize > 0xFFFF: self.sendMessage([0x06, 0x80, 0x00, 0x00, 0x00]) else: 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): - 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._has_checksum: self.progressCallback(i + 1, loadCount)