package utils import ( "time" "github.com/argandas/serial" "go.uber.org/zap" ) var ( device string baudrate int bytesize byte stopbits byte // port *serial.Port sp *serial.SerialPort portOpened = false Log *zap.Logger ) const readDuration = 500 * time.Millisecond // OpenPort open serial port func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { Log.Info("opening serial device ", zap.String("port", device), zap.Int("baudrate", baudrate), zap.Int("bytesize", int(bytesize)), zap.Int("stopbits", int(stopbits))) sp = serial.New() sp.EOL('\r') sp.Verbose = false err := sp.Open(device, baudrate, time.Second*3) Log.Info("open ", zap.String("device", device), zap.Error(err)) if err == nil { portOpened = true } return err // config := &serial.Config{Name: device, // Baud: baudrate, // Size: bytesize, // StopBits: serial.StopBits(stopbits), // ReadTimeout: readDuration} // var err error // port, err = serial.OpenPort(config) // if err != nil { // Log.Fatal("error in open serial port ", zap.Error(err)) // return err // } // Log.Info("opened ", zap.String("port", device)) // portOpened = true // return nil } //ReadPort read byte array from port func ReadPort() (string, error) { // buffer := make([]byte, 1) // if !ServerRunning { // return buffer, 0 // } return sp.ReadLine() } //IsPortOpen check serial port status func IsPortOpen() bool { return portOpened }