From dd089cd3b39c7a8f5b8b30bb6d4669787d6806e4 Mon Sep 17 00:00:00 2001 From: foglar Date: Sun, 28 Jan 2024 14:20:17 +0100 Subject: [PATCH] Serial listener Fixes serial_read file fixed and added functionalities --- .gitignore | 1 + serial_read/main.go | 51 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6fe618f..ac20b45 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ 2024*.txt +test/* diff --git a/serial_read/main.go b/serial_read/main.go index c1c42da..613f55e 100644 --- a/serial_read/main.go +++ b/serial_read/main.go @@ -5,6 +5,7 @@ import ( "github.com/tarm/serial" "log" "os" + "strconv" "time" ) @@ -36,7 +37,12 @@ func baudrateInput() int { fmt.Print("Enter baudrate (for example - '9600'): ") fmt.Scanln(&s_baudrate) + baudrate = baudrateCheck(s_baudrate) + return baudrate +} +func baudrateCheck(s_baudrate string) int { + var baudrate int switch s_baudrate { case "4800": baudrate = 4800 @@ -48,6 +54,7 @@ func baudrateInput() int { baudrate = 9600 } return baudrate + } func UserInput() (string, int) { @@ -62,8 +69,48 @@ func getTime() string { } func main() { - // User input - port, baudrate := UserInput() + args := os.Args[1:] + var port string + var baudrate int + + if len(args) == 0 { + port, baudrate = UserInput() + } else { + i := 0 + for i < len(args) { + if args[i] == "-p" && i+1 < len(args) { + port = args[i+1] + } + if args[i] == "-h" || args[i] == "--help" { + fmt.Println("-h, --help - prints this message") + fmt.Println("-p [port] - listens on port") + fmt.Println("-b [baudrate] - sets the baudrate") + fmt.Println("-d - runs the script with default values") + os.Exit(0) + + } + if args[i] == "-b" && i+1 < len(args) { + var err error + baudrate, err = strconv.Atoi(args[i+1]) + if err != nil { + fmt.Println("Invalid baudrate") + os.Exit(1) + } + } + if args[i] == "-d" { + port = "/dev/ACM0" + baudrate = 9600 + } + i++ + } + + if port == "" { + port = portInput() + } + if baudrate == 0 { + baudrate = baudrateInput() + } + } // Listen on port fmt.Printf("Listening on port %s with baudrate %d:\n", port, baudrate)