From 710932d03be3e700ce334c74893089f1eb110a05 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 10:35:13 +0800 Subject: [PATCH 01/54] add stopbits parameter , add serial docs --- cmd/root.go | 5 ++++- cmd/start.go | 2 +- cmd/test.go | 5 +++-- telegram.yaml | 3 ++- utils/serial.go | 16 +++++++++++++--- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 2db00aa..cb2bd08 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -17,9 +17,10 @@ package cmd import ( "fmt" - "github.com/spf13/cobra" "os" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) @@ -28,6 +29,7 @@ var ( device string baudrate int bytesize byte + stopbits byte lograw bool dbFile string @@ -95,6 +97,7 @@ func initConfig() { device = viper.GetString("serial.device") baudrate = viper.GetInt("serial.baudrate") bytesize = byte(viper.GetInt("serial.bytesize")) + stopbits = byte(viper.GetInt("serial.stopbits")) lograw = viper.GetBool("serial.lograw") dbFile = viper.GetString("sqlite.file") dbInit = viper.GetBool("sqlite.init") diff --git a/cmd/start.go b/cmd/start.go index 0857a5a..4083d79 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -86,7 +86,7 @@ func start() { for utils.ServerRunning { if !utils.IsPortOpen() { log.Println("try to open port") - err := utils.OpenPort(device, baudrate, bytesize) + err := utils.OpenPort(device, baudrate, bytesize, stopbits) if err != nil { log.Fatal("error in open serial port ", err) } diff --git a/cmd/test.go b/cmd/test.go index 18c2391..8b0832d 100644 --- a/cmd/test.go +++ b/cmd/test.go @@ -16,9 +16,10 @@ limitations under the License. package cmd import ( + "log" + "github.com/spf13/cobra" "it2000.com.cn/tele-recv/utils" - "log" ) // testCmd represents the test command @@ -35,7 +36,7 @@ Test load sqlite database and init table`, func test() { log.Println("Testing environment") - _ = utils.OpenPort(device, baudrate, bytesize) + _ = utils.OpenPort(device, baudrate, bytesize, stopbits) err := utils.InitDb(dbFile, dbInit) if err != nil { diff --git a/telegram.yaml b/telegram.yaml index 56d430a..213dd07 100644 --- a/telegram.yaml +++ b/telegram.yaml @@ -1,7 +1,8 @@ serial: device: ttyS1 baudrate: 9600 - bytesize: 7 + bytesize: 8 + stopbits: 7 lograw: true diff --git a/utils/serial.go b/utils/serial.go index 06c1855..cd5575d 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -12,13 +12,21 @@ var ( device string baudrate int bytesize byte + stopbits byte port *serial.Port portOpened = false ) -func OpenPort(device string, baudrate int, bytesize byte) error { - log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize) - config := &serial.Config{Name: device, Baud: baudrate, Size: bytesize, ReadTimeout: time.Second * 1} +const readDuration = 500 * time.Millisecond + +// OpenPort open serial port +func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { + log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize, "stopbits=", 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 { @@ -30,6 +38,7 @@ func OpenPort(device string, baudrate int, bytesize byte) error { return nil } +//ReadPort read byte array from port func ReadPort() ([]byte, int) { buffer := make([]byte, 256) if !ServerRunning { @@ -43,6 +52,7 @@ func ReadPort() ([]byte, int) { return buffer, count } +//IsPortOpen check serial port status func IsPortOpen() bool { return portOpened } From 22c8cbfd8d06f4581d280b43c9a8d5f3ec716c00 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 10:41:51 +0800 Subject: [PATCH 02/54] add build windows binary --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index ec15392..ebd852d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -23,6 +23,7 @@ steps: GOPROXY: https://goproxy.io commands: - go build -o tele-recv-linux + - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - name: release image: plugins/gitea-release From 965269cee807d9855f9214235eec619eb05dd853 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 10:48:41 +0800 Subject: [PATCH 03/54] create archive files --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index ebd852d..88d53ec 100644 --- a/.drone.yml +++ b/.drone.yml @@ -23,7 +23,9 @@ steps: GOPROXY: https://goproxy.io commands: - go build -o tele-recv-linux + - tar cvzf tele-recv-linux.tar.gz tele-recv-linux telegram.yaml - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe + - zip tele-recv-win64.zip tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release From bf2036e83e8f5769816ff2a845d693f664e7ee52 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 10:56:30 +0800 Subject: [PATCH 04/54] tar all release file --- .drone.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 88d53ec..66745e4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -23,9 +23,8 @@ steps: GOPROXY: https://goproxy.io commands: - go build -o tele-recv-linux - - tar cvzf tele-recv-linux.tar.gz tele-recv-linux telegram.yaml - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - - zip tele-recv-win64.zip tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -37,7 +36,7 @@ steps: base_url: https://gitea.int.it2000.com.cn title: 0.0.1 files: - - tele-recv-linux + - tele-recv-linux.tar.gz checksum: - sha256 when: From 08c7362358ae137b940730022ac6983264382469 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 10:59:52 +0800 Subject: [PATCH 05/54] fix tar command --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 66745e4..b94e718 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release From c4d19924bbf09eb2593bf70291166fd6fc215c60 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Thu, 24 Dec 2020 11:06:59 +0800 Subject: [PATCH 06/54] add release version --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index b94e718..a2d43e2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux-0.0.2.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.1 + title: 0.0.2 files: - - tele-recv-linux.tar.gz + - tele-recv-linux-0.0.2.tar.gz checksum: - sha256 when: From f43412b2354fe9c3d5a73dbc610c62c4d327d2bc Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 11:05:51 +0800 Subject: [PATCH 07/54] stopbit comments, 1,2,15 --- telegram.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/telegram.yaml b/telegram.yaml index 213dd07..60447a7 100644 --- a/telegram.yaml +++ b/telegram.yaml @@ -2,7 +2,8 @@ serial: device: ttyS1 baudrate: 9600 bytesize: 8 - stopbits: 7 + # 1, 2, 15 + stopbits: 1 lograw: true From 2cbfbdbbcab95599a45e01d3c014f9460bcc2fa4 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 11:06:36 +0800 Subject: [PATCH 08/54] add zap for default logger --- cmd/root.go | 21 ++++++++++++++++++++- cmd/start.go | 17 +++++++---------- cmd/test.go | 4 +--- go.mod | 2 ++ go.sum | 18 ++++++++++++++++++ utils/serial.go | 15 ++++++++++----- utils/socket.go | 15 +++++++-------- utils/sqlite.go | 31 +++++++++++++++---------------- utils/telegram.go | 3 +-- 9 files changed, 81 insertions(+), 45 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index cb2bd08..862f9bb 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -20,10 +20,14 @@ import ( "os" "github.com/spf13/cobra" + "go.uber.org/zap" "github.com/spf13/viper" + "it2000.com.cn/tele-recv/utils" ) +const ModeName = "TELEGRAM_MODE" + var ( cfgFile string device string @@ -47,6 +51,11 @@ Read the telegram from `, // has an action associated with it: // Run: func(cmd *cobra.Command, args []string) { }, } + + Mode = os.Getenv(ModeName) + + logger *zap.Logger + l *zap.SugaredLogger ) // Execute adds all child commands to the root command and sets flags appropriately. @@ -69,6 +78,14 @@ func init() { // Cobra also supports local flags, which will only run // when this action is called directly. rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + if Mode == "PROD" { + logger, _ = zap.NewProduction() + } else { + logger, _ = zap.NewDevelopment() + } + defer logger.Sync() + l = logger.Sugar() + utils.Log = l } // initConfig reads in config file and ENV variables if set. @@ -93,7 +110,8 @@ func initConfig() { // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) + // fmt.Println("Using config file:", viper.ConfigFileUsed()) + l.Infof("Using config file : %s", viper.ConfigFileUsed()) device = viper.GetString("serial.device") baudrate = viper.GetInt("serial.baudrate") bytesize = byte(viper.GetInt("serial.bytesize")) @@ -103,4 +121,5 @@ func initConfig() { dbInit = viper.GetBool("sqlite.init") socketAddress = viper.GetString("socket.address") } + } diff --git a/cmd/start.go b/cmd/start.go index 4083d79..38c53a4 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -16,8 +16,6 @@ limitations under the License. package cmd import ( - "fmt" - "log" "os" "os/signal" "syscall" @@ -70,8 +68,7 @@ func start() { // and then notify the program that it can finish. go func() { sig := <-sigs - fmt.Println() - fmt.Println(sig) + l.Info(sig) utils.ServerRunning = false utils.StopSocketServer() done <- true @@ -80,27 +77,27 @@ func start() { // The program will wait here until it gets the // expected signal (as indicated by the goroutine // above sending a value on `done`) and then exit. - fmt.Println("awaiting signal") + l.Info("awaiting signal") _ = utils.InitDb(dbFile, dbInit) go utils.Listen(socketAddress) for utils.ServerRunning { if !utils.IsPortOpen() { - log.Println("try to open port") + l.Info("try to open port") err := utils.OpenPort(device, baudrate, bytesize, stopbits) if err != nil { - log.Fatal("error in open serial port ", err) + l.Fatal("error in open serial port ", err) } - log.Println("starting read") + l.Info("starting read") } buffer, count := utils.ReadPort() if count > 0 { if lograw { - log.Print(string(buffer)) + l.Error(string(buffer)) } utils.Append(buffer) } } <-done - fmt.Println("exiting") + l.Info("exiting") } diff --git a/cmd/test.go b/cmd/test.go index 8b0832d..48ff014 100644 --- a/cmd/test.go +++ b/cmd/test.go @@ -16,8 +16,6 @@ limitations under the License. package cmd import ( - "log" - "github.com/spf13/cobra" "it2000.com.cn/tele-recv/utils" ) @@ -35,7 +33,7 @@ Test load sqlite database and init table`, } func test() { - log.Println("Testing environment") + l.Info("Testing environment") _ = utils.OpenPort(device, baudrate, bytesize, stopbits) err := utils.InitDb(dbFile, dbInit) diff --git a/go.mod b/go.mod index 4f116c0..9118053 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,8 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.7.1 github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.16.0 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect golang.org/x/text v0.3.4 // indirect gopkg.in/ini.v1 v1.62.0 // indirect diff --git a/go.sum b/go.sum index 41b0411..fa68a33 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,7 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -144,6 +145,7 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9 github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -209,8 +211,19 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -230,6 +243,7 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -299,6 +313,9 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -343,5 +360,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/utils/serial.go b/utils/serial.go index cd5575d..28d5e68 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -2,10 +2,10 @@ package utils import ( "io" - "log" "time" "github.com/tarm/serial" + "go.uber.org/zap" ) var ( @@ -15,13 +15,18 @@ var ( stopbits byte port *serial.Port portOpened = false + Log *zap.SugaredLogger ) const readDuration = 500 * time.Millisecond // OpenPort open serial port func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { - log.Println("opening port device:", device, ", baudrate=", baudrate, ", bytesize=", bytesize, "stopbits=", stopbits) + Log.Infow("opening serial device ", + "port", device, + "baudrate", baudrate, + "bytesize", bytesize, + "stopbits", stopbits) config := &serial.Config{Name: device, Baud: baudrate, Size: bytesize, @@ -30,10 +35,10 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { var err error port, err = serial.OpenPort(config) if err != nil { - log.Fatalln("error in open serial port ", err) + Log.Fatal("error in open serial port ", err) return err } - log.Println("opened port ", port) + Log.Infof("%s opened", device) portOpened = true return nil } @@ -46,7 +51,7 @@ func ReadPort() ([]byte, int) { } count, err := port.Read(buffer) if err != nil && err != io.EOF { - log.Println("error in read port ", err) + Log.Error("error in read port ", err) //TODO: 3 time fail try to } return buffer, count diff --git a/utils/socket.go b/utils/socket.go index f9d6a9a..8a15983 100644 --- a/utils/socket.go +++ b/utils/socket.go @@ -2,7 +2,6 @@ package utils import ( "io" - "log" "net" "time" ) @@ -18,23 +17,23 @@ func Listen(address string) { var err error server, err = net.Listen(ServerType, address) if err != nil { - log.Fatal("error in create server ", err) + Log.Fatal("error in create server ", err) } defer server.Close() - log.Println("listen on ", address) + Log.Infof("listen on %s", address) for ServerRunning { conn, err := server.Accept() if err != nil { ServerRunning = false - log.Fatalln("error in create connection ", err) + Log.Error("error in create connection ", err) } if client == nil { client = conn ClientReady = false - log.Println("client connected ", client.RemoteAddr()) + Log.Infof("client %s connected ", client.RemoteAddr()) LoadUnprocessed() } else { - log.Println("client already connected, close") + Log.Info("client already connected, close") client.Close() client = nil conn.Close() @@ -49,7 +48,7 @@ func Listen(address string) { func WriteToClient(data string) error { _, err := client.Write([]byte(data + "\r\n")) if err != nil { - log.Println("error in write data to client socket ", err) + Log.Error("error in write data to client socket ", err) closeClient() } return err @@ -59,7 +58,7 @@ func connCheck() bool { _, err := client.Read(make([]byte, 0)) if err != nil && err != io.EOF { // this connection is invalid - log.Println("conn closed....", err) + Log.Error("conn closed....", err) client = nil return false } diff --git a/utils/sqlite.go b/utils/sqlite.go index 743138e..1cf6633 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -2,7 +2,6 @@ package utils import ( "database/sql" - "log" "os" "time" @@ -42,12 +41,12 @@ var ( func getDb() *sql.DB { //log.Println("init database ", initTable) if initTable && !initialized { - log.Println("remove database file", dbFile) + Log.Info("remove database file ", dbFile) os.Remove(dbFile) } db, err := sql.Open(DbDriver, dbFile) if err != nil { - log.Fatal("error in open database ", err) + Log.Fatal("error in open database ", err) } return db } @@ -60,7 +59,7 @@ func InitDb(file string, init bool) error { defer db.Close() _, dbErr = db.Exec(TableCreate) checkDbErr(dbErr, "error in create table") - log.Println("database ", db, " initialized") + Log.Infof("database %s initialized", dbFile) initialized = true return nil } @@ -83,14 +82,14 @@ func InsertTelegram(teleString string) { checkDbErr(err, "error in insert telegram ") isWriting = false if insertSQL == InsertOld { - log.Println("telegram processed ", id) + Log.Infof("telegram [%n] processed ", id) } else { - log.Println("telegram saved ", id) + Log.Infof("telegram [%n] saved ", id) } } func LoadUnprocessed() { - log.Println("loading telegram") + Log.Info("loading telegram") db := getDb() defer db.Close() for { @@ -105,17 +104,17 @@ func LoadUnprocessed() { } } ClientReady = true - log.Println("client is ready for new telegram") + Log.Info("client is ready for new telegram") } func getTelegram(db *sql.DB) []telegram { var telegrams []telegram num := countTelegram() - log.Println("unprocessed : ", num) + Log.Infof("%n telegram unprocessed ", num) if num < 1 { return telegrams } - log.Println("try to load unprocessed telegram ", num) + Log.Info("try to load unprocessed telegram ") rows, err := db.Query(load) checkDbErr(err, "error in query telegram") defer rows.Close() @@ -138,9 +137,9 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") id, _ := result.RowsAffected() - log.Println(t.id, " telegram update : ", id > 0) + Log.Infof("[%n] telegram update : %b", id, id > 0) isWriting = false - log.Println("release lock") + Log.Info("release lock") tx.Commit() } @@ -157,20 +156,20 @@ func countTelegram() int64 { func getWriteLock() { count := 0 - log.Println("write lock :", isWriting) + Log.Infof("write lock : %b", isWriting) for isWriting && count < 10 { - log.Println("waiting for write ") + Log.Info("waiting for write ") time.Sleep(5 * time.Second) count++ } if count >= 10 { - log.Fatalln("database locked") + Log.Fatal("database locked") } isWriting = true } func checkDbErr(err error, msg string) { if err != nil { - log.Fatalln(msg, err) + Log.Fatal(msg, err) } } diff --git a/utils/telegram.go b/utils/telegram.go index 76935ac..17d9ffc 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -1,7 +1,6 @@ package utils import ( - "log" "regexp" "strings" ) @@ -28,7 +27,7 @@ func check() { telegram := exp.FindString(string(buffer)) if len(telegram) > 0 { - log.Println("telegram : ", telegram) + Log.Infof("telegram : %s", telegram) buffer = nil InsertTelegram(telegram) } From 5d3a802f833495f51d8d133c9a50c18a2ea47eba Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 11:09:41 +0800 Subject: [PATCH 09/54] build add linux os parameter --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index a2d43e2..a44b510 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: GO111MODULE: on GOPROXY: https://goproxy.io commands: - - go build -o tele-recv-linux + - GOOS=linux GOARCH=amd64go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - tar cvzf tele-recv-linux-0.0.2.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml From fa07d59d07f5d55a86314d6e19344d89e23f5eb1 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 11:10:53 +0800 Subject: [PATCH 10/54] fix build command --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index a44b510..04c82b1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: GO111MODULE: on GOPROXY: https://goproxy.io commands: - - GOOS=linux GOARCH=amd64go build -o tele-recv-linux + - GOOS=linux GOARCH=amd64 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - tar cvzf tele-recv-linux-0.0.2.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml From eaf32cf1e7fe6fcf95763d8e1a12945a13ce29f1 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 11:30:16 +0800 Subject: [PATCH 11/54] write lock change to debug --- utils/sqlite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index 1cf6633..a278e69 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -137,7 +137,7 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") id, _ := result.RowsAffected() - Log.Infof("[%n] telegram update : %b", id, id > 0) + Log.Infof("[%s] telegram update : %s", id, id > 0) isWriting = false Log.Info("release lock") tx.Commit() @@ -156,7 +156,7 @@ func countTelegram() int64 { func getWriteLock() { count := 0 - Log.Infof("write lock : %b", isWriting) + Log.Debugf("write lock : %s", isWriting) for isWriting && count < 10 { Log.Info("waiting for write ") time.Sleep(5 * time.Second) From c37f4b081f44fb09c46de523946ef5add0a0a943 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 12:25:26 +0800 Subject: [PATCH 12/54] telegram raw with info --- cmd/start.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/start.go b/cmd/start.go index 38c53a4..04375f8 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -92,7 +92,7 @@ func start() { buffer, count := utils.ReadPort() if count > 0 { if lograw { - l.Error(string(buffer)) + l.Info(string(buffer)) } utils.Append(buffer) } From 2d8f5c7907b2b71fcb2e2e07531106ebc20e5cb2 Mon Sep 17 00:00:00 2001 From: fengzhiqiang Date: Mon, 28 Dec 2020 13:00:16 +0800 Subject: [PATCH 13/54] modify logger --- cmd/start.go | 4 ++-- utils/serial.go | 2 +- utils/sqlite.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/start.go b/cmd/start.go index 04375f8..e091c2a 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -19,7 +19,7 @@ import ( "os" "os/signal" "syscall" - + "fmt" "it2000.com.cn/tele-recv/utils" "github.com/spf13/cobra" @@ -92,7 +92,7 @@ func start() { buffer, count := utils.ReadPort() if count > 0 { if lograw { - l.Info(string(buffer)) + fmt.Print(string(buffer)) } utils.Append(buffer) } diff --git a/utils/serial.go b/utils/serial.go index 28d5e68..671e6fa 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -45,7 +45,7 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { //ReadPort read byte array from port func ReadPort() ([]byte, int) { - buffer := make([]byte, 256) + buffer := make([]byte, 1) if !ServerRunning { return buffer, 0 } diff --git a/utils/sqlite.go b/utils/sqlite.go index a278e69..f8c0432 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -82,9 +82,9 @@ func InsertTelegram(teleString string) { checkDbErr(err, "error in insert telegram ") isWriting = false if insertSQL == InsertOld { - Log.Infof("telegram [%n] processed ", id) + Log.Infof("telegram [%s] processed ", id) } else { - Log.Infof("telegram [%n] saved ", id) + Log.Infof("telegram [%s] saved ", id) } } From 04f6c42113f89d7f0e327bda881626b955710187 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 13:01:59 +0800 Subject: [PATCH 14/54] change template --- utils/sqlite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index f8c0432..25c0c9b 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -137,7 +137,7 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") id, _ := result.RowsAffected() - Log.Infof("[%s] telegram update : %s", id, id > 0) + Log.Infof("[%v] telegram update : %t", id, id > 0) isWriting = false Log.Info("release lock") tx.Commit() @@ -156,7 +156,7 @@ func countTelegram() int64 { func getWriteLock() { count := 0 - Log.Debugf("write lock : %s", isWriting) + Log.Debugf("write lock : %t", isWriting) for isWriting && count < 10 { Log.Info("waiting for write ") time.Sleep(5 * time.Second) From 4c336bbb96465b1755009261fcd198ef69727937 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 13:05:42 +0800 Subject: [PATCH 15/54] log digital --- utils/sqlite.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index 25c0c9b..5601412 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -137,7 +137,7 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") id, _ := result.RowsAffected() - Log.Infof("[%v] telegram update : %t", id, id > 0) + Log.Infof("[%d] telegram update : %t", id, id > 0) isWriting = false Log.Info("release lock") tx.Commit() From c06ec0a519727c5b8add8e6b281fdcbd40abfa81 Mon Sep 17 00:00:00 2001 From: fengzhiqiang Date: Mon, 28 Dec 2020 14:14:13 +0800 Subject: [PATCH 16/54] fix digital log --- utils/sqlite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index 5601412..90d6ddb 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -82,9 +82,9 @@ func InsertTelegram(teleString string) { checkDbErr(err, "error in insert telegram ") isWriting = false if insertSQL == InsertOld { - Log.Infof("telegram [%s] processed ", id) + Log.Infof("telegram [%d] processed ", id) } else { - Log.Infof("telegram [%s] saved ", id) + Log.Infof("telegram [%d] saved ", id) } } From 0619229ec57cd9992189a1c9315c3c77f10fdeb1 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 15:58:00 +0800 Subject: [PATCH 17/54] add zap logger --- caller | 0 cmd/root.go | 51 ++++++++++++++++++++++++++++++++--------------- cmd/start.go | 16 ++++++++------- cmd/test.go | 2 +- go.mod | 2 ++ go.sum | 5 +++++ utils/serial.go | 18 ++++++++--------- utils/socket.go | 14 +++++++------ utils/sqlite.go | 19 +++++++++--------- utils/telegram.go | 4 +++- 10 files changed, 82 insertions(+), 49 deletions(-) create mode 100644 caller diff --git a/caller b/caller new file mode 100644 index 0000000..e69de29 diff --git a/cmd/root.go b/cmd/root.go index 862f9bb..e37fd07 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -18,9 +18,12 @@ package cmd import ( "fmt" "os" + "time" + rotatelogs "github.com/lestrrat-go/file-rotatelogs" "github.com/spf13/cobra" "go.uber.org/zap" + "go.uber.org/zap/zapcore" "github.com/spf13/viper" "it2000.com.cn/tele-recv/utils" @@ -55,7 +58,7 @@ Read the telegram from `, Mode = os.Getenv(ModeName) logger *zap.Logger - l *zap.SugaredLogger + // l *zap.SugaredLogger ) // Execute adds all child commands to the root command and sets flags appropriately. @@ -78,14 +81,12 @@ func init() { // Cobra also supports local flags, which will only run // when this action is called directly. rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") - if Mode == "PROD" { - logger, _ = zap.NewProduction() - } else { - logger, _ = zap.NewDevelopment() - } + + initLog() defer logger.Sync() - l = logger.Sugar() - utils.Log = l + // l = logger.Sugar() + utils.Log = logger + } // initConfig reads in config file and ENV variables if set. @@ -94,13 +95,6 @@ func initConfig() { // Use config file from the flag. viper.SetConfigFile(cfgFile) } else { - // Find home directory. - //home, err := os.Open(".") - //if err != nil { - // fmt.Println(err) - // os.Exit(1) - //} - // Search config in home directory with name ".tele-recv" (without extension). viper.AddConfigPath(".") viper.SetConfigName("telegram") @@ -111,7 +105,7 @@ func initConfig() { // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil { // fmt.Println("Using config file:", viper.ConfigFileUsed()) - l.Infof("Using config file : %s", viper.ConfigFileUsed()) + logger.Info("Using config file ", zap.String("path", viper.ConfigFileUsed())) device = viper.GetString("serial.device") baudrate = viper.GetInt("serial.baudrate") bytesize = byte(viper.GetInt("serial.bytesize")) @@ -123,3 +117,28 @@ func initConfig() { } } + +func initLog() { + logFile := "./log/telegram-%Y-%m-%d-%H.log" + rotator, err := rotatelogs.New( + logFile, + rotatelogs.WithMaxAge(60*24*time.Hour), + rotatelogs.WithRotationTime(time.Hour)) + if err != nil { + panic(err) + } + + priority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl >= zapcore.DebugLevel + }) + + encoder := zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()) + + core := zapcore.NewTee( + zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), priority), + zapcore.NewCore(encoder, zapcore.AddSync(rotator), priority), + ) + + logger = zap.New(core) + +} diff --git a/cmd/start.go b/cmd/start.go index e091c2a..b41684a 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -16,10 +16,12 @@ limitations under the License. package cmd import ( + "fmt" "os" "os/signal" "syscall" - "fmt" + + "go.uber.org/zap" "it2000.com.cn/tele-recv/utils" "github.com/spf13/cobra" @@ -68,7 +70,7 @@ func start() { // and then notify the program that it can finish. go func() { sig := <-sigs - l.Info(sig) + logger.Info("got ", zap.Any("signal", sig)) utils.ServerRunning = false utils.StopSocketServer() done <- true @@ -77,17 +79,17 @@ func start() { // The program will wait here until it gets the // expected signal (as indicated by the goroutine // above sending a value on `done`) and then exit. - l.Info("awaiting signal") + logger.Info("awaiting signal") _ = utils.InitDb(dbFile, dbInit) go utils.Listen(socketAddress) for utils.ServerRunning { if !utils.IsPortOpen() { - l.Info("try to open port") + logger.Info("try to open port") err := utils.OpenPort(device, baudrate, bytesize, stopbits) if err != nil { - l.Fatal("error in open serial port ", err) + logger.Fatal("error in open serial port ", zap.Error(err)) } - l.Info("starting read") + logger.Info("starting read") } buffer, count := utils.ReadPort() if count > 0 { @@ -98,6 +100,6 @@ func start() { } } <-done - l.Info("exiting") + logger.Info("exiting") } diff --git a/cmd/test.go b/cmd/test.go index 48ff014..aac5439 100644 --- a/cmd/test.go +++ b/cmd/test.go @@ -33,7 +33,7 @@ Test load sqlite database and init table`, } func test() { - l.Info("Testing environment") + logger.Info("Testing environment") _ = utils.OpenPort(device, baudrate, bytesize, stopbits) err := utils.InitDb(dbFile, dbInit) diff --git a/go.mod b/go.mod index 9118053..cd5564d 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,8 @@ go 1.15 require ( 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 github.com/magiconair/properties v1.8.4 // indirect github.com/mattn/go-sqlite3 v1.14.5 github.com/mitchellh/mapstructure v1.4.0 // indirect diff --git a/go.sum b/go.sum index fa68a33..eb16feb 100644 --- a/go.sum +++ b/go.sum @@ -113,6 +113,11 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= +github.com/lestrrat-go/strftime v1.0.3 h1:qqOPU7y+TM8Y803I8fG9c/DyKG3xH/xkng6keC1015Q= +github.com/lestrrat-go/strftime v1.0.3/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= diff --git a/utils/serial.go b/utils/serial.go index 671e6fa..83b671a 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -15,18 +15,18 @@ var ( stopbits byte port *serial.Port portOpened = false - Log *zap.SugaredLogger + Log *zap.Logger ) const readDuration = 500 * time.Millisecond // OpenPort open serial port func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { - Log.Infow("opening serial device ", - "port", device, - "baudrate", baudrate, - "bytesize", bytesize, - "stopbits", stopbits) + Log.Info("opening serial device ", + zap.String("port", device), + zap.Int("baudrate", baudrate), + zap.Int("bytesize", int(bytesize)), + zap.Int("stopbits", int(stopbits))) config := &serial.Config{Name: device, Baud: baudrate, Size: bytesize, @@ -35,10 +35,10 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { var err error port, err = serial.OpenPort(config) if err != nil { - Log.Fatal("error in open serial port ", err) + Log.Fatal("error in open serial port ", zap.Error(err)) return err } - Log.Infof("%s opened", device) + Log.Info("opened ", zap.String("port", device)) portOpened = true return nil } @@ -51,7 +51,7 @@ func ReadPort() ([]byte, int) { } count, err := port.Read(buffer) if err != nil && err != io.EOF { - Log.Error("error in read port ", err) + Log.Error("error in read port ", zap.Error(err)) //TODO: 3 time fail try to } return buffer, count diff --git a/utils/socket.go b/utils/socket.go index 8a15983..7a9e89e 100644 --- a/utils/socket.go +++ b/utils/socket.go @@ -4,6 +4,8 @@ import ( "io" "net" "time" + + "go.uber.org/zap" ) const ServerType = "tcp" @@ -17,20 +19,20 @@ func Listen(address string) { var err error server, err = net.Listen(ServerType, address) if err != nil { - Log.Fatal("error in create server ", err) + Log.Fatal("error in create server ", zap.Error(err)) } defer server.Close() - Log.Infof("listen on %s", address) + Log.Info("listen on ", zap.String("address", address)) for ServerRunning { conn, err := server.Accept() if err != nil { ServerRunning = false - Log.Error("error in create connection ", err) + Log.Error("error in create connection ", zap.Error(err)) } if client == nil { client = conn ClientReady = false - Log.Infof("client %s connected ", client.RemoteAddr()) + Log.Info("client connected on ", zap.Any("address", client.RemoteAddr())) LoadUnprocessed() } else { Log.Info("client already connected, close") @@ -48,7 +50,7 @@ func Listen(address string) { func WriteToClient(data string) error { _, err := client.Write([]byte(data + "\r\n")) if err != nil { - Log.Error("error in write data to client socket ", err) + Log.Error("error in write data to client socket ", zap.Error(err)) closeClient() } return err @@ -58,7 +60,7 @@ func connCheck() bool { _, err := client.Read(make([]byte, 0)) if err != nil && err != io.EOF { // this connection is invalid - Log.Error("conn closed....", err) + Log.Error("conn closed....", zap.Error(err)) client = nil return false } diff --git a/utils/sqlite.go b/utils/sqlite.go index 90d6ddb..8d5be3a 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -6,6 +6,7 @@ import ( "time" _ "github.com/mattn/go-sqlite3" + "go.uber.org/zap" ) const ( @@ -41,12 +42,12 @@ var ( func getDb() *sql.DB { //log.Println("init database ", initTable) if initTable && !initialized { - Log.Info("remove database file ", dbFile) + Log.Info("remove database ", zap.String("file", dbFile)) os.Remove(dbFile) } db, err := sql.Open(DbDriver, dbFile) if err != nil { - Log.Fatal("error in open database ", err) + Log.Fatal("error in open database ", zap.Error(err)) } return db } @@ -59,7 +60,7 @@ func InitDb(file string, init bool) error { defer db.Close() _, dbErr = db.Exec(TableCreate) checkDbErr(dbErr, "error in create table") - Log.Infof("database %s initialized", dbFile) + Log.Info("database initialized") initialized = true return nil } @@ -82,9 +83,9 @@ func InsertTelegram(teleString string) { checkDbErr(err, "error in insert telegram ") isWriting = false if insertSQL == InsertOld { - Log.Infof("telegram [%d] processed ", id) + Log.Info("telegram processed ", zap.Int64("id", id)) } else { - Log.Infof("telegram [%d] saved ", id) + Log.Info("telegram saved ", zap.Int64("id", id)) } } @@ -110,7 +111,7 @@ func LoadUnprocessed() { func getTelegram(db *sql.DB) []telegram { var telegrams []telegram num := countTelegram() - Log.Infof("%n telegram unprocessed ", num) + Log.Info("telegram ", zap.Int64("unprocessed", num)) if num < 1 { return telegrams } @@ -137,7 +138,7 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") id, _ := result.RowsAffected() - Log.Infof("[%d] telegram update : %t", id, id > 0) + Log.Info("telegram update : %t", zap.Int64("id", id), zap.Bool("result", id > 0)) isWriting = false Log.Info("release lock") tx.Commit() @@ -156,7 +157,7 @@ func countTelegram() int64 { func getWriteLock() { count := 0 - Log.Debugf("write lock : %t", isWriting) + Log.Debug("with ", zap.Bool("lock", isWriting)) for isWriting && count < 10 { Log.Info("waiting for write ") time.Sleep(5 * time.Second) @@ -170,6 +171,6 @@ func getWriteLock() { func checkDbErr(err error, msg string) { if err != nil { - Log.Fatal(msg, err) + Log.Fatal(msg, zap.Error(err)) } } diff --git a/utils/telegram.go b/utils/telegram.go index 17d9ffc..01030d0 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -3,6 +3,8 @@ package utils import ( "regexp" "strings" + + "go.uber.org/zap" ) const ( @@ -27,7 +29,7 @@ func check() { telegram := exp.FindString(string(buffer)) if len(telegram) > 0 { - Log.Infof("telegram : %s", telegram) + Log.Info("telegram ", zap.String("text", telegram)) buffer = nil InsertTelegram(telegram) } From 2cfac56ec5ea87a71bcf30a9f94c461e0aa275f8 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:09:08 +0800 Subject: [PATCH 18/54] sleep 0.5 sec every telegram --- utils/sqlite.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index 8d5be3a..5ffb06c 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -100,6 +100,7 @@ func LoadUnprocessed() { } for _, t := range telegrams { if WriteToClient(t.text) == nil { + time.Sleep(500 * time.Millisecond) processed(db, t) } } @@ -137,8 +138,8 @@ func processed(db *sql.DB, t telegram) { checkDbErr(err, "error in create update statement") result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") - id, _ := result.RowsAffected() - Log.Info("telegram update : %t", zap.Int64("id", id), zap.Bool("result", id > 0)) + rows, _ := result.RowsAffected() + Log.Info("telegram update : %t", zap.Int64("id", t.id), zap.Bool("result", rows > 0)) isWriting = false Log.Info("release lock") tx.Commit() From f9c71978fd44b88b4c66b8221607c1b7584302bf Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:13:57 +0800 Subject: [PATCH 19/54] remove telegram text log --- utils/telegram.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/telegram.go b/utils/telegram.go index 01030d0..2a4d70a 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -3,8 +3,6 @@ package utils import ( "regexp" "strings" - - "go.uber.org/zap" ) const ( @@ -29,7 +27,7 @@ func check() { telegram := exp.FindString(string(buffer)) if len(telegram) > 0 { - Log.Info("telegram ", zap.String("text", telegram)) + // Log.Info("telegram ", zap.String("text", telegram)) buffer = nil InsertTelegram(telegram) } From 68069dec341e60be577a28ea7aecb2842ec759b9 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:36:59 +0800 Subject: [PATCH 20/54] add rawlog --- cmd/root.go | 9 +++++++-- utils/telegram.go | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index e37fd07..201d2d3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -58,7 +58,6 @@ Read the telegram from `, Mode = os.Getenv(ModeName) logger *zap.Logger - // l *zap.SugaredLogger ) // Execute adds all child commands to the root command and sets flags appropriately. @@ -119,7 +118,7 @@ func initConfig() { } func initLog() { - logFile := "./log/telegram-%Y-%m-%d-%H.log" + logFile := "./logs/telegram-%Y-%m-%d-%H.log" rotator, err := rotatelogs.New( logFile, rotatelogs.WithMaxAge(60*24*time.Hour), @@ -128,6 +127,12 @@ func initLog() { panic(err) } + rawFile := "./logs/raw-%Y-%m-%d-%H.txt" + utils.RawLog, err = rotatelogs.New( + rawFile, + rotatelogs.WithMaxAge(60*24*time.Hour), + rotatelogs.WithRotationTime(time.Hour)) + priority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { return lvl >= zapcore.DebugLevel }) diff --git a/utils/telegram.go b/utils/telegram.go index 2a4d70a..684c1fe 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -3,6 +3,8 @@ package utils import ( "regexp" "strings" + + rotatelogs "github.com/lestrrat-go/file-rotatelogs" ) const ( @@ -11,6 +13,7 @@ const ( ) var buffer []byte +var RawLog *rotatelogs.RotateLogs func Append(data []byte) { buffer = append(buffer, data...) @@ -28,6 +31,7 @@ func check() { if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) + RawLog.Write([]byte(telegram)) buffer = nil InsertTelegram(telegram) } From fd41bf4698595029460bb51ba5f951e3efe7fc63 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:46:25 +0800 Subject: [PATCH 21/54] remove empty --- utils/telegram.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utils/telegram.go b/utils/telegram.go index 684c1fe..96b5e28 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -31,6 +31,7 @@ func check() { if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) + telegram = removeEmpty(telegram) + "\n" RawLog.Write([]byte(telegram)) buffer = nil InsertTelegram(telegram) @@ -38,3 +39,9 @@ func check() { } } + +func removeEmpty(s string) string { + regex, _ := regexp.Compile("\n\n") + s = regex.ReplaceAllString(s, "\n") + return s +} From c9bd9fe11d32cdb3d363c72272cc6e3a7feed28b Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:49:36 +0800 Subject: [PATCH 22/54] remove empty --- utils/telegram.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/telegram.go b/utils/telegram.go index 96b5e28..d5be42d 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -41,7 +41,5 @@ func check() { } func removeEmpty(s string) string { - regex, _ := regexp.Compile("\n\n") - s = regex.ReplaceAllString(s, "\n") - return s + return regexp.MustCompile(`[\t\r\n]+`).ReplaceAllString(strings.TrimSpace(s), "\n") } From b59d135dfffe517f2efdc134e71cf93ed8be83f3 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:52:56 +0800 Subject: [PATCH 23/54] mathch \n --- utils/telegram.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/telegram.go b/utils/telegram.go index d5be42d..2e32aeb 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -9,7 +9,7 @@ import ( const ( EndTag = "NNNN" - Expression = "(?s)ZCZC.*NNNN" + Expression = "(?s)ZCZC.*NNNN[\r\n]+" ) var buffer []byte From 7375808704f0fda9a6627e01763ea4f33da26304 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:54:42 +0800 Subject: [PATCH 24/54] match \n --- utils/telegram.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/telegram.go b/utils/telegram.go index 2e32aeb..09c0640 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -9,7 +9,7 @@ import ( const ( EndTag = "NNNN" - Expression = "(?s)ZCZC.*NNNN[\r\n]+" + Expression = "(?s)ZCZC.*NNNN[\n]" ) var buffer []byte From ad2cccc3f976b23730089a26d673498204e29d24 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 16:58:36 +0800 Subject: [PATCH 25/54] add new line every telegram --- cmd/start.go | 4 +++- utils/telegram.go | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cmd/start.go b/cmd/start.go index b41684a..1f6a0b3 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -96,7 +96,9 @@ func start() { if lograw { fmt.Print(string(buffer)) } - utils.Append(buffer) + if utils.Append(buffer) { + fmt.Println() + } } } <-done diff --git a/utils/telegram.go b/utils/telegram.go index 09c0640..b12c302 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -9,21 +9,21 @@ import ( const ( EndTag = "NNNN" - Expression = "(?s)ZCZC.*NNNN[\n]" + Expression = "(?s)ZCZC.*NNNN" ) var buffer []byte var RawLog *rotatelogs.RotateLogs -func Append(data []byte) { +func Append(data []byte) bool { buffer = append(buffer, data...) if buffer[len(buffer)-1] == '\r' { buffer = append(buffer, '\n') } - check() + return check() } -func check() { +func check() bool { teleString := string(buffer) if strings.Index(teleString, EndTag) > 0 { exp, _ := regexp.Compile(Expression) @@ -35,9 +35,10 @@ func check() { RawLog.Write([]byte(telegram)) buffer = nil InsertTelegram(telegram) + return true } } - + return false } func removeEmpty(s string) string { From 28ac23e47bc95964c3180ce9dda349af6573240e Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 17:01:14 +0800 Subject: [PATCH 26/54] add new line --- utils/telegram.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/telegram.go b/utils/telegram.go index b12c302..3674111 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -31,7 +31,7 @@ func check() bool { if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) - telegram = removeEmpty(telegram) + "\n" + telegram = removeEmpty(telegram) + "\n\n" RawLog.Write([]byte(telegram)) buffer = nil InsertTelegram(telegram) From 5528b280a22cbe81d49128d60c93917db9de92d1 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 17:05:29 +0800 Subject: [PATCH 27/54] not print empty line --- cmd/start.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/start.go b/cmd/start.go index 1f6a0b3..1886d1d 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -93,7 +93,7 @@ func start() { } buffer, count := utils.ReadPort() if count > 0 { - if lograw { + if lograw && len(buffer) > 0 { fmt.Print(string(buffer)) } if utils.Append(buffer) { From 1ab78d22b4e861fb0994f68ccb5f6d43f446d111 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 17:08:41 +0800 Subject: [PATCH 28/54] stdout priority level info --- cmd/root.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 201d2d3..c1f8df9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -133,15 +133,19 @@ func initLog() { rotatelogs.WithMaxAge(60*24*time.Hour), rotatelogs.WithRotationTime(time.Hour)) - priority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + filePriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { return lvl >= zapcore.DebugLevel }) + stdoutPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { + return lvl >= zapcore.InfoLevel + }) + encoder := zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()) core := zapcore.NewTee( - zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), priority), - zapcore.NewCore(encoder, zapcore.AddSync(rotator), priority), + zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), stdoutPriority), + zapcore.NewCore(encoder, zapcore.AddSync(rotator), filePriority), ) logger = zap.New(core) From 35c1966e87c69483bd04e3149944c1a456ee274b Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 17:16:38 +0800 Subject: [PATCH 29/54] modify log --- utils/sqlite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/sqlite.go b/utils/sqlite.go index 5ffb06c..50e97dd 100644 --- a/utils/sqlite.go +++ b/utils/sqlite.go @@ -139,9 +139,9 @@ func processed(db *sql.DB, t telegram) { result, err := stmt.Exec(t.id) checkDbErr(err, "error in update telegram status") rows, _ := result.RowsAffected() - Log.Info("telegram update : %t", zap.Int64("id", t.id), zap.Bool("result", rows > 0)) + Log.Info("telegram update ", zap.Int64("id", t.id), zap.Bool("result", rows > 0)) isWriting = false - Log.Info("release lock") + Log.Debug("release lock") tx.Commit() } From 98425409a779318896568cdaadf90c9727a96fd2 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Mon, 28 Dec 2020 17:27:24 +0800 Subject: [PATCH 30/54] add panic error for raw --- cmd/root.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index c1f8df9..0a05df1 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -132,6 +132,9 @@ func initLog() { rawFile, rotatelogs.WithMaxAge(60*24*time.Hour), rotatelogs.WithRotationTime(time.Hour)) + if err != nil { + panic(err) + } filePriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { return lvl >= zapcore.DebugLevel From 2011a10464207480483a429562f78fe4b8d01640 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 11:00:01 +0800 Subject: [PATCH 31/54] use new serial lib --- .gitignore | 3 +- cmd/start.go | 4 +-- go.mod | 1 + go.sum | 2 ++ log_serial_1609210559.txt | 0 log_serial_1609210613.txt | 1 + utils/serial.go | 67 +++++++++++++++++++++------------------ utils/telegram.go | 2 +- 8 files changed, 45 insertions(+), 35 deletions(-) create mode 100644 log_serial_1609210559.txt create mode 100644 log_serial_1609210613.txt diff --git a/.gitignore b/.gitignore index 3c379ef..6cda2fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ tty* telegram.db -.idea \ No newline at end of file +.idea +log_* \ No newline at end of file diff --git a/cmd/start.go b/cmd/start.go index 1886d1d..0c4da2e 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -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)) } diff --git a/go.mod b/go.mod index cd5564d..2752045 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index eb16feb..6a8c7df 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/log_serial_1609210559.txt b/log_serial_1609210559.txt new file mode 100644 index 0000000..e69de29 diff --git a/log_serial_1609210613.txt b/log_serial_1609210613.txt new file mode 100644 index 0000000..cfbdddb --- /dev/null +++ b/log_serial_1609210613.txt @@ -0,0 +1 @@ +[ttyS1] 2020/12/29 10:56:53 Serial port ttyS1@9600 open diff --git a/utils/serial.go b/utils/serial.go index 83b671a..2cda036 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -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 diff --git a/utils/telegram.go b/utils/telegram.go index 3674111..fae2ef3 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -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') From bb736bba8596eb477ba4d1e1f57001eb781317c9 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 11:11:13 +0800 Subject: [PATCH 32/54] fix append --- utils/telegram.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/utils/telegram.go b/utils/telegram.go index fae2ef3..5f51310 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -12,28 +12,26 @@ const ( Expression = "(?s)ZCZC.*NNNN" ) -var buffer []byte +var buffer string var RawLog *rotatelogs.RotateLogs func Append(data string) bool { - buffer = append(buffer, data...) - if buffer[len(buffer)-1] == '\r' { - buffer = append(buffer, '\n') - } + buffer = buffer + data return check() } func check() bool { - teleString := string(buffer) + teleString := buffer if strings.Index(teleString, EndTag) > 0 { exp, _ := regexp.Compile(Expression) - telegram := exp.FindString(string(buffer)) + telegram := exp.FindString(teleString) if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) telegram = removeEmpty(telegram) + "\n\n" + telegram += "\n" RawLog.Write([]byte(telegram)) - buffer = nil + buffer = "" InsertTelegram(telegram) return true } From fe4faf5a59d051fbcd9fb62cf104e56ae6df1f15 Mon Sep 17 00:00:00 2001 From: fengzhiqiang Date: Tue, 29 Dec 2020 11:28:10 +0800 Subject: [PATCH 33/54] disable verbose --- go.mod | 1 + go.sum | 2 ++ utils/serial.go | 1 + utils/telegram.go | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2752045..759677a 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/magiconair/properties v1.8.4 // indirect github.com/mattn/go-sqlite3 v1.14.5 github.com/mitchellh/mapstructure v1.4.0 // indirect + github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 // indirect github.com/pelletier/go-toml v1.8.1 // indirect github.com/spf13/afero v1.5.1 // indirect github.com/spf13/cast v1.3.1 // indirect diff --git a/go.sum b/go.sum index 6a8c7df..5c81a6b 100644 --- a/go.sum +++ b/go.sum @@ -145,6 +145,8 @@ github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 h1:oc3CL18CoGhyOQJ7HDa9gJAde33bwI8Vi28zLdIzJVc= +github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836/go.mod h1:6Q8/OMaaKAgTX7/jt2bOXVDrm1eJhoNd+iwzghR7jvs= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= diff --git a/utils/serial.go b/utils/serial.go index 2cda036..5f646e8 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -29,6 +29,7 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { zap.Int("stopbits", int(stopbits))) sp = serial.New() sp.EOL('\r') + sp.Verbose = false err := sp.Open(device, baudrate, time.Second*3) Log.Info("open ", zap.String("device", device), zap.Error(err)) if err == nil { diff --git a/utils/telegram.go b/utils/telegram.go index 5f51310..44b4493 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -16,7 +16,7 @@ var buffer string var RawLog *rotatelogs.RotateLogs func Append(data string) bool { - buffer = buffer + data + buffer = buffer + data + "\n" return check() } From 0b0e3637bf95b9dcf8dfefe9a30c1e67330e8698 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 11:30:19 +0800 Subject: [PATCH 34/54] add new line --- utils/telegram.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/telegram.go b/utils/telegram.go index 44b4493..566f88b 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -16,7 +16,7 @@ var buffer string var RawLog *rotatelogs.RotateLogs func Append(data string) bool { - buffer = buffer + data + "\n" + buffer = buffer + data return check() } @@ -30,7 +30,7 @@ func check() bool { // Log.Info("telegram ", zap.String("text", telegram)) telegram = removeEmpty(telegram) + "\n\n" telegram += "\n" - RawLog.Write([]byte(telegram)) + RawLog.Write([]byte(telegram + "\n")) buffer = "" InsertTelegram(telegram) return true From e25420a20e324da57c80588efbcce510f3039b35 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 11:35:09 +0800 Subject: [PATCH 35/54] add new line --- cmd/start.go | 2 +- utils/telegram.go | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/start.go b/cmd/start.go index 0c4da2e..6e98eda 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -94,7 +94,7 @@ func start() { buffer, err := utils.ReadPort() if err == nil { if lograw && len(buffer) > 0 { - fmt.Print(string(buffer)) + fmt.Println(buffer) } if utils.Append(buffer) { fmt.Println() diff --git a/utils/telegram.go b/utils/telegram.go index 566f88b..3ca3b9e 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -13,19 +13,18 @@ const ( ) var buffer string +var exp, _ = regexp.Compile(Expression) var RawLog *rotatelogs.RotateLogs func Append(data string) bool { - buffer = buffer + data + buffer += data return check() } func check() bool { teleString := buffer if strings.Index(teleString, EndTag) > 0 { - exp, _ := regexp.Compile(Expression) telegram := exp.FindString(teleString) - if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) telegram = removeEmpty(telegram) + "\n\n" From 8ed16fd502625644169955ef2446126bd8655156 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 11:43:43 +0800 Subject: [PATCH 36/54] add new line --- utils/telegram.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/telegram.go b/utils/telegram.go index 3ca3b9e..032a126 100644 --- a/utils/telegram.go +++ b/utils/telegram.go @@ -17,7 +17,7 @@ var exp, _ = regexp.Compile(Expression) var RawLog *rotatelogs.RotateLogs func Append(data string) bool { - buffer += data + buffer += (data + "\n") return check() } From dd9514ea975a6039cd92ff70e2cb56984c5d4641 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 12:27:01 +0800 Subject: [PATCH 37/54] socket client nil --- utils/socket.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/utils/socket.go b/utils/socket.go index 7a9e89e..fbbfcf5 100644 --- a/utils/socket.go +++ b/utils/socket.go @@ -48,12 +48,15 @@ func Listen(address string) { } func WriteToClient(data string) error { - _, err := client.Write([]byte(data + "\r\n")) - if err != nil { - Log.Error("error in write data to client socket ", zap.Error(err)) - closeClient() + if client != nil { + _, err := client.Write([]byte(data + "\r\n")) + if err != nil { + Log.Error("error in write data to client socket ", zap.Error(err)) + closeClient() + } + return err } - return err + return nil } func connCheck() bool { From 80b7566d264e7895543e7936d6f0274187405b82 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 12:36:13 +0800 Subject: [PATCH 38/54] always new client, close old one --- utils/socket.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/socket.go b/utils/socket.go index fbbfcf5..d1753c4 100644 --- a/utils/socket.go +++ b/utils/socket.go @@ -35,10 +35,9 @@ func Listen(address string) { Log.Info("client connected on ", zap.Any("address", client.RemoteAddr())) LoadUnprocessed() } else { - Log.Info("client already connected, close") - client.Close() - client = nil - conn.Close() + Log.Info("remove old client") + closeClient() + client = conn } if IsClientConnected() { connCheck() From 0731d074196d3bea9cbc8d15e405a8475137889a Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 13:00:59 +0800 Subject: [PATCH 39/54] version 0.0.3 --- .drone.yml | 6 +++--- go.mod | 5 +++-- go.sum | 12 ++++++++---- log_serial_1609210559.txt | 0 log_serial_1609210613.txt | 1 - 5 files changed, 14 insertions(+), 10 deletions(-) delete mode 100644 log_serial_1609210559.txt delete mode 100644 log_serial_1609210613.txt diff --git a/.drone.yml b/.drone.yml index 04c82b1..f6ce5d0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.2 + title: 0.0.3 files: - - tele-recv-linux-0.0.2.tar.gz + - tele-recv-linux-0.0.3.tar.gz checksum: - sha256 when: @@ -51,4 +51,4 @@ volumes: path: /etc/ssl/certs - name: docker host: - path: /var/run/docker.sock \ No newline at end of file + path: /var/run/docker.sock diff --git a/go.mod b/go.mod index 759677a..212dafe 100644 --- a/go.mod +++ b/go.mod @@ -4,20 +4,21 @@ go 1.15 require ( github.com/argandas/serial v0.0.0-20160316175758-889a5ad85462 + github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect github.com/fsnotify/fsnotify v1.4.9 // indirect + github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible github.com/lestrrat-go/strftime v1.0.3 // indirect github.com/magiconair/properties v1.8.4 // indirect github.com/mattn/go-sqlite3 v1.14.5 github.com/mitchellh/mapstructure v1.4.0 // indirect - github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 // indirect github.com/pelletier/go-toml v1.8.1 // indirect github.com/spf13/afero v1.5.1 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/spf13/cobra v1.1.1 github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.7.1 - github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 + github.com/tebeka/strftime v0.1.5 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.16.0 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect diff --git a/go.sum b/go.sum index 5c81a6b..843b00a 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 h1:Ghm4eQYC0nEPnSJdVkTrXpu9KtoVCSo1hg7mtI7G9KU= +github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -99,6 +101,9 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= +github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -115,6 +120,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= @@ -145,8 +151,6 @@ github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 h1:oc3CL18CoGhyOQJ7HDa9gJAde33bwI8Vi28zLdIzJVc= -github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836/go.mod h1:6Q8/OMaaKAgTX7/jt2bOXVDrm1eJhoNd+iwzghR7jvs= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= @@ -212,8 +216,8 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tebeka/strftime v0.1.5 h1:1NQKN1NiQgkqd/2moD6ySP/5CoZQsKa1d3ZhJ44Jpmg= +github.com/tebeka/strftime v0.1.5/go.mod h1:29/OidkoWHdEKZqzyDLUyC+LmgDgdHo4WAFCDT7D/Ig= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= diff --git a/log_serial_1609210559.txt b/log_serial_1609210559.txt deleted file mode 100644 index e69de29..0000000 diff --git a/log_serial_1609210613.txt b/log_serial_1609210613.txt deleted file mode 100644 index cfbdddb..0000000 --- a/log_serial_1609210613.txt +++ /dev/null @@ -1 +0,0 @@ -[ttyS1] 2020/12/29 10:56:53 Serial port ttyS1@9600 open From 9043426601a39137d1e4161b848ca506517bd65b Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 13:57:15 +0800 Subject: [PATCH 40/54] version 0.0.4 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index f6ce5d0..bae2916 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - GOOS=linux GOARCH=amd64 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux-0.0.2.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux-0.0.4.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.3 + title: 0.0.4 files: - - tele-recv-linux-0.0.3.tar.gz + - tele-recv-linux-0.0.4.tar.gz checksum: - sha256 when: From 1a4db71b936587b185acb8dfc95ff223a790e27d Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 14:45:13 +0800 Subject: [PATCH 41/54] update windows build script --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index bae2916..93c7459 100644 --- a/.drone.yml +++ b/.drone.yml @@ -23,7 +23,7 @@ steps: GOPROXY: https://goproxy.io commands: - GOOS=linux GOARCH=amd64 go build -o tele-recv-linux - - GOOS=windows GOARCH=amd64 go build -o tele-recv-win64.exe + - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - tar cvzf tele-recv-linux-0.0.4.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release From eb83ad4ff1aa3f5c2c4a03d027ea27504ddaaf93 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 14:46:02 +0800 Subject: [PATCH 42/54] version 0.0.5 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 93c7459..2b20518 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - GOOS=linux GOARCH=amd64 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux-0.0.4.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux-0.0.5.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.4 + title: 0.0.5 files: - - tele-recv-linux-0.0.4.tar.gz + - tele-recv-linux-0.0.5.tar.gz checksum: - sha256 when: From d48aa350c8680213ee7298c17abb317ed3b93c37 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 15:17:47 +0800 Subject: [PATCH 43/54] use golang gcc cross build image --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 2b20518..8ef1216 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,7 +14,7 @@ clone: steps: - name: build - image: reg.int.it2000.com.cn/library/golang:1.15.6-buster + image: reg.int.it2000.com.cn/library/golang-cross:1.15.6-buster volumes: - name: deps path: /go From 33ef54f261d15b363f2e1df69edf68977d94b464 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 15:21:59 +0800 Subject: [PATCH 44/54] linux build with cgo=1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 8ef1216..7cf80b4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,7 +22,7 @@ steps: GO111MODULE: on GOPROXY: https://goproxy.io commands: - - GOOS=linux GOARCH=amd64 go build -o tele-recv-linux + - OOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - tar cvzf tele-recv-linux-0.0.5.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml From 73b5b287fe9bdadd8748beb700dd7e7e70e823cb Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 15:43:33 +0800 Subject: [PATCH 45/54] cgo=1 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7cf80b4..7cbf5cc 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - OOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux-0.0.5.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-linux-0.0.6.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.5 + title: 0.0.6 files: - - tele-recv-linux-0.0.5.tar.gz + - tele-recv-linux-0.0.6.tar.gz checksum: - sha256 when: From 0aee912649c1f4df4f5aec9158303214dc6da9c6 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:06:52 +0800 Subject: [PATCH 46/54] release file name --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7cbf5cc..3c752d3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - OOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - - tar cvzf tele-recv-linux-0.0.6.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-0.0.6.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -36,7 +36,7 @@ steps: base_url: https://gitea.int.it2000.com.cn title: 0.0.6 files: - - tele-recv-linux-0.0.6.tar.gz + - tele-recv-0.0.6.tar.gz checksum: - sha256 when: From 93ae291efc149b860ae12a44069c65f29749d0e5 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:31:23 +0800 Subject: [PATCH 47/54] remove bytesize stopbits --- cmd/root.go | 4 ---- telegram.yaml | 4 ++-- utils/serial.go | 21 +-------------------- 3 files changed, 3 insertions(+), 26 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 0a05df1..67b4939 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -35,8 +35,6 @@ var ( cfgFile string device string baudrate int - bytesize byte - stopbits byte lograw bool dbFile string @@ -107,8 +105,6 @@ func initConfig() { logger.Info("Using config file ", zap.String("path", viper.ConfigFileUsed())) device = viper.GetString("serial.device") baudrate = viper.GetInt("serial.baudrate") - bytesize = byte(viper.GetInt("serial.bytesize")) - stopbits = byte(viper.GetInt("serial.stopbits")) lograw = viper.GetBool("serial.lograw") dbFile = viper.GetString("sqlite.file") dbInit = viper.GetBool("sqlite.init") diff --git a/telegram.yaml b/telegram.yaml index 60447a7..9284863 100644 --- a/telegram.yaml +++ b/telegram.yaml @@ -1,9 +1,9 @@ serial: device: ttyS1 baudrate: 9600 - bytesize: 8 + #bytesize: 8 # 1, 2, 15 - stopbits: 1 + #stopbits: 1 lograw: true diff --git a/utils/serial.go b/utils/serial.go index 5f646e8..7174539 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -10,8 +10,6 @@ import ( var ( device string baudrate int - bytesize byte - stopbits byte // port *serial.Port sp *serial.SerialPort portOpened = false @@ -24,9 +22,7 @@ const readDuration = 500 * time.Millisecond func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { Log.Info("opening serial device ", zap.String("port", device), - zap.Int("baudrate", baudrate), - zap.Int("bytesize", int(bytesize)), - zap.Int("stopbits", int(stopbits))) + zap.Int("baudrate", baudrate)) sp = serial.New() sp.EOL('\r') sp.Verbose = false @@ -36,21 +32,6 @@ func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { portOpened = true } 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 From 7aebac5e41c470664249cf700c74569acdaf8888 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:34:20 +0800 Subject: [PATCH 48/54] version 0.0.7 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 3c752d3..c64fbb7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - OOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - - tar cvzf tele-recv-0.0.6.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-0.0.7.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.6 + title: 0.0.7 files: - - tele-recv-0.0.6.tar.gz + - tele-recv-0.0.7.tar.gz checksum: - sha256 when: From a567e104817a8611257d622e8a2e61401b863670 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:38:53 +0800 Subject: [PATCH 49/54] fix stopbits bytesize --- cmd/start.go | 2 +- cmd/test.go | 2 +- utils/serial.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/start.go b/cmd/start.go index 6e98eda..30f41ce 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -85,7 +85,7 @@ func start() { for utils.ServerRunning { if !utils.IsPortOpen() { logger.Info("try to open port") - err := utils.OpenPort(device, baudrate, bytesize, stopbits) + err := utils.OpenPort(device, baudrate) if err != nil { logger.Fatal("error in open serial port ", zap.Error(err)) } diff --git a/cmd/test.go b/cmd/test.go index aac5439..521f609 100644 --- a/cmd/test.go +++ b/cmd/test.go @@ -34,7 +34,7 @@ Test load sqlite database and init table`, func test() { logger.Info("Testing environment") - _ = utils.OpenPort(device, baudrate, bytesize, stopbits) + _ = utils.OpenPort(device, baudrate) err := utils.InitDb(dbFile, dbInit) if err != nil { diff --git a/utils/serial.go b/utils/serial.go index 7174539..1771829 100644 --- a/utils/serial.go +++ b/utils/serial.go @@ -19,7 +19,7 @@ var ( const readDuration = 500 * time.Millisecond // OpenPort open serial port -func OpenPort(device string, baudrate int, bytesize byte, stopbits byte) error { +func OpenPort(device string, baudrate int) error { Log.Info("opening serial device ", zap.String("port", device), zap.Int("baudrate", baudrate)) From a958f94dba21500341607de0345f7b2b3a0a0b43 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:41:08 +0800 Subject: [PATCH 50/54] version 0.0.9 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index c64fbb7..7722068 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: commands: - OOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o tele-recv-linux - GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -o tele-recv-win64.exe - - tar cvzf tele-recv-0.0.7.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml + - tar cvzf tele-recv-0.0.9.tar.gz tele-recv-linux tele-recv-win64.exe telegram.yaml - name: release image: plugins/gitea-release @@ -34,9 +34,9 @@ steps: settings: api_key: fe1e1a8dd77de7452a3f473984c7ac6fe6c5abaf base_url: https://gitea.int.it2000.com.cn - title: 0.0.7 + title: 0.0.9 files: - - tele-recv-0.0.7.tar.gz + - tele-recv-0.0.8.tar.gz checksum: - sha256 when: From cd05cfcc0e7f4e096360a612ec283fce67ffa9e2 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 16:54:05 +0800 Subject: [PATCH 51/54] readme download --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9dfb9f3..d0069eb 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -### 电报接收 \ No newline at end of file +# 电报接收 +[![Build Status](http://d2.int.it2000.com.cn/api/badges/airport/tele-recv/status.svg)](http://d2.int.it2000.com.cn/airport/tele-recv) + +机场串口电报数据缓存程序。从串口读取电报,保存,等待处理程序处理 + +## 下载 + +下载发布版本 [release](https://gitea.int.it2000.com.cn/airport/tele-recv/releases) + From 0cf34d5d0d403cb383cf207cd095b42e508c590f Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 17:13:07 +0800 Subject: [PATCH 52/54] config --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index d0069eb..9c88350 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,26 @@ 下载发布版本 [release](https://gitea.int.it2000.com.cn/airport/tele-recv/releases) +## 安装 + +解压下载文件 tele-recv-XXX.tag.gz + +如果是linux + +```Shell +tar xzvf tele-recv-XXX.tar.gz +``` + +文件包中包含两个可执行文件和一个.yaml的配置文件 + +## 配置 + +| 选项 | 含义 | 取值 | 例子 | +|------- |---------------------|-----------------|------------------------| +|device | 串口设备名称 | ttyS1 | win: COM1 linux: ttyS1 | +|baudrate| 波特率 | 9600 | 19200,38400 .... | +|lograw | 是否向控制台输出通讯内容| ture | true/false | +|file | sqlite 文件名 | telegram.db | tele.db | +|init | 是否新建电报数据库 | true | true/false | +|address | 本地处理监听端口 | 127.0.0.1:6000 | | + From 2ee7a191abb8797d1825765e217232b556e73c6c Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 17:18:28 +0800 Subject: [PATCH 53/54] test env --- README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c88350..52bf6e5 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,10 @@ tar xzvf tele-recv-XXX.tar.gz 文件包中包含两个可执行文件和一个.yaml的配置文件 -## 配置 +tele-recv-linux: linux 可执行文件 +tele-recv-win64.exe: windows 64位可执行文件 + +### 配置 | 选项 | 含义 | 取值 | 例子 | |------- |---------------------|-----------------|------------------------| @@ -28,5 +31,18 @@ tar xzvf tele-recv-XXX.tar.gz |lograw | 是否向控制台输出通讯内容| ture | true/false | |file | sqlite 文件名 | telegram.db | tele.db | |init | 是否新建电报数据库 | true | true/false | -|address | 本地处理监听端口 | 127.0.0.1:6000 | | +|address | 本地处理监听端口 | 127.0.0.1:6000 | | +### 测试环境 + +linux: +```Shell +./tele-recv-linux test +``` + +windows: +```Shell +tele-recv-win64.exe test +``` + +测试运行的环境是否能正确开始串口设备,以及初始化数据库 \ No newline at end of file From 70577878fac2b821fc010945228d2deffcfd32c1 Mon Sep 17 00:00:00 2001 From: zhiqiang feng Date: Tue, 29 Dec 2020 17:23:07 +0800 Subject: [PATCH 54/54] start --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 52bf6e5..5ad9070 100644 --- a/README.md +++ b/README.md @@ -45,4 +45,20 @@ windows: tele-recv-win64.exe test ``` -测试运行的环境是否能正确开始串口设备,以及初始化数据库 \ No newline at end of file +测试运行的环境是否能正确开始串口设备,以及初始化数据库 + +### 开始接收电报 + +linux: +```Shell +./tele-recv-linux start +``` + +windows: +```Shell +tele-recv-win64.exe start +``` + +开始从串口设备读取数据,并开启TCP服务等待处理程序连接。 +如果没有处理程序,电报则保存在本地数据库中。 +等到处理程序连上端口,则把未处理电报以此发送给处理程序。 \ No newline at end of file