diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 8c320b95..032b1897 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -132,14 +132,9 @@ $(function(){ }; self.getXYCoord = function(evt){ - if(isFirefox) { - var scale = evt.target.parentElement.transform.baseVal[0].matrix.a; - var x = self.px2mm(evt.offsetX) * scale; - var y = self.px2mm(parseFloat(evt.target.attributes.height.value) - evt.offsetY) * scale; - } else { - var x = self.px2mm(evt.offsetX); - var y = self.px2mm(evt.target.ownerSVGElement.getBoundingClientRect().height - evt.offsetY); // hopefully this works across browsers - } + var scale = evt.target.parentElement.transform.baseVal[0].matrix.a; + var x = self.px2mm(evt.offsetX) * scale; + var y = self.px2mm(parseFloat(evt.target.attributes.height.value) - evt.offsetY) * scale; x = Math.min(x, self.workingAreaWidthMM()); y = Math.min(y, self.workingAreaHeightMM()); return {x:x, y:y}; diff --git a/src/octoprint/util/comm_acc2.py b/src/octoprint/util/comm_acc2.py index 5581ddca..609b9ef8 100644 --- a/src/octoprint/util/comm_acc2.py +++ b/src/octoprint/util/comm_acc2.py @@ -88,7 +88,7 @@ class MachineCom(object): self._finished_passes = 0 # regular expressions - self._regex_command = re.compile("^\s*\$?([GM]\d+|[TH])") + self._regex_command = re.compile("^\s*\$?([GM]\d+|[THX])") self._regex_feedrate = re.compile("F\d+", re.IGNORECASE) self._regex_intensity = re.compile("S\d+", re.IGNORECASE) @@ -147,7 +147,7 @@ class MachineCom(object): elif line.startswith('['): # feedback message self._handle_feedback_message(line) elif line.startswith('Grb'): # Grbl startup message - self._handle_startup_message() + self._handle_startup_message(line) except: self._logger.exception("Something crashed inside the monitoring loop, please report this to Mr. Beam") errorMsg = "See octoprint.log for details" @@ -405,7 +405,7 @@ class MachineCom(object): elif line[1:].startswith('Dis'): # [Disabled] pass - def _handle_startup_message(self): + def _handle_startup_message(self, line): if self.isOperational(): errorMsg = "Machine reset." self._cmd = None @@ -420,7 +420,14 @@ class MachineCom(object): self._changeState(self.STATE_LOCKED) eventManager().fire(Events.ERROR, {"error": self.getErrorString()}) else: - self._onConnected(self.STATE_LOCKED) + versionMatch = re.search("Grbl (?P.+?)(_(?P[0-9a-f]{7})(?P-dirty)?)? \[.+\]", line) + if versionMatch: + versionDict = versionMatch.groupdict() + self._writeGrblVersionToFile(versionDict) + if self._compareGrblVersion(versionDict) is False: + self._flashGrbl() + else: + self._onConnected(self.STATE_LOCKED) def _update_grbl_pos(self, line): # line example: @@ -611,7 +618,7 @@ class MachineCom(object): params = ["avrdude", "-patmega328p", "-carduino", "-b" + str(self._baudrate), "-P" + str(self._port), "-D", "-Uflash:w:" + pathToGrblHex] rc = subprocesscall(params) - if rc is False: + if rc == 0: self._log("successfully flashed new grbl version") self._openSerial() self._changeState(self.STATE_CONNECTING) @@ -748,6 +755,10 @@ class MachineCom(object): self._changeState(self.STATE_HOMING) return cmd + def _gcode_X_sent(self, cmd, cmd_type=None): + self._changeState(self.STATE_HOMING) # TODO: maybe change to seperate $X mode + return cmd + def _gcode_Hold_sent(self, cmd, cmd_type=None): self._changeState(self.STATE_PAUSED) return cmd @@ -1275,6 +1286,7 @@ def serialList(): baselist = baselist \ + glob.glob("/dev/ttyUSB*") \ + glob.glob("/dev/ttyACM*") \ + + glob.glob("/dev/ttyAMA*") \ + glob.glob("/dev/tty.usb*") \ + glob.glob("/dev/cu.*") \ + glob.glob("/dev/cuaU*") \