Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Z-Bolt/OctoScreen.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei Kvitinskii <aleksei.kvitinskii@gmail.com>2019-09-22 11:37:19 +0300
committerAleksei Kvitinskii <aleksei.kvitinskii@gmail.com>2019-09-22 11:37:19 +0300
commitf0e523c008742e9a56a6c940bc6faf263f0256dd (patch)
tree55170ac05f26f2e81e87e024d295088477896219
parent0a43d69eedfdfd7a7858228802ece6deb8e66720 (diff)
added z-offset autosave featurev2.2
-rw-r--r--Makefile2
-rw-r--r--ui/toolchanger.go58
-rw-r--r--vendor/github.com/mcuadros/go-octoprint/zbolt.go58
3 files changed, 91 insertions, 27 deletions
diff --git a/Makefile b/Makefile
index 01ab324..585a82a 100644
--- a/Makefile
+++ b/Makefile
@@ -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
+}