From 35b010b0591391c46f4422598b1abf1282072d01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 10 Nov 2013 18:55:36 +0100 Subject: [PATCH] Better fitting error message when opening a known serial port fails (e.g. due to permission problems), auto detection errors now got their own message Fixes #294 --- src/octoprint/util/comm.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/octoprint/util/comm.py b/src/octoprint/util/comm.py index 612480d8..a1de48cf 100644 --- a/src/octoprint/util/comm.py +++ b/src/octoprint/util/comm.py @@ -488,27 +488,33 @@ class MachineCom(object): except: self._log("Unexpected error while connecting to serial port: %s %s" % (p, getExceptionString())) programmer.close() + if self._serial is None: + self._log("Failed to autodetect serial port") + self._errorValue = 'Failed to autodetect serial port.' + self._changeState(self.STATE_ERROR) + eventManager().fire("Error", self.getErrorString()) + return 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)) + self._log("Connecting to: %s" % self._port) if self._baudrate == 0: self._serial = serial.Serial(str(self._port), 115200, timeout=0.1, writeTimeout=10000) else: self._serial = serial.Serial(str(self._port), self._baudrate, timeout=settings().getFloat(["serial", "timeout", "connection"]), 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) - eventManager().fire("Error", self.getErrorString()) - return - self._log("Connected to: %s, starting monitor" % (self._serial)) + self._errorValue = "Failed to open serial port, permissions correct?" + self._changeState(self.STATE_ERROR) + eventManager().fire("Error", self.getErrorString()) + return + + self._log("Connected to: %s, starting monitor" % self._serial) if self._baudrate == 0: + self._log("Starting baud rate detection") self._changeState(self.STATE_DETECT_BAUDRATE) else: self._changeState(self.STATE_CONNECTING) @@ -523,7 +529,7 @@ class MachineCom(object): while True: try: line = self._readline() - if line == None: + if line is None: break ##~~ Error handling