From c84a97df024e2a1fbbb6d50a7bcb4b2e2a0838b8 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 07 十一月 2023 17:07:36 +0800
Subject: [PATCH] plc结果支持int32解析

---
 constvar/const.go |    3 ++-
 service/plc.go    |   11 ++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index 0e126b8..e6f9b85 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -21,7 +21,8 @@
 
 const (
 	PlcStartAddressValueTypeString PlcStartAddressValueType = "string"
-	PlcStartAddressValueTypeInt    PlcStartAddressValueType = "int"
+	PlcStartAddressValueTypeInt16  PlcStartAddressValueType = "int16"
+	PlcStartAddressValueTypeInt32  PlcStartAddressValueType = "int32"
 )
 
 const (
diff --git a/service/plc.go b/service/plc.go
index 85150c3..1a48fa9 100644
--- a/service/plc.go
+++ b/service/plc.go
@@ -100,7 +100,16 @@
 		switch valueType {
 		case constvar.PlcStartAddressValueTypeString:
 			return string(value), nil
-		case constvar.PlcStartAddressValueTypeInt:
+		case constvar.PlcStartAddressValueTypeInt32:
+			if len(value) == 2 {
+				val = binary.BigEndian.Uint16(value)
+			} else if len(value) == 4 {
+				val = binary.BigEndian.Uint32(value)
+			} else {
+				logx.Errorf("plc read get an unknown int value: %v, address:%v", value, address)
+				return nil, errors.New(fmt.Sprintf("unknown int value锛�%v", value))
+			}
+		default:
 			if len(value) == 2 {
 				val = binary.BigEndian.Uint16(value)
 			} else if len(value) == 4 {

--
Gitblit v1.8.0