package utils import ( "github.com/tarm/serial" "io" "log" "time" ) var( device string baudrate int bytesize byte port *serial.Port portOpened bool ) 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) 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 }