Changed handling of bed temperatures
Will now be left unset if not detected (instead of dying a horrible death), modified frontend to not display bed settings in such cases. While at it also (hopefully) fixed "Target: off" for bed issue. TODO: Support repetier's "TargetBed:", "TargetExtr%n" syntax Fixes #399, partially solves #360
This commit is contained in:
parent
9b031ff9d3
commit
8b5d6c9367
6 changed files with 43 additions and 18 deletions
|
|
@ -37,6 +37,7 @@ class Printer():
|
|||
self._gcodeManager.registerCallback(self)
|
||||
|
||||
# state
|
||||
# TODO do we really need to hold the temperature here?
|
||||
self._temp = None
|
||||
self._bedTemp = None
|
||||
self._targetTemp = None
|
||||
|
|
@ -355,10 +356,11 @@ class Printer():
|
|||
"actual": temp[tool][0],
|
||||
"target": temp[tool][1]
|
||||
}
|
||||
data["bed"] = {
|
||||
"actual": bedTemp[0],
|
||||
"target": bedTemp[1]
|
||||
}
|
||||
if bedTemp is not None and isinstance(bedTemp, tuple):
|
||||
data["bed"] = {
|
||||
"actual": bedTemp[0],
|
||||
"target": bedTemp[1]
|
||||
}
|
||||
|
||||
self._temps.append(data)
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,8 @@ default_settings = {
|
|||
"forceChecksum": False,
|
||||
"okWithLinenumber": False,
|
||||
"numExtruders": 1,
|
||||
"includeCurrentToolInTemps": True
|
||||
"includeCurrentToolInTemps": True,
|
||||
"hasBed": True
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
|
|||
};
|
||||
|
||||
self.tools = ko.observableArray([]);
|
||||
self.hasBed = ko.observable(true);
|
||||
self.bedTemp = self._createToolEntry();
|
||||
self.bedTemp["name"]("Bed");
|
||||
self.bedTemp["key"]("bed");
|
||||
|
|
@ -145,8 +146,13 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
|
|||
}
|
||||
}
|
||||
|
||||
self.bedTemp["actual"](lastData.bed.actual);
|
||||
self.bedTemp["target"](lastData.bed.target);
|
||||
if (lastData.hasOwnProperty("bed")) {
|
||||
self.hasBed(true);
|
||||
self.bedTemp["actual"](lastData.bed.actual);
|
||||
self.bedTemp["target"](lastData.bed.target);
|
||||
} else {
|
||||
self.hasBed(false);
|
||||
}
|
||||
|
||||
if (!CONFIG_TEMPERATURE_GRAPH) return;
|
||||
|
||||
|
|
@ -184,6 +190,7 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
|
|||
if (!result) {
|
||||
result = {};
|
||||
}
|
||||
|
||||
_.each(types, function(type) {
|
||||
if (!result.hasOwnProperty(type)) {
|
||||
result[type] = {actual: [], target: []};
|
||||
|
|
@ -199,6 +206,8 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
|
|||
if (!d[type]) return;
|
||||
result[type].actual.push([time, d[type].actual]);
|
||||
result[type].target.push([time, d[type].target]);
|
||||
|
||||
self.hasBed(self.hasBed() || (type == "bed"));
|
||||
})
|
||||
});
|
||||
|
||||
|
|
@ -213,6 +222,10 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) {
|
|||
if (!heaterOptions) return;
|
||||
|
||||
_.each(_.keys(heaterOptions), function(type) {
|
||||
if (type == "bed" && !self.hasBed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
var actuals = [];
|
||||
var targets = [];
|
||||
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@
|
|||
<!-- ko foreach: tools -->
|
||||
<tr data-bind="template: { name: 'temprow-template' }"></tr>
|
||||
<!-- /ko -->
|
||||
<tr data-bind="template: { name: 'temprow-template', data: bedTemp }"></tr>
|
||||
<tr data-bind="template: { name: 'temprow-template', data: bedTemp }, visible: hasBed"></tr>
|
||||
</table>
|
||||
|
||||
<script type="text/html" id="temprow-template">
|
||||
|
|
|
|||
|
|
@ -136,10 +136,8 @@ class MachineCom(object):
|
|||
self._baudrateDetectList = baudrateList()
|
||||
self._baudrateDetectRetry = 0
|
||||
self._temp = {}
|
||||
self._targetTemp = {}
|
||||
self._tempOffset = {}
|
||||
self._bedTemp = 0
|
||||
self._bedTargetTemp = 0
|
||||
self._bedTemp = None
|
||||
self._bedTempOffset = 0
|
||||
self._commandQueue = queue.Queue()
|
||||
self._currentZ = None
|
||||
|
|
@ -171,6 +169,7 @@ class MachineCom(object):
|
|||
|
||||
# regexes
|
||||
floatPattern = "[-+]?[0-9]*\.?[0-9]+"
|
||||
positiveFloatPattern = "[+]?[0-9]*\.?[0-9]+"
|
||||
intPattern = "\d+"
|
||||
self._regex_command = re.compile("^\s*([GM]\d+|T)")
|
||||
self._regex_float = re.compile(floatPattern)
|
||||
|
|
@ -188,7 +187,7 @@ class MachineCom(object):
|
|||
# - 3: actual temperature
|
||||
# - 4: whole target substring, if given (e.g. " / 22.0")
|
||||
# - 5: target temperature
|
||||
self._regex_temp = re.compile("(B|T(\d*)):\s*(%s)(\s*\/?\s*(%s))?" % (floatPattern, floatPattern))
|
||||
self._regex_temp = re.compile("(B|T(\d*)):\s*(%s)(\s*\/?\s*(%s))?" % (positiveFloatPattern, positiveFloatPattern))
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
|
@ -1065,7 +1064,7 @@ class MachineCom(object):
|
|||
self.close(True)
|
||||
|
||||
def _gcode_T(self, cmd):
|
||||
toolMatch = re.search('T([0-9]+)', cmd)
|
||||
toolMatch = self._regex_paramTInt.search(cmd)
|
||||
if toolMatch:
|
||||
self._currentExtruder = int(toolMatch.group(1))
|
||||
return cmd
|
||||
|
|
@ -1097,7 +1096,10 @@ class MachineCom(object):
|
|||
match = self._regex_paramSInt.search(cmd)
|
||||
if match:
|
||||
try:
|
||||
self._targetTemp[toolNum] = float(match.group(1))
|
||||
target = float(match.group(1))
|
||||
if self._temp[toolNum] is not None and isinstance(self._temp[toolNum], tuple):
|
||||
(actual, oldTarget) = self._temp[toolNum]
|
||||
self._temp[toolNum] = (actual, target)
|
||||
except ValueError:
|
||||
pass
|
||||
return cmd
|
||||
|
|
@ -1106,7 +1108,10 @@ class MachineCom(object):
|
|||
match = self._regex_paramSInt.search(cmd)
|
||||
if match:
|
||||
try:
|
||||
self._bedTargetTemp = float(match.group(1))
|
||||
target = float(match.group(1))
|
||||
if self._bedTemp is not None and isinstance(self._bedTemp, tuple):
|
||||
(actual, oldTarget) = self._bedTemp
|
||||
self._bedTemp = (actual, target)
|
||||
except ValueError:
|
||||
pass
|
||||
return cmd
|
||||
|
|
|
|||
|
|
@ -104,10 +104,14 @@ class VirtualPrinter():
|
|||
for i in range(len(self.temp)):
|
||||
allTemps.append((i, self.temp[i], self.targetTemp[i]))
|
||||
allTempsString = " ".join(map(lambda x: "T%d:%.2f /%.2f" % x, allTemps))
|
||||
if settings().getBoolean(["devel", "virtualPrinted", "includeCurrentToolInTemps"]):
|
||||
self.readList.append("ok T:%.2f /%.2f B:%.2f /%.2f %s @:64\n" % (self.temp[self.currentExtruder], self.targetTemp[self.currentExtruder] + 1, self.bedTemp, self.bedTargetTemp, allTempsString))
|
||||
|
||||
if settings().getBoolean(["devel", "virtualPrinter", "hasBed"]):
|
||||
allTempsString = "B:%.2f /%.2f %s" % (self.bedTemp, self.bedTargetTemp, allTempsString)
|
||||
|
||||
if settings().getBoolean(["devel", "virtualPrinter", "includeCurrentToolInTemps"]):
|
||||
self.readList.append("ok T:%.2f /%.2f %s @:64\n" % (self.temp[self.currentExtruder], self.targetTemp[self.currentExtruder] + 1))
|
||||
else:
|
||||
self.readList.append("ok %s B:%.2f /%.2f @:64\n" % (allTempsString, self.bedTemp, self.bedTargetTemp))
|
||||
self.readList.append("ok %s @:64\n" % allTempsString)
|
||||
else:
|
||||
self.readList.append("ok T:%.2f /%.2f B:%.2f /%.2f @:64\n" % (self.temp[0], self.targetTemp[0], self.bedTemp, self.bedTargetTemp))
|
||||
elif 'M20' in data:
|
||||
|
|
|
|||
Loading…
Reference in a new issue