Files
tele-recv/utils/serial.go
T

51 lines
937 B
Go
Raw Normal View History

2020-12-21 15:38:33 +08:00
package utils
import (
"time"
2020-12-22 12:08:06 +08:00
2020-12-29 11:00:01 +08:00
"github.com/argandas/serial"
2020-12-28 11:06:36 +08:00
"go.uber.org/zap"
2020-12-21 15:38:33 +08:00
)
2020-12-22 12:08:06 +08:00
var (
2020-12-29 11:00:01 +08:00
device string
baudrate int
// port *serial.Port
sp *serial.SerialPort
2020-12-22 12:08:06 +08:00
portOpened = false
2020-12-28 15:58:00 +08:00
Log *zap.Logger
2020-12-21 15:38:33 +08:00
)
2020-12-24 10:35:13 +08:00
const readDuration = 500 * time.Millisecond
// OpenPort open serial port
2020-12-29 16:38:53 +08:00
func OpenPort(device string, baudrate int) error {
2020-12-28 15:58:00 +08:00
Log.Info("opening serial device ",
zap.String("port", device),
2020-12-29 16:31:23 +08:00
zap.Int("baudrate", baudrate))
2020-12-29 11:00:01 +08:00
sp = serial.New()
sp.EOL('\r')
2020-12-29 11:28:10 +08:00
sp.Verbose = false
2020-12-29 11:00:01 +08:00
err := sp.Open(device, baudrate, time.Second*3)
Log.Info("open ", zap.String("device", device), zap.Error(err))
if err == nil {
portOpened = true
2020-12-21 15:38:33 +08:00
}
2020-12-29 11:00:01 +08:00
return err
2020-12-21 15:38:33 +08:00
}
2020-12-24 10:35:13 +08:00
//ReadPort read byte array from port
2020-12-29 11:00:01 +08:00
func ReadPort() (string, error) {
// buffer := make([]byte, 1)
// if !ServerRunning {
// return buffer, 0
// }
return sp.ReadLine()
2020-12-21 15:38:33 +08:00
}
2020-12-24 10:35:13 +08:00
//IsPortOpen check serial port status
2020-12-21 15:38:33 +08:00
func IsPortOpen() bool {
return portOpened
}