package main import ( "flag" "fmt" "log" "os" "strconv" "strings" "git.jettsang.com/drivers/lobot/network" "git.jettsang.com/drivers/lobot/servo" "git.jettsang.com/drivers/lobot/servo/lx" "github.com/jacobsa/go-serial/serial" ) var ( portName = flag.String("port", "/dev/tty.usbserial-A9ITPZVR", "the serial port path") servoID = flag.Int("id", 1, "the ID of the servo") instruction = flag.String("instruction", "", "instruction") argument = flag.String("arguments", "1,1000", "uint16 txt break on comma") debug = flag.Bool("debug", false, "show serial traffic") ) func main() { flag.Parse() options := serial.OpenOptions{ PortName: *portName, BaudRate: 115200, DataBits: 8, StopBits: 1, MinimumReadSize: 0, InterCharacterTimeout: 100, } serial, err := serial.Open(options) if err != nil { fmt.Printf("open error: %s\n", err) os.Exit(1) } network := network.New(serial) if *debug { network.Logger = log.New(os.Stderr, "", log.LstdFlags) } network.Flush() // var servo *servo.Servo srv, err := lx.New(network, *servoID) if err != nil { log.Fatalln(err) } var params []uint16 textArguments := strings.Split(*argument, ",") for _, v := range textArguments { value, _ := strconv.Atoi(v) params = append(params, uint16(value)) } instRun := servo.GetInstName(*instruction) log.Println(instRun.String(), params) if err = srv.SendInstruction(instRun, params); err != nil { log.Fatalln(err) } }