aboutsummaryrefslogtreecommitdiff
path: root/plot.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-09-26 01:02:29 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-09-26 01:02:29 +0200
commit365c44d8d352650e47995760daeca985e8a7e064 (patch)
treec65710ed58bd3890ef70e3f7447c1cae209e99e2 /plot.go
parent06fe0f88b8cfb51ab7e58c3d6ef5c8c940963ed8 (diff)
wip
Diffstat (limited to 'plot.go')
-rw-r--r--plot.go44
1 files changed, 39 insertions, 5 deletions
diff --git a/plot.go b/plot.go
index 39953ba..1625da4 100644
--- a/plot.go
+++ b/plot.go
@@ -3,6 +3,7 @@ package robo
import (
"fmt"
"strings"
+ "time"
)
type Robo struct {
@@ -59,19 +60,52 @@ func Curve(a int, p ...Point) string { return fmt.Sprintf("Y%d,%v", a, Path(p))
func (r Robo) Version() string {
r.dev.WriteString("FG")
resp, _ := r.dev.ReadString()
- return resp
+ return strings.TrimSpace(resp)
}
-func (r Robo) Init() {
- r.dev.Command([]byte{4})
+func (r Robo) Wait4Ready() {
+ t := time.NewTicker(time.Second)
+ defer t.Stop()
+ for range t.C {
+ if r.Ready() {
+ return
+ }
+ }
}
+func (r Robo) Step(d Direction) { r.dev.Command([]byte{0, byte(d)}) }
+func (r Robo) BootUpgrade() { r.dev.Command([]byte{1}) }
+func (r Robo) Init() { r.dev.Command([]byte{4}) }
+
func (r Robo) Ready() bool {
r.dev.Command([]byte{5})
resp, _ := r.dev.ReadString()
return resp == "0"
}
-func (r Robo) GoHome() {
- r.dev.WriteString("TT")
+func (r Robo) Printf(f string, a ...interface{}) {
+ s := fmt.Sprintf(f, a...)
+ r.dev.WriteString(s)
+}
+
+func (r Robo) GoHome() { r.Printf("TT") }
+func (r Robo) Home() { r.Printf("H") }
+func (r Robo) Origin() { r.Printf("FJ") }
+func (r Robo) Calibrate() { r.Printf("TB70") }
+func (r Robo) TestCut() { r.Printf("FH") }
+func (r Robo) TestLoop() { r.Printf("FI") }
+func (r Robo) Factor(x, y, z Unit) { r.Printf("&%v", Triple{x, y, z}) }
+func (r Robo) Offset(p Point) { r.Printf("^%v", p) }
+func (r Robo) LowerLeft(p Point) { r.Printf("\\%v", p) }
+func (r Robo) UpperRight(p Point) { r.Printf("Z%v", p) }
+func (r Robo) CuttingArea(p Point) { r.Printf("FU%v", p) }
+func (r Robo) Calibration(p Point) { r.Printf("TB72,%v", p) }
+func (r Robo) Move(p Point) { r.Printf("M%v", p) }
+func (r Robo) MoveRelative(p Point) { r.Printf("O%v", p) }
+func (r Robo) Draw(p ...Point) { r.Printf("D%v", Path(p)) }
+func (r Robo) DrawRelative(p Point) { r.Printf("E%v", p) }
+func (r Robo) Bezier(a, b, c, d Point) { r.Printf("BZ1,%v", Path{a, b, c, d}) }
+func (r Robo) Line(p ...Point) {
+ r.Move(p[0])
+ r.Draw(p[1:]...)
}