From 09ae8fcdc25c1fd41da56a4d05d097533fa4b638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Tue, 25 Jun 2013 20:05:31 +0200 Subject: [PATCH] Always send M110 with the new line number (default 0) Previously it worked since the first command of every print was forced to be an M110 and the line number at the beginning of each print was always forced back to 0 as well. Now it just uses the actual line number (increased on each sent of a checksumed/numbered line) and resets that when an M110 is encountered. What was missing was forcing the line number of the actual M110 command to the desired line number as well. Should be "more correct" than before now, and work. --- octoprint/server.py | 2 -- octoprint/settings.py | 2 -- octoprint/static/js/ui.js | 3 --- octoprint/templates/settings.jinja2 | 7 ------- octoprint/util/comm.py | 19 ++++++------------- 5 files changed, 6 insertions(+), 27 deletions(-) diff --git a/octoprint/server.py b/octoprint/server.py index 3cddadd..9d8cd4f 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -496,7 +496,6 @@ def getSettings(): "gcodeViewer": s.getBoolean(["feature", "gCodeVisualizer"]), "waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]), "alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]), - "resetLineNumbersWithPrefixedN": s.getBoolean(["feature", "resetLineNumbersWithPrefixedN"]), "sdSupport": s.getBoolean(["feature", "sdSupport"]) }, "folder": { @@ -549,7 +548,6 @@ def setSettings(): if "gcodeViewer" in data["feature"].keys(): s.setBoolean(["feature", "gCodeVisualizer"], data["feature"]["gcodeViewer"]) if "waitForStart" in data["feature"].keys(): s.setBoolean(["feature", "waitForStartOnConnect"], data["feature"]["waitForStart"]) if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"]) - if "resetLineNumbersWithPrefixedN" in data["feature"].keys(): s.setBoolean(["feature", "resetLineNumbersWithPrefixedN"], data["feature"]["resetLineNumbersWithPrefixedN"]) if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"]) if "folder" in data.keys(): diff --git a/octoprint/settings.py b/octoprint/settings.py index 60cb508..36ea9e6 100644 --- a/octoprint/settings.py +++ b/octoprint/settings.py @@ -43,9 +43,7 @@ default_settings = { "feature": { "gCodeVisualizer": True, "waitForStartOnConnect": False, - "waitForWaitOnConnect": False, "alwaysSendChecksum": False, - "resetLineNumbersWithPrefixedN": False, "sdSupport": True }, "folder": { diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 3c442dc..d753323 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -1335,7 +1335,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.feature_gcodeViewer = ko.observable(undefined); self.feature_waitForStart = ko.observable(undefined); self.feature_alwaysSendChecksum = ko.observable(undefined); - self.feature_resetLineNumbersWithPrefixedN = ko.observable(undefined); self.feature_sdSupport = ko.observable(undefined); self.folder_uploads = ko.observable(undefined); @@ -1387,7 +1386,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.feature_gcodeViewer(response.feature.gcodeViewer); self.feature_waitForStart(response.feature.waitForStart); self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum); - self.feature_resetLineNumbersWithPrefixedN(response.feature.resetLineNumbersWithPrefixedN); self.feature_sdSupport(response.feature.sdSupport); self.folder_uploads(response.folder.uploads); @@ -1429,7 +1427,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { "gcodeViewer": self.feature_gcodeViewer(), "waitForStart": self.feature_waitForStart(), "alwaysSendChecksum": self.feature_alwaysSendChecksum(), - "resetLineNumbersWithPrefixedN": self.feature_resetLineNumbersWithPrefixedN(), "sdSupport": self.feature_sdSupport() }, "folder": { diff --git a/octoprint/templates/settings.jinja2 b/octoprint/templates/settings.jinja2 index 5d03bf6..66ec655 100644 --- a/octoprint/templates/settings.jinja2 +++ b/octoprint/templates/settings.jinja2 @@ -134,13 +134,6 @@ -
-
- -
-
diff --git a/octoprint/util/comm.py b/octoprint/util/comm.py index 7b75bcf..5948f2e 100644 --- a/octoprint/util/comm.py +++ b/octoprint/util/comm.py @@ -110,6 +110,7 @@ class VirtualPrinter(): data = data.strip() if "*" in data: data = data[:data.rfind("*")] + self.currentLine += 1 data += "\n" # shortcut for writing to SD @@ -172,7 +173,8 @@ class VirtualPrinter(): self._deleteSdFile(filename) elif "M110" in data: # reset current line - self.currentLine = int(re.search('N([0-9]+)', data).group(1)) + self.currentLine = int(re.search('^N([0-9]+)', data).group(1)) + self.readList.append("reset line to %r\n" % self.currentLine) self.readList.append("ok\n") elif "M114" in data: # send dummy position report @@ -187,9 +189,6 @@ class VirtualPrinter(): elif len(data.strip()) > 0: self.readList.append("ok\n") - if "*" in data: - self.currentLine += 1 - def _listSd(self): self.readList.append("Begin file list") for osFile in os.listdir(self._virtualSd): @@ -953,15 +952,9 @@ class MachineCom(object): else: newLineNumber = 0 - if settings().getBoolean(["feature", "resetLineNumbersWithPrefixedN"]) and newLineNumber is not None: - # let's rewrite the M110 command to fit repetier syntax - self._addToLastLines(cmd) - self._doSendWithChecksum("M110", newLineNumber) - else: - self._doSend(cmd, sendChecksum) - - if newLineNumber is not None: - self._currentLine = newLineNumber + 1 + # send M110 command with new line number + self._doSendWithChecksum(cmd, newLineNumber) + self._currentLine = newLineNumber + 1 # after a reset of the line number we have no way to determine what line exactly the printer now wants self._lastLines = []