+ #Open the serial port.
+ if self._port == 'AUTO':
+ self._changeState(self.STATE_DETECT_SERIAL)
+ programmer = stk500v2.Stk500v2()
+ self._log("Serial port list: %s" % (str(serialList())))
+ for p in serialList():
+ try:
+ self._log("Connecting to: %s" % (p))
+ programmer.connect(p)
+ self._serial = programmer.leaveISP()
+ profile.putPreference('serial_port_auto', p)
+ break
+ except ispBase.IspError as (e):
+ self._log("Error while connecting to %s: %s" % (p, str(e)))
+ pass
+ except:
+ self._log("Unexpected error while connecting to serial port: %s %s" % (p, getExceptionString()))
+ programmer.close()
+ elif self._port == 'VIRTUAL':
+ self._changeState(self.STATE_OPEN_SERIAL)
+ self._serial = VirtualPrinter()
+ else:
+ self._changeState(self.STATE_OPEN_SERIAL)
+ try:
+ self._log("Connecting to: %s" % (self._port))
+ if self._baudrate == 0:
+ self._serial = Serial(self._port, 115200, timeout=0.1, writeTimeout=10000)
+ else:
+ self._serial = Serial(self._port, self._baudrate, timeout=2, writeTimeout=10000)
+ except:
+ self._log("Unexpected error while connecting to serial port: %s %s" % (self._port, getExceptionString()))
+ if self._serial == None:
+ self._log("Failed to open serial port (%s)" % (self._port))
+ self._errorValue = 'Failed to autodetect serial port.'
+ self._changeState(self.STATE_ERROR)
+ return
+ self._log("Connected to: %s, starting monitor" % (self._serial))
+ if self._baudrate == 0:
+ self._changeState(self.STATE_DETECT_BAUDRATE)
+ else:
+ self._changeState(self.STATE_CONNECTING)
+
+ #Start monitoring the serial port.