whyclj
2020-07-21 1fe34bd9cd779c67beece43b4016e2a0192157c9
src/com/modbus/util/BaseData.java
@@ -4,6 +4,7 @@
import java.nio.ByteOrder;
import com.base.ComBase;
import com.base.ComFn;
public class BaseData {
@@ -54,6 +55,28 @@
   }
   
   /**
    *    构造单点写入数据
    * @param value
    * @return
    */
   public byte[] createSingleCollWiriteData(byte[] data) {
      ByteBuffer bf = ByteBuffer.allocate(ReadByteCount+regcount*2+1);
      bf.order(ByteOrder.BIG_ENDIAN);
      bf.putShort(ComBase.changeIntToShort(addrstart));      //接收标识          将寄存器起始地址放在标识中[2个字节]
      bf.putShort(ComBase.changeIntToShort(0x0000));         //协议标识符
      bf.putShort(ComBase.changeIntToShort(7+regcount*2));   //下面字节长度
      bf.put(ComBase.changeIntToByte(unitident));            //单元标识符(设备ID)
      bf.put(ComBase.changeIntToByte(funcode));            //功能码
      bf.putShort(ComBase.changeIntToShort(addrstart));      //寄存器起始地址
      bf.put(data);                                 //目标值
      bf.flip();
      byte[] databyte = new byte[bf.limit()];
      bf.get(databyte);
      return databyte;
   }
   /**
    *    构造多点写入数据
    * @param value
    * @return
@@ -71,7 +94,7 @@
      bf.put(ComBase.changeIntToByte(regcount*2));         //写字节数量
      bf.put(data);                                 //目标值
      bf.flip();
      byte[] databyte = new byte[ReadByteCount];
      byte[] databyte = new byte[bf.limit()];
      bf.get(databyte);
      return databyte;
   }