Commit f9fcdb2c65a57b4eeafb188731afc0691f5b731b

Authored by xp.Huang
1 parent e6d036fc

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


(cherry picked from commit 38916be4)
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: