use new serial lib
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
tty*
|
tty*
|
||||||
telegram.db
|
telegram.db
|
||||||
.idea
|
.idea
|
||||||
|
log_*
|
||||||
+2
-2
@@ -91,8 +91,8 @@ func start() {
|
|||||||
}
|
}
|
||||||
logger.Info("starting read")
|
logger.Info("starting read")
|
||||||
}
|
}
|
||||||
buffer, count := utils.ReadPort()
|
buffer, err := utils.ReadPort()
|
||||||
if count > 0 {
|
if err == nil {
|
||||||
if lograw && len(buffer) > 0 {
|
if lograw && len(buffer) > 0 {
|
||||||
fmt.Print(string(buffer))
|
fmt.Print(string(buffer))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ module it2000.com.cn/tele-recv
|
|||||||
go 1.15
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/argandas/serial v0.0.0-20160316175758-889a5ad85462
|
||||||
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
|
||||||
github.com/lestrrat-go/strftime v1.0.3 // indirect
|
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/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/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/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/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-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=
|
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
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/tarm/serial"
|
"github.com/argandas/serial"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
device string
|
device string
|
||||||
baudrate int
|
baudrate int
|
||||||
bytesize byte
|
bytesize byte
|
||||||
stopbits byte
|
stopbits byte
|
||||||
port *serial.Port
|
// port *serial.Port
|
||||||
|
sp *serial.SerialPort
|
||||||
portOpened = false
|
portOpened = false
|
||||||
Log *zap.Logger
|
Log *zap.Logger
|
||||||
)
|
)
|
||||||
@@ -27,34 +27,39 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error {
|
|||||||
zap.Int("baudrate", baudrate),
|
zap.Int("baudrate", baudrate),
|
||||||
zap.Int("bytesize", int(bytesize)),
|
zap.Int("bytesize", int(bytesize)),
|
||||||
zap.Int("stopbits", int(stopbits)))
|
zap.Int("stopbits", int(stopbits)))
|
||||||
config := &serial.Config{Name: device,
|
sp = serial.New()
|
||||||
Baud: baudrate,
|
sp.EOL('\r')
|
||||||
Size: bytesize,
|
err := sp.Open(device, baudrate, time.Second*3)
|
||||||
StopBits: serial.StopBits(stopbits),
|
Log.Info("open ", zap.String("device", device), zap.Error(err))
|
||||||
ReadTimeout: readDuration}
|
if err == nil {
|
||||||
var err error
|
portOpened = true
|
||||||
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))
|
return err
|
||||||
portOpened = true
|
|
||||||
return nil
|
// 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
|
//ReadPort read byte array from port
|
||||||
func ReadPort() ([]byte, int) {
|
func ReadPort() (string, error) {
|
||||||
buffer := make([]byte, 1)
|
// buffer := make([]byte, 1)
|
||||||
if !ServerRunning {
|
// if !ServerRunning {
|
||||||
return buffer, 0
|
// return buffer, 0
|
||||||
}
|
// }
|
||||||
count, err := port.Read(buffer)
|
|
||||||
if err != nil && err != io.EOF {
|
return sp.ReadLine()
|
||||||
Log.Error("error in read port ", zap.Error(err))
|
|
||||||
//TODO: 3 time fail try to
|
|
||||||
}
|
|
||||||
return buffer, count
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//IsPortOpen check serial port status
|
//IsPortOpen check serial port status
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ const (
|
|||||||
var buffer []byte
|
var buffer []byte
|
||||||
var RawLog *rotatelogs.RotateLogs
|
var RawLog *rotatelogs.RotateLogs
|
||||||
|
|
||||||
func Append(data []byte) bool {
|
func Append(data string) bool {
|
||||||
buffer = append(buffer, data...)
|
buffer = append(buffer, data...)
|
||||||
if buffer[len(buffer)-1] == '\r' {
|
if buffer[len(buffer)-1] == '\r' {
|
||||||
buffer = append(buffer, '\n')
|
buffer = append(buffer, '\n')
|
||||||
|
|||||||
Reference in New Issue
Block a user