From 0c7545a03d2525700288760edd26901962bb4f77 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 01 八月 2023 14:37:26 +0800 Subject: [PATCH] 修复重连机制 --- collector/plc4x.go | 6 +++--- msg/msg.go | 11 ++++++----- collector/collector.go | 6 ++++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/collector/collector.go b/collector/collector.go index e70421d..15c6325 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -89,16 +89,22 @@ // 鏍规嵁璁剧疆鐨勫湴鍧�鏌ヨ鏁版嵁锛屼笂鎶� plcResponse.Data = make(map[int][]byte, 0) + plcResponse.Message = "" for _, addr := range dev.Address { result, err := ReadHoldingRegister(conn, addr) if err != nil { logger.Warn("plc device Read Holding Register error, %s", err.Error()) + plcResponse.Message = err.Error() } else { plcResponse.Data[addr] = result } } msg.SendDeviceLiveData(&plcResponse) + if plcResponse.Message != "" { + return + } + // 闂撮殧鏃堕棿 time.Sleep(time.Duration(dev.Interval) * time.Second) } diff --git a/collector/plc4x.go b/collector/plc4x.go index 000b75c..5e7966d 100644 --- a/collector/plc4x.go +++ b/collector/plc4x.go @@ -41,21 +41,21 @@ // 璇绘ā寮� readRequest, err := connection.ReadRequestBuilder().AddTagAddress("tag", tagAddress).Build() if err != nil { - fmt.Printf("Error preparing read-request:%s\n", err.Error()) + fmt.Printf("preparing read-request:%s\n", err.Error()) return nil, err } // 鎵ц readResult := <-readRequest.Execute() if err := readResult.GetErr(); err != nil { - fmt.Printf("Error execting read-request:%s\n", err.Error()) + fmt.Printf("execting read-request:%s\n", err.Error()) return nil, err } // 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭� if readResult.GetResponse().GetResponseCode("tag") != apiModel.PlcResponseCode_OK { fmt.Printf("error an non-ok return code: %s", readResult.GetResponse().GetResponseCode("tag").GetName()) - return nil, err + return nil, nil } value := readResult.GetResponse().GetValue("tag") diff --git a/msg/msg.go b/msg/msg.go index 2b53b75..f1488b9 100644 --- a/msg/msg.go +++ b/msg/msg.go @@ -9,9 +9,10 @@ } type PLCResponse struct { - Id string - Name string - Ip string - Online bool - Data map[int][]byte + Id string + Name string + Ip string + Online bool + Message string + Data map[int][]byte } -- Gitblit v1.8.0