chiark / gitweb /
Added feature #201 - fixed #201
authordaid <daid303@gmail.com>
Mon, 10 Sep 2012 13:49:50 +0000 (15:49 +0200)
committerdaid <daid303@gmail.com>
Mon, 10 Sep 2012 13:49:50 +0000 (15:49 +0200)
Cura/util/machineCom.py
Cura/util/profile.py

index 43369a79fbe9fb5b4d2a2adb29cf33a33dd60204..384a03b79cd6f2a4efe8b3729604e2435887ed99 100644 (file)
@@ -18,20 +18,31 @@ except:
        pass
 
 def serialList():
-    baselist=[]
-    if os.name=="nt":
-        try:
-            key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
-            i=0
-            while(1):
-                baselist+=[_winreg.EnumValue(key,i)[1]]
-                i+=1
-        except:
-            pass
-    return baselist+glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') +glob.glob("/dev/tty.usb*")+glob.glob("/dev/cu.*")+glob.glob("/dev/rfcomm*")
+       baselist=[]
+       if os.name=="nt":
+               try:
+                       key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
+                       i=0
+                       while(1):
+                               baselist+=[_winreg.EnumValue(key,i)[1]]
+                               i+=1
+               except:
+                       pass
+       baselist = baselist + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') + glob.glob("/dev/tty.usb*") + glob.glob("/dev/cu.*") + glob.glob("/dev/rfcomm*")
+       prev = profile.getPreference('serial_port_auto')
+       if prev in baselist:
+               baselist.remove(prev)
+               baselist.insert(0, prev)
+       return baselist
 
 def baudrateList():
-       return [250000, 230400, 115200, 57600, 38400, 19200, 9600]
+       ret = [250000, 230400, 115200, 57600, 38400, 19200, 9600]
+       if profile.getPreference('serial_baud_auto') != '':
+               prev = int(profile.getPreference('serial_baud_auto'))
+               if prev in ret:
+                       ret.remove(prev)
+                       ret.insert(0, prev)
+       return ret
 
 class VirtualPrinter():
        def __init__(self):
@@ -148,6 +159,7 @@ class MachineCom(object):
                                        self._log("Connecting to: %s" % (port))
                                        programmer.connect(port)
                                        self._serial = programmer.leaveISP()
+                                       profile.putPreference('serial_port_auto', port)
                                        break
                                except ispBase.IspError as (e):
                                        self._log("Error while connecting to %s: %s" % (port, str(e)))
@@ -276,6 +288,7 @@ class MachineCom(object):
                                                        self._log("Unexpected error while setting baudrate: %d %s" % (baudrate, getExceptionString()))
                                elif 'ok' in line:
                                        self._serial.timeout = 2
+                                       profile.putPreference('serial_baud_auto', self._serial.baudrate)
                                        self._changeState(self.STATE_OPERATIONAL)
                        elif self._state == self.STATE_CONNECTING:
                                if line == '':
index 380e71c3a7ab9e72ca74cdf1bc046d3cddc222b2..468fd997dc0ed6e5be1f6df3c0159e413ff850a6 100644 (file)
@@ -167,7 +167,9 @@ preferencesDefaultSettings = {
        'filament_density': '1300',\r
        'steps_per_e': '0',\r
        'serial_port': 'AUTO',\r
+       'serial_port_auto': '',\r
        'serial_baud': 'AUTO',\r
+       'serial_baud_auto': '',\r
        'slicer': 'Cura (Skeinforge based)',\r
        'save_profile': 'False',\r
        'filament_cost_kg': '0',\r