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