From 24f1296b93e207c07a29b5caf284dd73df974299 Mon Sep 17 00:00:00 2001 From: wangshilong Date: Thu, 12 Dec 2024 20:55:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EKNPC=E6=B8=A9=E5=BA=A6?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/KnpcTemperatureDecodeHandler.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/com/isu/gaswellwatch/modbus/data/decode/impl/KnpcTemperatureDecodeHandler.java diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/decode/impl/KnpcTemperatureDecodeHandler.java b/src/main/java/com/isu/gaswellwatch/modbus/data/decode/impl/KnpcTemperatureDecodeHandler.java new file mode 100644 index 0000000..9d6c8f5 --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/modbus/data/decode/impl/KnpcTemperatureDecodeHandler.java @@ -0,0 +1,38 @@ +package com.isu.gaswellwatch.modbus.data.decode.impl; + +import com.isu.gaswellwatch.modbus.data.decode.DecodeHandler; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.Objects; + +/** + * KNPC 温度解析 + * + * @author 王仕龙 + * 2024/12/12 20:15 + */ +@Component(KnpcTemperatureDecodeHandler.NAME + DecodeHandler.DECODE_NAME) +public class KnpcTemperatureDecodeHandler extends SignedNumberDecodeHandler { + public static final String NAME = "knpcTemperature"; + + @Override + public String decode(Map commandPointMap, String value) { + if (StringUtils.isBlank(value) || !NumberUtils.isCreatable(value)) { + return value; + } + int decimalNumber = Integer.parseInt(value, 16); + if (decimalNumber == 0) { + return String.valueOf(decimalNumber); + } + String binaryNumber = super.decode(commandPointMap, value); + Long resultValue = NumberUtils.createLong(binaryNumber); + if (Objects.nonNull(resultValue) && resultValue < 0) { + binaryNumber = Long.toString(-(resultValue + 32768)); + } + return binaryNumber; + } + +}