From bc275ccdc29b616e6a099c67f49752758a04b914 Mon Sep 17 00:00:00 2001 From: daid303 Date: Thu, 4 Oct 2012 14:05:09 +0200 Subject: [PATCH] Add extrude/retract images for printing interface. Made exception handling a bit more rubust in machine comunication. --- Cura/gui/printWindow.py | 4 ++-- Cura/gui/webcam.py | 17 +++++++++------ Cura/images/extrude.png | Bin 0 -> 387 bytes Cura/images/retract.png | Bin 0 -> 358 bytes Cura/util/machineCom.py | 46 +++++++++++++++++++++++++++------------- 5 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 Cura/images/extrude.png create mode 100644 Cura/images/retract.png diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index e2df8b2e..a648dccc 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -188,8 +188,8 @@ class printWindow(wx.Frame): sizer.Add(PrintCommandButton(self, ['G91', 'G1 Z-1 F200', 'G90'], 'print-move-z-1.png'), pos=(5,8)) sizer.Add(PrintCommandButton(self, ['G91', 'G1 Z-10 F200', 'G90'], 'print-move-z-10.png'), pos=(6,8)) - sizer.Add(PrintCommandButton(self, ['G92 E0', 'G1 E2 F120'], 'question.png'), pos=(8,1)) - sizer.Add(PrintCommandButton(self, ['G92 E0', 'G1 E-2 F120'], 'question.png'), pos=(8,2)) + sizer.Add(PrintCommandButton(self, ['G92 E0', 'G1 E2 F120'], 'extrude.png', size=(60,20)), pos=(1,10), span=(1,3), flag=wx.EXPAND) + sizer.Add(PrintCommandButton(self, ['G92 E0', 'G1 E-2 F120'], 'retract.png', size=(60,20)), pos=(2,10), span=(1,3), flag=wx.EXPAND) nb.AddPage(self.directControlPanel, 'Jog') diff --git a/Cura/gui/webcam.py b/Cura/gui/webcam.py index 1f309983..d4fe69c5 100644 --- a/Cura/gui/webcam.py +++ b/Cura/gui/webcam.py @@ -80,13 +80,16 @@ class webcam(object): self._bitmap = wx.BitmapFromBuffer(frame.width, frame.height, frame.imageData) elif win32vidcap != None: buffer, width, height = self._cam.getbuffer() - wxImage = wx.EmptyImage(width, height) - wxImage.SetData(buffer[::-1]) - if self._bitmap != None: - del self._bitmap - self._bitmap = wxImage.ConvertToBitmap() - del wxImage - del buffer + try: + wxImage = wx.EmptyImage(width, height) + wxImage.SetData(buffer[::-1]) + if self._bitmap != None: + del self._bitmap + self._bitmap = wxImage.ConvertToBitmap() + del wxImage + del buffer + except: + pass if self._doTimelaps: filename = os.path.normpath(os.path.join(os.path.split(__file__)[0], "../__tmp_snap", "__tmp_snap_%04d.jpg" % (self._snapshotCount))) diff --git a/Cura/images/extrude.png b/Cura/images/extrude.png new file mode 100644 index 0000000000000000000000000000000000000000..2af4a5aec30f7a294f5b158e9555c8c273a95240 GIT binary patch literal 387 zcmV-}0et?6P)NklqbM8Zh3jY@kxPw|Dw}rbn#x`!@K}qjl9HqC8 z-Q?QPj$dfOL;MU+ExemJ2~U~6;S_8nUSKSZomjvMmLpWh56l*NzsJx7M#2OAsqZe- zu4RDtsVUPpi~~GQw4xD9_!fem5Il=WM}crZ?>T(E!qj2%gULTF({E1EZA|9<7VDV8 zM|{BQB`45|FX+W6m(hflCAqF^*<*JqIY$4xtIJFoQ+({lioppD>DfJkPgpWVk8p6@FwNfAB6F?kUl~ hG1OwBLWK%tI0fz#S=)rxmURFC002ovPDHLkV1oV4suTbK literal 0 HcmV?d00001 diff --git a/Cura/images/retract.png b/Cura/images/retract.png new file mode 100644 index 0000000000000000000000000000000000000000..cefd1f7c8519c117e824a4404707e9bb7a2ffa3e GIT binary patch literal 358 zcmV-s0h#`ZP)}&=ijrir7;MU7Fvwt0l34fxR*Q@li@|1)Z$LhROc-ni3q3KRC+{x_ z%em{O=YANJ!Tqn(b)9qW|LK37b8d3v_+8Y*S&vq{;|7nZSb{Q|QAoue@mztM)b7A7 z?o*sD)Zqke73y6l&J^Bo9ErtL>?~{)ySNAe=UB<$!ccs-6@C#r@wn57SE?s1>Mri9 zIE>f>2E!U6KO9Axs&HWg`*=Y+=5ZO_fq{&ApIX;|1N34NEz#zs$j_jZu?AncMND7} zYnVn4j&K#6y{w(8P2Hcc5JEdsGad>nRoTt2+;KEw6Wy2%L4DyDF!J5Pr$;asVwR(= zuVLdq7+=D@ictz7@94*N timeout: if len(self._baudrateDetectList) < 1: - self._log("No more baudrates to test, and no suitable baudrate found.") self.close() + self._errorValue = "No more baudrates to test, and no suitable baudrate found." + self._changeState(self.STATE_ERROR) elif self._baudrateDetectRetry > 0: self._baudrateDetectRetry -= 1 self._serial.write('\n') + self._log("Baudrate test retry: %d" % (self._baudrateDetectRetry)) self._sendCommand("M105") + self._testingBaudrate = True else: baudrate = self._baudrateDetectList.pop(0) try: @@ -331,16 +339,25 @@ class MachineCom(object): self._serial.timeout = 0.5 self._log("Trying baudrate: %d" % (baudrate)) self._baudrateDetectRetry = 5 + self._baudrateDetectTestOk = 0 timeout = time.time() + 5 self._serial.write('\n') self._sendCommand("M105") + self._testingBaudrate = True except: self._log("Unexpected error while setting baudrate: %d %s" % (baudrate, getExceptionString())) - elif 'ok' in line: - self._sendCommand("M999") - self._serial.timeout = 2 - profile.putPreference('serial_baud_auto', self._serial.baudrate) - self._changeState(self.STATE_OPERATIONAL) + elif 'ok' in line and 'T:' in line: + self._baudrateDetectTestOk += 1 + if self._baudrateDetectTestOk < 10: + self._log("Baudrate test ok: %d" % (self._baudrateDetectTestOk)) + self._sendCommand("M105") + else: + self._sendCommand("M999") + self._serial.timeout = 2 + profile.putPreference('serial_baud_auto', self._serial.baudrate) + self._changeState(self.STATE_OPERATIONAL) + else: + self._testingBaudrate = False elif self._state == self.STATE_CONNECTING: if line == '': self._sendCommand("M105") @@ -430,7 +447,7 @@ class MachineCom(object): self._log('Send: %s' % (cmd)) try: self._serial.write(cmd + '\n') - except SerialTimeoutException: + except serial.SerialTimeoutException: self._log("Serial timeout while writing to serial port, trying again.") try: self._serial.write(cmd + '\n') @@ -505,4 +522,3 @@ class MachineCom(object): def getExceptionString(): locationInfo = traceback.extract_tb(sys.exc_info()[2])[0] return "%s: '%s' @ %s:%s:%d" % (str(sys.exc_info()[0].__name__), str(sys.exc_info()[1]), os.path.basename(locationInfo[0]), locationInfo[2], locationInfo[1]) - -- 2.30.2