use new serial lib

This commit is contained in:
zhiqiang feng
2020-12-29 11:00:01 +08:00
parent 38a4dbdb84
commit 2011a10464
8 changed files with 45 additions and 35 deletions
+2 -1
View File
@@ -1,3 +1,4 @@
tty* tty*
telegram.db telegram.db
.idea .idea
log_*
+2 -2
View File
@@ -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))
} }
+1
View File
@@ -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
+2
View File
@@ -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=
View File
+1
View File
@@ -0,0 +1 @@
[ttyS1] 2020/12/29 10:56:53 Serial port ttyS1@9600 open
+36 -31
View File
@@ -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
View File
@@ -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')