/
main.go
69 lines (59 loc) · 1.1 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"encoding/binary"
"flag"
"fmt"
"log"
"os"
"github.com/go-lsst/ncs/drivers/m702"
)
var (
codec = binary.BigEndian
params []m702.Parameter
)
func main() {
flag.Parse()
if flag.NArg() >= 1 {
err := dispatch(flag.Arg(0), flag.Args()[1:])
if err != nil {
log.Fatalf("error dispatching [%s]: %v\n", flag.Arg(0), err)
}
log.Printf("\n")
log.Printf("bye.\n")
os.Exit(0)
}
m := m702.New("134.158.125.223:502")
testParams(m)
}
func init() {
log.SetPrefix("[fcs-motor] ")
log.SetFlags(0)
}
func testParams(m m702.Motor) {
log.Printf("")
log.Printf(" --- test basic parameters ---\n")
for _, p := range params {
err := m.ReadParam(&p)
log.Printf(
"Pr-%v: o=%v\t%q\terr=%v\n",
p, p.Data[:], p.Title, err,
)
}
}
func dispatch(name string, args []string) error {
var err error
switch name {
case "shell":
return runModbusShell(args)
case "web":
return runWebServer(args)
default:
return fmt.Errorf("[%s] is not a valid command", name)
}
return err
}
func runModbusShell(args []string) error {
sh := NewShell()
defer sh.Close()
return sh.run()
}