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*
telegram.db
.idea
.idea
log_*
+2 -2
View File
@@ -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))
}
+1
View File
@@ -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
+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/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=
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
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
View File
@@ -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')