chiark / gitweb /
Better catch errors in first run wizard.
authorDaid <daid303@gmail.com>
Wed, 9 May 2012 20:47:27 +0000 (22:47 +0200)
committerDaid <daid303@gmail.com>
Wed, 9 May 2012 20:47:27 +0000 (22:47 +0200)
Cura/gui/configWizard.py
Cura/gui/machineCom.py

index 812b073f0f9c89b7d513d6f32a8c68d745ce731d..50f849896cf838dba6ea26c7c4433df11353b6dd 100644 (file)
@@ -174,6 +174,11 @@ class UltimakerCheckupPage(InfoPage):
        def OnRun(self):\r
                wx.CallAfter(self.AddProgressText, "Connecting to machine...")\r
                self.comm = machineCom.MachineCom()\r
+               \r
+               if not self.comm.isOpen():\r
+                       wx.CallAfter(self.AddProgressText, "Error: Failed to open serial port to machine")\r
+                       wx.CallAfter(self.AddProgressText, "If this keeps happening, try disconnecting and reconnecting the USB cable")\r
+                       return\r
 \r
                wx.CallAfter(self.AddProgressText, "Checking start message...")\r
                if self.DoCommCommandWithTimeout(None, 'start') == False:\r
@@ -288,10 +293,10 @@ class UltimakerCheckupPage(InfoPage):
                t.start()\r
                while True:\r
                        line = self.comm.readline()\r
-                       if line == '':\r
+                       if line == '' or line == None:\r
                                self.comm.close()\r
                                return False\r
-                       print line\r
+                       print line.rstrip()\r
                        if line.startswith(replyStart):\r
                                break\r
                t.cancel()\r
@@ -369,6 +374,10 @@ class UltimakerCalibrateStepsPerEPage(InfoPage):
                self.extrudeButton.Enable(False)\r
                currentEValue = float(self.stepsPerEInput.GetValue())\r
                self.comm = machineCom.MachineCom()\r
+               if not self.comm.isOpen():\r
+                       wx.CallAfter(self.AddProgressText, "Error: Failed to open serial port to machine")\r
+                       wx.CallAfter(self.AddProgressText, "If this keeps happening, try disconnecting and reconnecting the USB cable")\r
+                       return\r
                while True:\r
                        line = self.comm.readline()\r
                        if line == '':\r
@@ -392,6 +401,10 @@ class UltimakerCalibrateStepsPerEPage(InfoPage):
        \r
        def OnHeatRun(self):\r
                self.comm = machineCom.MachineCom()\r
+               if not self.comm.isOpen():\r
+                       wx.CallAfter(self.AddProgressText, "Error: Failed to open serial port to machine")\r
+                       wx.CallAfter(self.AddProgressText, "If this keeps happening, try disconnecting and reconnecting the USB cable")\r
+                       return\r
                while True:\r
                        line = self.comm.readline()\r
                        if line == '':\r
index 5157fbe87d8e76975b215ee5dcfb939a9825476c..73837d48adf2e3023c27714527dba26c102f9c72 100644 (file)
@@ -153,12 +153,13 @@ class MachineCom():
                        programmer = stk500v2.Stk500v2()
                        for port in serialList():
                                try:
+                                       print "Connecting to: %s %i" % (port, baudrate)
                                        programmer.connect(port)
                                        programmer.close()
-                                       print "Connecting to: %s %i" % (port, baudrate)
                                        self.serial = Serial(port, baudrate, timeout=2)
                                        break
                                except ispBase.IspError:
+                                       print "Error while connecting to %s %i" % (port, baudrate)
                                        pass
                                except:
                                        print "Unexpected error while connecting to serial port:" + port, sys.exc_info()[0]
@@ -170,6 +171,7 @@ class MachineCom():
                                self.serial = Serial(port, baudrate, timeout=2)
                        except:
                                print "Unexpected error while connecting to serial port:" + port, sys.exc_info()[0]
+               print self.serial
 
        def readline(self):
                if self.serial == None:
@@ -184,6 +186,12 @@ class MachineCom():
                        self.serial.close()
                self.serial = None
        
+       def __del__(self):
+               self.close()
+       
+       def isOpen(self):
+               return self.serial != None
+       
        def sendCommand(self, cmd):
                if self.serial == None:
                        return