51 lines
967 B
Go
51 lines
967 B
Go
package utils
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/argandas/serial"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var (
|
|
device string
|
|
baudrate int
|
|
// 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))
|
|
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
|
|
}
|
|
|
|
//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
|
|
}
|