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