Commit 38916be49ae0bb050a7c544ef100fe4f663b7e55

Authored by xp.Huang
1 parent a4ebf730

perf: modbus_rtu 16位有符号无符号计算值时,对于整数不做特殊处理

1 package org.thingsboard.server.common.data.yunteng.utils; 1 package org.thingsboard.server.common.data.yunteng.utils;
2 2
  3 +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
3 import org.thingsboard.server.common.data.yunteng.enums.AttributeSourceDataTypeEnum; 4 import org.thingsboard.server.common.data.yunteng.enums.AttributeSourceDataTypeEnum;
4 import org.thingsboard.server.common.data.yunteng.enums.HexByteOrderEnum; 5 import org.thingsboard.server.common.data.yunteng.enums.HexByteOrderEnum;
5 import java.nio.ByteOrder; 6 import java.nio.ByteOrder;
@@ -252,7 +253,11 @@ public class HexConvertUtils { @@ -252,7 +253,11 @@ public class HexConvertUtils {
252 case INT16_BA: 253 case INT16_BA:
253 case UINT16_BA: 254 case UINT16_BA:
254 hex = convertHexOrder(hex, dataTypeEnum); 255 hex = convertHexOrder(hex, dataTypeEnum);
255 - value = intFormat.format(int16OrUint16ToShort(hex) * scaleFactor); 256 + if((int16OrUint16ToShort(hex) * scaleFactor) % 1 == FastIotConstants.MagicNumber.ZERO){
  257 + value = int16OrUint16ToShort(hex);
  258 + }else{
  259 + value = intFormat.format(int16OrUint16ToShort(hex) * scaleFactor);
  260 + }
256 break; 261 break;
257 case INT32_AB_CD: 262 case INT32_AB_CD:
258 case UINT32_AB_CD: 263 case UINT32_AB_CD: