use new serial lib
This commit is contained in:
+36
-31
@@ -1,19 +1,19 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"io"
|
||||
"time"
|
||||
|
||||
"github.com/tarm/serial"
|
||||
"github.com/argandas/serial"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
device string
|
||||
baudrate int
|
||||
bytesize byte
|
||||
stopbits byte
|
||||
port *serial.Port
|
||||
device string
|
||||
baudrate int
|
||||
bytesize byte
|
||||
stopbits byte
|
||||
// port *serial.Port
|
||||
sp *serial.SerialPort
|
||||
portOpened = false
|
||||
Log *zap.Logger
|
||||
)
|
||||
@@ -27,34 +27,39 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
|
||||
zap.Int("baudrate", baudrate),
|
||||
zap.Int("bytesize", int(bytesize)),
|
||||
zap.Int("stopbits", int(stopbits)))
|
||||
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
|
||||
sp = serial.New()
|
||||
sp.EOL('\r')
|
||||
err := sp.Open(device, baudrate, time.Second*3)
|
||||
Log.Info("open ", zap.String("device", device), zap.Error(err))
|
||||
if err == nil {
|
||||
portOpened = true
|
||||
}
|
||||
Log.Info("opened ", zap.String("port", device))
|
||||
portOpened = true
|
||||
return nil
|
||||
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() ([]byte, int) {
|
||||
buffer := make([]byte, 1)
|
||||
if !ServerRunning {
|
||||
return buffer, 0
|
||||
}
|
||||
count, err := port.Read(buffer)
|
||||
if err != nil && err != io.EOF {
|
||||
Log.Error("error in read port ", zap.Error(err))
|
||||
//TODO: 3 time fail try to
|
||||
}
|
||||
return buffer, count
|
||||
func ReadPort() (string, error) {
|
||||
// buffer := make([]byte, 1)
|
||||
// if !ServerRunning {
|
||||
// return buffer, 0
|
||||
// }
|
||||
|
||||
return sp.ReadLine()
|
||||
}
|
||||
|
||||
//IsPortOpen check serial port status
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ const (
|
||||
var buffer []byte
|
||||
var RawLog *rotatelogs.RotateLogs
|
||||
|
||||
func Append(data []byte) bool {
|
||||
func Append(data string) bool {
|
||||
buffer = append(buffer, data...)
|
||||
if buffer[len(buffer)-1] == '\r' {
|
||||
buffer = append(buffer, '\n')
|
||||
|
||||
Reference in New Issue
Block a user