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