From: Joseph Coffland Date: Tue, 6 Feb 2018 22:49:27 +0000 (-0800) Subject: Fixed Web based jogging X-Git-Url: https://git.buildbotics.com/?a=commitdiff_plain;h=fe1e94e614f00c2168cabbc6bc08fff44a284ecb;p=bbctrl-firmware Fixed Web based jogging --- diff --git a/package.json b/package.json index 3fe2498..e3b0b81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bbctrl", - "version": "0.3.2", + "version": "0.3.3", "homepage": "https://github.com/buildbotics/bbctrl-firmware", "license": "GPL 3+", "dependencies": { diff --git a/src/jade/templates/axis-control.jade b/src/jade/templates/axis-control.jade index 5a3a5bd..8851e86 100644 --- a/src/jade/templates/axis-control.jade +++ b/src/jade/templates/axis-control.jade @@ -55,107 +55,107 @@ script#axis-control-template(type="text/x-template") g(transform="scale(0.8, 0.8)") - // 100 ring + // 100% ring g.ring(fill="#9f9f9f", filter="url(#shadow)") use.button(xlink:href="#pie-1", v-if="enabled[0]", transform="translate(134 121) rotate(-45)", - @click="jog(0, 100)", title="Jog +100 {{axes[0]}}") + @mousedown="jog(0, 1)", @mouseup="release(0)") use.button(xlink:href="#pie-1", v-if="enabled[0]", transform="translate(115 121) rotate(135)", - @click="jog(0, -100)", title="Jog -100 {{axes[0]}}") + @mousedown="jog(0, -1)", @mouseup="release(0)") - g.button(@click="jog(1, 100)", title="Jog +100 {{axes[1]}}", + g.button(@mousedown="jog(1, 1)", @mouseup="release(1)", v-if="enabled[1]") use.button(xlink:href="#pie-1", transform="translate(124 111) rotate(-135)") - text(x="125", y="24", transform="rotate(20 125 125)") 100 - text(x="125", y="24", transform="rotate(-20 125 125)") 100 + text(x="125", y="24", transform="rotate(22 125 125)") 100% + text(x="125", y="24", transform="rotate(-22 125 125)") 100% use.button(xlink:href="#pie-1", fill="transparent", transform="translate(124 111) rotate(-135)") use.button(xlink:href="#pie-1", v-if="enabled[1]", - transform="translate(124 130) rotate(45)", - @click="jog(1, -100)", title="Jog -100 {{axes[1]}}") + transform="translate(124 130) rotate(45)", @mousedown="jog(1, -1)", + @mouseup="release(1)") - // 10 ring + // 50% ring g.ring(fill="#c5c5c5", filter="url(#shadow)") use.button(xlink:href="#pie-2", v-if="enabled[0]", transform="translate(134 121) rotate(-45)", - @click="jog(0, 10)", title="Jog +10 {{axes[0]}}") + @mousedown="jog(0, 0.5)", @mouseup="release(0)") use.button(xlink:href="#pie-2", v-if="enabled[0]", transform="translate(115 121) rotate(135)", - @click="jog(0, -10)", title="Jog -10 {{axes[0]}}") + @mousedown="jog(0, -0.5)", @mouseup="release(0)") - g.button(@click="jog(1, 10)", title="Jog +10 {{axes[1]}}", + g.button(@mousedown="jog(1, 0.5)", @mouseup="release(1)", v-if="enabled[1]") use.button(xlink:href="#pie-2", transform="translate(124 111) rotate(-135)") - text(x="125", y="50") 10 + text(x="125", y="48") 50% use.button(xlink:href="#pie-2", fill="transparent", transform="translate(124 111) rotate(-135)") use.button(xlink:href="#pie-2", v-if="enabled[1]", transform="translate(124 130) rotate(45)", - @click="jog(1, -10)", title="Jog -10 {{axes[1]}}") + @mousedown="jog(1, -0.5)", @mouseup="release(1)") - // 1 ring + // 25% ring g.ring(fill="#e2e2e2", filter="url(#shadow)") use.button(xlink:href="#pie-3", v-if="enabled[0]", transform="translate(134 121) rotate(-45)", - @click="jog(0, 1)", title="Jog +1 {{axes[0]}}") + @mousedown="jog(0, 0.25)", @mouseup="release(0)") use.button(xlink:href="#pie-3", v-if="enabled[0]", transform="translate(115 121) rotate(135)", - @click="jog(0, -1)", title="Jog -1 {{axes[0]}}") + @mousedown="jog(0, -0.25)", @mouseup="release(0)") - g.button(@click="jog(1, 1)", title="Jog +1 {{axes[1]}}", + g.button(@mousedown="jog(1, 0.25)", @mouseup="release(1)", v-if="enabled[1]") use.button(xlink:href="#pie-3", transform="translate(124 111) rotate(-135)") - text(x="125", y="75") 1 + text(x="125", y="73") 25% use.button(xlink:href="#pie-3", fill="transparent", transform="translate(124 111) rotate(-135)") use.button(xlink:href="#pie-3", v-if="enabled[1]", transform="translate(124 130) rotate(45)", - @click="jog(1, -1)", title="Jog -1 {{axes[1]}}") + @mousedown="jog(1, -0.25)", @mouseup="release(1)") - // 0.1 ring + // 10% ring g.ring(fill="#f7f7f7", filter="url(#shadow)") use.button(xlink:href="#pie-4", v-if="enabled[0]", transform="translate(134 121) rotate(-45)", - @click="jog(0, 0.1)", title="Jog +0.1 {{axes[0]}}") + @mousedown="jog(0, 0.1)", @mouseup="release(0)") use.button(xlink:href="#pie-4", v-if="enabled[0]", transform="translate(115 121) rotate(135)", - @click="jog(0, -0.1)", title="Jog -0.1 {{axes[0]}}") + @mousedown="jog(0, -0.1)", @mouseup="release(0)") - g.button(@click="jog(1, 0.1)", title="Jog +0.1 {{axes[1]}}", + g.button(@mousedown="jog(1, 0.1)", @mouseup="release(1)", v-if="enabled[1]") use.button(xlink:href="#pie-4", transform="translate(124 111) rotate(-135)") - text(x="125", y="95") 0.1 + text(x="125", y="95") 10% use.button(xlink:href="#pie-4", fill="transparent", transform="translate(124 111) rotate(-135)") use.button(xlink:href="#pie-4", v-if="enabled[1]", transform="translate(124 130) rotate(45)", - @click="jog(1, -0.1)", title="Jog -0.1 {{axes[1]}}") + @mousedown="jog(1, -0.1)", @mouseup="release(1)") // +A - g.button.arrow(@click="jog(0, 100)", title="Jog +100 {{axes[0]}}", + g.button.arrow(@mousedown="jog(0, 1)", @mouseup="release(0)", transform="translate(230 120)", v-if="enabled[0]") use(xlink:href="#arrow", fill="url(#{{colors[0]}}-1)") text(x="-12", y="5", font-size="14", textLength="21") +{{axes[0]}} // -A - g.button.arrow(@click="jog(0, -100)", title="Jog -100 {{axes[0]}}", + g.button.arrow(@mousedown="jog(0, -1)", @mouseup="release(0)", transform="translate(20 120)", v-if="enabled[0]") use(xlink:href="#arrow", fill="url(#{{colors[0]}}-1)", transform="rotate(180)") @@ -163,7 +163,7 @@ script#axis-control-template(type="text/x-template") // +B - g.button.arrow(@click="jog(1, 100)", title="Jog +100 {{axes[1]}}", + g.button.arrow(@mousedown="jog(1, 1)", @mouseup="release(1)", transform="translate(125, 18)", v-if="enabled[1]") use(xlink:href="#arrow", fill="url(#{{colors[1]}}-1)", transform="rotate(-90)") @@ -171,7 +171,7 @@ script#axis-control-template(type="text/x-template") // -B - g.button.arrow(@click="jog(1, -100)", title="Jog -100 {{axes[1]}}", + g.button.arrow(@mousedown="jog(1, -1)", @mouseup="release(1)", transform="translate(125, 225)", v-if="enabled[1]") use(xlink:href="#arrow", fill="url(#{{colors[1]}}-1)", transform="rotate(90)") diff --git a/src/jade/templates/control-view.jade b/src/jade/templates/control-view.jade index 4cfcad3..7a808ad 100644 --- a/src/jade/templates/control-view.jade +++ b/src/jade/templates/control-view.jade @@ -226,13 +226,20 @@ script#control-view-template(type="text/x-template") axis-control(axes="XY", :colors="['red', 'green']", :enabled="[enabled('x'), enabled('y')]", v-if="enabled('x') || enabled('y')") + axis-control(axes="AZ", :colors="['orange', 'blue']", :enabled="[enabled('a'), enabled('z')]", v-if="enabled('a') || enabled('z')") + axis-control(axes="BC", :colors="['cyan', 'purple']", :enabled="[enabled('b'), enabled('c')]", v-if="enabled('b') || enabled('c')") + center + | Left click the axes above holding down the mouse button to jog the + | machine. + center Jogging speed is set by the ring that is clicked. + section#content4.tab-content .toolbar button.pure-button(title="Clear console.", @click="clear_console") diff --git a/src/js/axis-control.js b/src/js/axis-control.js index a8c2427..60d5979 100644 --- a/src/js/axis-control.js +++ b/src/js/axis-control.js @@ -7,8 +7,7 @@ module.exports = { methods: { - jog: function (axis, move) { - this.$dispatch('jog', this.axes[axis], move) - } + jog: function (axis, power) {this.$dispatch('jog', this.axes[axis], power)}, + release: function (axis) {this.$dispatch('jog', this.axes[axis], 0)} } } diff --git a/src/js/control-view.js b/src/js/control-view.js index 11f2b4e..3e4eb6f 100644 --- a/src/js/control-view.js +++ b/src/js/control-view.js @@ -58,8 +58,11 @@ module.exports = { events: { - // TODO These should all be implemented via the API - jog: function (axis, move) {this.send('g91 g0' + axis + move)}, + jog: function (axis, power) { + var data = {}; + data[axis] = power; + api.put('jog', data); + }, message: function (msg) { diff --git a/src/py/bbctrl/AVR.py b/src/py/bbctrl/AVR.py index 84b3a6d..96b1a80 100644 --- a/src/py/bbctrl/AVR.py +++ b/src/py/bbctrl/AVR.py @@ -275,11 +275,7 @@ class AVR(): def jog(self, axes): if self._is_busy(): raise Exception('Busy, cannot jog') - - _axes = {} - for i in range(len(axes)): _axes["xyzabc"[i]] = axes[i] - - self._queue_command(Cmd.jog(_axes)) + self._queue_command(Cmd.jog(axes)) def home(self, axis, position = None): diff --git a/src/py/bbctrl/Cmd.py b/src/py/bbctrl/Cmd.py index 75ac09e..e4d5fb6 100755 --- a/src/py/bbctrl/Cmd.py +++ b/src/py/bbctrl/Cmd.py @@ -39,6 +39,9 @@ def encode_axes(axes): if axis in axes: data += axis + encode_float(axes[axis]) + elif axis.upper() in axes: + data += axis + encode_float(axes[axis.upper()]) + return data diff --git a/src/py/bbctrl/Jog.py b/src/py/bbctrl/Jog.py index d153a02..222abb6 100644 --- a/src/py/bbctrl/Jog.py +++ b/src/py/bbctrl/Jog.py @@ -50,7 +50,9 @@ class Jog(inevent.JogHandler): if self.v != self.lastV: self.lastV = self.v try: - self.ctrl.avr.jog(self.v) + axes = {} + for i in range(len(self.v)): axes["xyzabc"[i]] = self.v[i] + self.ctrl.avr.jog(axes) except Exception as e: log.error('Jog: %s', e) self.ctrl.ioloop.call_later(0.25, self.callback) diff --git a/src/py/bbctrl/Web.py b/src/py/bbctrl/Web.py index 01fe4a2..e81afae 100644 --- a/src/py/bbctrl/Web.py +++ b/src/py/bbctrl/Web.py @@ -206,6 +206,10 @@ class OverrideSpeedHandler(bbctrl.APIHandler): def put_ok(self, value): self.ctrl.avr.override_speed(float(value)) +class JogHandler(bbctrl.APIHandler): + def put_ok(self): self.ctrl.avr.jog(self.json) + + # Used by CAMotics class WSConnection(tornado.websocket.WebSocketHandler): def __init__(self, app, request, **kwargs): @@ -294,6 +298,7 @@ class Web(tornado.web.Application): (r'/api/position/([xyzabcXYZABC])', PositionHandler), (r'/api/override/feed/([\d.]+)', OverrideFeedHandler), (r'/api/override/speed/([\d.]+)', OverrideSpeedHandler), + (r'/api/jog', JogHandler), (r'/(.*)', StaticFileHandler, {'path': bbctrl.get_resource('http/'), "default_filename": "index.html"}), diff --git a/src/stylus/style.styl b/src/stylus/style.styl index 6a983af..9644e6f 100644 --- a/src/stylus/style.styl +++ b/src/stylus/style.styl @@ -217,6 +217,11 @@ body .jog svg text + -webkit-user-select none + -khtml-user-select none + -moz-user-select -moz-none + -o-user-select none + user-select none font-family Sans font-weight bold stroke transparent