From e6c81b3916494ef51edc21774a27402d0f16c49c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 24 八月 2023 17:21:04 +0800
Subject: [PATCH] plc配置支持serial和modbusTCP两种方式

---
 api/v1/plc.go |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/api/v1/plc.go b/api/v1/plc.go
index bec602d..3f8238d 100644
--- a/api/v1/plc.go
+++ b/api/v1/plc.go
@@ -9,7 +9,8 @@
 	"apsClient/pkg/logx"
 	"apsClient/pkg/plc"
 	"apsClient/service"
-	"encoding/json"
+	"encoding/binary"
+	"fmt"
 	"github.com/gin-gonic/gin"
 )
 
@@ -44,37 +45,34 @@
 			valueType = pc.Type
 			dataLength = pc.Length
 		}
-		ipAddr = plcConfig.Address
+		ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port)
 	}
 
+	resp := new(response.ProductProgress)
 	if startAddress == 0 || valueType == "" {
-		ctx.FailWithMsg(ecode.UnknownErr, "璇峰厛閰嶇疆PLC")
+		ctx.OkWithDetailed(resp)
+		logx.Warnf("璇峰厛閰嶇疆PLC")
 		return
 	}
-
 	conn, err := plc.NewModbusConnection(ipAddr)
-	defer conn.Close()
 	if err != nil {
-		ctx.FailWithMsg(ecode.UnknownErr, "杩炴帴plc澶辫触")
+		ctx.OkWithDetailed(resp)
 		logx.Errorf("GetProductProgress 杩炴帴plc澶辫触: %v", err.Error())
 		return
 	}
+	defer conn.Close()
 
-	raw, err := plc.ReadHoldingRegister(conn, startAddress, dataLength)
+	rawData, err := plc.ReadHoldingRegister(conn, startAddress, dataLength)
 	if err != nil {
-		ctx.FailWithMsg(ecode.UnknownErr, "鑾峰彇plc鏁版嵁澶辫触")
+		ctx.OkWithDetailed(resp)
 		logx.Errorf("GetProductProgress 鑾峰彇plc鏁版嵁澶辫触: %v", err.Error())
 		return
 	}
-	var finishNumber int
-	err = json.Unmarshal(raw, &finishNumber)
+	resp.FinishNumber = int(binary.BigEndian.Uint16(rawData))
 	if err != nil {
-		ctx.FailWithMsg(ecode.UnknownErr, "鑾峰彇鐢熶骇杩涘害鏁版嵁瑙f瀽澶辫触")
-		logx.Errorf("GetProductProgress 鑾峰彇鐢熶骇杩涘害鏁版嵁瑙f瀽澶辫触: %v, data: %v, valueType:%v", err.Error(), raw, valueType)
+		ctx.OkWithDetailed(resp)
+		logx.Errorf("GetProductProgress 鑾峰彇鐢熶骇杩涘害鏁版嵁瑙f瀽澶辫触: %v, data: %v, valueType:%v", err.Error(), rawData, valueType)
 		return
-	}
-	resp := response.ProductProgress{
-		FinishNumber: finishNumber,
 	}
 	ctx.OkWithDetailed(resp)
 }

--
Gitblit v1.8.0