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