package utils import ( "io" "log" "time" "github.com/tarm/serial" ) var ( device string baudrate int bytesize byte port *serial.Port portOpened = false ) func OpenPort(device string, baudrate int, bytesize byte) error { log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize) config := &serial.Config{Name: device, Baud: baudrate, Size: bytesize, ReadTimeout: time.Second * 1} var err error port, err = serial.OpenPort(config) if err != nil { log.Fatalln("error in open serial port ", err) return err } log.Println("opened port ", port) portOpened = true return nil } func ReadPort() ([]byte, int) { buffer := make([]byte, 256) if !ServerRunning { return buffer, 0 } count, err := port.Read(buffer) if err != nil && err != io.EOF { log.Println("error in read port ", err) //TODO: 3 time fail try to } return buffer, count } func IsPortOpen() bool { return portOpened }