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.
master
Gina Häußge 2013-06-25 20:05:31 +02:00
parent 695f3f391c
commit 09ae8fcdc2
5 changed files with 6 additions and 27 deletions

View File

@ -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():

View File

@ -43,9 +43,7 @@ default_settings = {
"feature": {
"gCodeVisualizer": True,
"waitForStartOnConnect": False,
"waitForWaitOnConnect": False,
"alwaysSendChecksum": False,
"resetLineNumbersWithPrefixedN": False,
"sdSupport": True
},
"folder": {

View File

@ -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": {

View File

@ -134,13 +134,6 @@
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: feature_resetLineNumbersWithPrefixedN" id="settings-resetLineNumbersWithPrefixedN"> Send M110 commands with target line number as N-prefix <span class="label">Repetier</span>
</label>
</div>
</div>
</form>
</div>
<div class="tab-pane" id="settings_folder">

View File

@ -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 = []