Files
tele-recv/utils/serial.go
T

70 lines
1.5 KiB
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
bytesize byte
stopbits byte
// 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
func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
2020-12-28 15:58:00 +08:00
Log.Info("opening serial device ",
zap.String("port", device),
zap.Int("baudrate", baudrate),
zap.Int("bytesize", int(bytesize)),
zap.Int("stopbits", int(stopbits)))
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
// 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
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
}