use new serial lib
This commit is contained in:
+2
-1
@@ -1,3 +1,4 @@
|
||||
tty*
|
||||
telegram.db
|
||||
.idea
|
||||
.idea
|
||||
log_*
|
||||
+2
-2
@@ -91,8 +91,8 @@ func start() {
|
||||
}
|
||||
logger.Info("starting read")
|
||||
}
|
||||
buffer, count := utils.ReadPort()
|
||||
if count > 0 {
|
||||
buffer, err := utils.ReadPort()
|
||||
if err == nil {
|
||||
if lograw && len(buffer) > 0 {
|
||||
fmt.Print(string(buffer))
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ module it2000.com.cn/tele-recv
|
||||
go 1.15
|
||||
|
||||
require (
|
||||
github.com/argandas/serial v0.0.0-20160316175758-889a5ad85462
|
||||
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||
github.com/lestrrat-go/strftime v1.0.3 // indirect
|
||||
|
||||
@@ -17,6 +17,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/argandas/serial v0.0.0-20160316175758-889a5ad85462 h1:Hl0NBpA4cJvqHyrm3mhAb+g9bzimPr6pmb9JhfV5PhA=
|
||||
github.com/argandas/serial v0.0.0-20160316175758-889a5ad85462/go.mod h1:IPXZreh+vkWR8Dr8jwAZJo/L9Kpsw9zSkwYFEJ7eVro=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[ttyS1] 2020/12/29 10:56:53 Serial port ttyS1@9600 open
|
||||
+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