package main import ( "encoding/hex" "fmt" "log" "os" "strings" ) type Command struct { name string description string function func() } var ( commands []Command args []string ) func cmdhelp() { var page = 0 strout(out, config.outputCode, fmt.Sprintf(">-------Help(%v)-------<\n", page)) for i := 0; i < len(commands); i++ { strout(out, config.outputCode, fmt.Sprintf(" %-10v --%v\n", commands[i].name, commands[i].description)) } } func cmdexit() { CloseTrzsz() CloseSerial() os.Exit(0) } func cmdargs() { strout(out, config.outputCode, fmt.Sprintf(">-------Args(%v)-------<\n", len(args)-1)) strout(out, config.outputCode, fmt.Sprintf("%q\n", args[1:])) } func cmdctrl() { var err error b := []byte(args[1]) x := []byte{b[0] & 0x1f} _, err = serialPort.Write(x) ErrorF(err) strout(out, config.outputCode, fmt.Sprintf("Ctrl+%s\n", b)) } func cmdhex() { strout(out, config.outputCode, fmt.Sprintf(">-----Hex Send-----<\n")) strout(out, config.outputCode, fmt.Sprintf("%q\n", args[1:])) s := strings.Join(args[1:], "") b, err := hex.DecodeString(s) if err != nil { log.Fatal(err) } _, err = serialPort.Write(b) if err != nil { log.Fatal(err) } } func cmdinit() { commands = append(commands, Command{name: ".help", description: "帮助信息", function: cmdhelp}) commands = append(commands, Command{name: ".ctrl", description: "发送Ctrl组合键", function: cmdctrl}) commands = append(commands, Command{name: ".hex", description: "发送Hex", function: cmdhex}) commands = append(commands, Command{name: ".exit", description: "退出终端", function: cmdexit}) }