Commit 4265dba3b2f091aef3445e7000b3fa208cfbab5a

Authored by xp.Huang
2 parents 893b5751 eda6cfa6

Merge branch '20230722' into 'master_dev'

20230722

See merge request yunteng/thingskit!214
  1 +package org.thingsboard.server.common.data.yunteng.enums;
  2 +
  3 +public enum TkModebusFunctionCode {
  4 + READ_COIL("01",1),
  5 + REAL_SPLIT_INPUT("02",1),
  6 + READ_PERSIST_REGISTER("03",1),
  7 + READ_INPUT_REGISTER("04",1),
  8 + WRITE_ONE_COIL("05",1),
  9 + WRITE_ONE_REGISTER("06",1),
  10 + WRITE_MANY_COIL("0F",1),
  11 + WRITE_MANY_REGISTER("10",2),
  12 + READ_FILE("14",1),
  13 + WRITE_FILE("15",1),
  14 + PREVENT_WRITE_REGISTER("16",1),
  15 + READ_WRITE_MANY_REGISTER("17",1),
  16 + READ_DEVICE_IDENTIFICATION("2B",1);
  17 +
  18 +
  19 + /**16进制功能码*/
  20 + private final String code;
  21 + /**寄存器值长度*/
  22 + private final Integer valueSize;
  23 +
  24 + TkModebusFunctionCode(String code, Integer valueSize) {
  25 + this.code = code;
  26 + this.valueSize = valueSize;
  27 + }
  28 +
  29 + public String getCode() {
  30 + return code;
  31 + }
  32 +
  33 + public Integer getValueSize() {
  34 + return valueSize;
  35 + }
  36 +}
@@ -17,6 +17,7 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio @@ -17,6 +17,7 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio
17 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 17 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
18 import org.thingsboard.server.common.data.yunteng.dto.*; 18 import org.thingsboard.server.common.data.yunteng.dto.*;
19 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; 19 import org.thingsboard.server.common.data.yunteng.enums.StatusEnum;
  20 +import org.thingsboard.server.common.data.yunteng.enums.TkModebusFunctionCode;
20 import org.thingsboard.server.common.data.yunteng.enums.TkScriptFunctionType; 21 import org.thingsboard.server.common.data.yunteng.enums.TkScriptFunctionType;
21 import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum; 22 import org.thingsboard.server.common.data.yunteng.enums.TransportTypeEnum;
22 import org.thingsboard.server.common.data.yunteng.utils.ByteUtils; 23 import org.thingsboard.server.common.data.yunteng.utils.ByteUtils;
@@ -315,7 +316,7 @@ public class TkDeviceScriptServiceImpl @@ -315,7 +316,7 @@ public class TkDeviceScriptServiceImpl
315 if(values ==null || values.isEmpty()){ 316 if(values ==null || values.isEmpty()){
316 //读寄存器数据 317 //读寄存器数据
317 result.append(modelHex(registerNum)); 318 result.append(modelHex(registerNum));
318 - }else if(values.size() == 1){ 319 + }else if(values.size() == 1 &&(TkModebusFunctionCode.WRITE_ONE_COIL.getCode().equals(functionCode) ||TkModebusFunctionCode.WRITE_ONE_REGISTER.getCode().equals(functionCode) )){
319 //单个写入 320 //单个写入
320 result.append(modelHex(values.get(0))); 321 result.append(modelHex(values.get(0)));
321 }else{ 322 }else{
@@ -341,7 +342,7 @@ public class TkDeviceScriptServiceImpl @@ -341,7 +342,7 @@ public class TkDeviceScriptServiceImpl
341 } 342 }
342 private String multData(String functionCode,List<Integer>datas){ 343 private String multData(String functionCode,List<Integer>datas){
343 StringBuilder dataStr = new StringBuilder(); 344 StringBuilder dataStr = new StringBuilder();
344 - if("16".equals(functionCode)){ 345 + if(TkModebusFunctionCode.WRITE_MANY_REGISTER.equals(functionCode)){
345 dataStr.append(dataLength(datas.size()*2)); 346 dataStr.append(dataLength(datas.size()*2));
346 for(Integer item: datas){ 347 for(Integer item: datas){
347 dataStr.append(modelHex(item)); 348 dataStr.append(modelHex(item));