diff options
author | Aleksei Kvitinskii <aleksei.kvitinskii@gmail.com> | 2019-09-22 11:37:19 +0300 |
---|---|---|
committer | Aleksei Kvitinskii <aleksei.kvitinskii@gmail.com> | 2019-09-22 11:37:19 +0300 |
commit | f0e523c008742e9a56a6c940bc6faf263f0256dd (patch) | |
tree | 55170ac05f26f2e81e87e024d295088477896219 | |
parent | 0a43d69eedfdfd7a7858228802ece6deb8e66720 (diff) |
added z-offset autosave featurev2.2
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | ui/toolchanger.go | 58 | ||||
-rw-r--r-- | vendor/github.com/mcuadros/go-octoprint/zbolt.go | 58 |
3 files changed, 91 insertions, 27 deletions
@@ -66,7 +66,7 @@ build-internal: prepare-internal cp ../*.deb /build/; prepare-internal: - dch --create -v $(VERSION)-3 --package $(PACKAGE_NAME) empty; \ + dch --create -v $(VERSION)-7 --package $(PACKAGE_NAME) empty; \ cd $(WORKDIR)/..; \ tar -czf octoscreen_$(VERSION).orig.tar.gz --exclude-vcs OctoScreen diff --git a/ui/toolchanger.go b/ui/toolchanger.go index d7703a5..485f800 100644 --- a/ui/toolchanger.go +++ b/ui/toolchanger.go @@ -18,6 +18,7 @@ type pointCoordinates struct { type toolchangerPanel struct { CommonPanel zCalibrationMode bool + activeTool int cPoint pointCoordinates zOffset float64 labZOffsetLabel *gtk.Label @@ -28,7 +29,6 @@ func ToolchangerPanel(ui *UI, parent Panel) Panel { m := &toolchangerPanel{CommonPanel: NewCommonPanel(ui, parent)} m.panelH = 3 m.cPoint = pointCoordinates{x: 20, y: 20, z: 0} - // m.b = NewBackgroundTask(time.Second, m.updateTemperatures) m.initialize() toolchangerPanelInstance = m @@ -64,18 +64,14 @@ func (m *toolchangerPanel) createZCalibrationModeButton() gtk.IWidget { m.zCalibrationMode = b.Value().(bool) if m.zCalibrationMode == true { ctx.AddClass("active") - cmd := &octoprint.CommandRequest{} - cmd.Commands = []string{ - "G28", - fmt.Sprintf("G0 X%f Y%f F10000", m.cPoint.x, m.cPoint.y), - fmt.Sprintf("G0 Z10 F2000", m.cPoint.z), - fmt.Sprintf("G0 Z%f F400", m.cPoint.z), - } - if err := cmd.Do(m.UI.Printer); err != nil { - Logger.Error(err) - } + m.command("G28") + m.command("T0") + m.command(fmt.Sprintf("G0 X%f Y%f F10000", m.cPoint.x, m.cPoint.y)) + m.command(fmt.Sprintf("G0 Z10 F2000")) + m.command(fmt.Sprintf("G0 Z%f F400", m.cPoint.z)) + m.activeTool = 0 m.updateZOffset(0) } else { ctx.RemoveClass("active") @@ -131,6 +127,11 @@ func (m *toolchangerPanel) updateZOffset(v float64) { if err := cmd.Do(m.UI.Printer); err != nil { Logger.Error(err) } + + cmd2 := &octoprint.SetZOffsetRequest{Value: m.zOffset, Tool: m.activeTool} + if err := cmd2.Do(m.UI.Printer); err != nil { + Logger.Error(err) + } } func (m *toolchangerPanel) createChangeToolButton(num int) gtk.IWidget { @@ -138,25 +139,24 @@ func (m *toolchangerPanel) createChangeToolButton(num int) gtk.IWidget { name := fmt.Sprintf("Tool%d", num+1) gcode := fmt.Sprintf("T%d", num) return MustButtonImageStyle(name, "extruder.svg", style, func() { - cmd := &octoprint.CommandRequest{} - if m.zCalibrationMode { - cmd.Commands = []string{ - fmt.Sprintf("G0 Z%f", 5.0), - gcode, - fmt.Sprintf("G0 X%f Y%f F10000", m.cPoint.x, m.cPoint.y), + m.activeTool = num + m.command(fmt.Sprintf("G0 Z%f", 5.0)) + m.command(gcode) + m.command(fmt.Sprintf("G0 X%f Y%f F10000", m.cPoint.x, m.cPoint.y)) + + cmd := &octoprint.GetZOffsetRequest{Tool: m.activeTool} + response, err := cmd.Do(m.UI.Printer) + + if err != nil { + Logger.Error(err) + return } - } else { - cmd.Commands = []string{gcode} - } - if err := cmd.Do(m.UI.Printer); err != nil { - Logger.Error(err) - return - } + m.updateZOffset(response.Offset) - if m.zCalibrationMode { - m.updateZOffset(0) + } else { + m.command(gcode) } }) } @@ -196,3 +196,9 @@ func (m *toolchangerPanel) createZOffsetLabel() gtk.IWidget { m.labZOffsetLabel.SetLineWrap(true) return m.labZOffsetLabel } + +func (m *toolchangerPanel) command(gcode string) error { + cmd := &octoprint.CommandRequest{} + cmd.Commands = []string{gcode} + return cmd.Do(m.UI.Printer) +} diff --git a/vendor/github.com/mcuadros/go-octoprint/zbolt.go b/vendor/github.com/mcuadros/go-octoprint/zbolt.go new file mode 100644 index 0000000..e56691d --- /dev/null +++ b/vendor/github.com/mcuadros/go-octoprint/zbolt.go @@ -0,0 +1,58 @@ +package octoprint + +import ( + "bytes" + "encoding/json" +) + +const URIZBoltRequest = "/api/plugin/zbolt" + +// SettingsRequest retrieves the current configuration of OctoPrint. +type SetZOffsetRequest struct { + Command string `json:"command"` + Tool int `json:"tool"` + Value float64 `json:"value"` +} + +func (cmd *SetZOffsetRequest) Do(c *Client) error { + cmd.Command = "set_z_offset" + + b := bytes.NewBuffer(nil) + if err := json.NewEncoder(b).Encode(cmd); err != nil { + return err + } + + _, err := c.doJSONRequest("POST", URIZBoltRequest, b, ConnectionErrors) + return err +} + +type GetZOffsetRequest struct { + Command string `json:"command"` + Tool int `json:"tool"` +} + +type GetZOffsetResponse struct { + // Job contains information regarding the target of the current print job. + Offset float64 `json:"offset"` +} + +func (cmd *GetZOffsetRequest) Do(c *Client) (*GetZOffsetResponse, error) { + cmd.Command = "get_z_offset" + + params := bytes.NewBuffer(nil) + if err := json.NewEncoder(params).Encode(cmd); err != nil { + return nil, err + } + + b, err := c.doJSONRequest("POST", URIZBoltRequest, params, ConnectionErrors) + if err != nil { + return nil, err + } + + r := &GetZOffsetResponse{} + if err := json.Unmarshal(b, r); err != nil { + return nil, err + } + + return r, err +} |