whyclxw
2020-09-19 1bffd54630f3c20c29879b20033804d759db4750
src/com/modbus/util/BaseData.java
@@ -10,6 +10,8 @@
public class BaseData {
   public static final int ReadByteCount = 12;
   
   public static final int SINGLEWRITE_BYTECOUNT = 6;
   public int transsend;            //发送事务标识符
   public int transreceive;         //接收事务标识符
   public int protocolident;         //协议标识符
@@ -64,7 +66,7 @@
      bf.order(ByteOrder.BIG_ENDIAN);
      bf.putShort(ComBase.changeIntToShort(addrstart));      //接收标识          将寄存器起始地址放在标识中[2个字节]
      bf.putShort(ComBase.changeIntToShort(0x0000));         //协议标识符
      bf.putShort(ComBase.changeIntToShort(7+regcount*2));   //下面字节长度
      bf.putShort(ComBase.changeIntToShort(4+regcount*2));   //下面字节长度
      bf.put(ComBase.changeIntToByte(unitident));            //单元标识符(设备ID)
      bf.put(ComBase.changeIntToByte(funcode));            //功能码
      bf.putShort(ComBase.changeIntToShort(addrstart));      //寄存器起始地址
@@ -125,6 +127,22 @@
      bf.flip();
      byte[] b = new byte[4];
      bf.get(b);
      System.out.println(ComFn.bytesToHexString(b, b.length)+value);
      return b;
   }
   /**
    * 构造写入多个寄存器数据
    * @param value
    * @return
    */
   public static byte[] createIntByte(int value) {
      ByteBuffer bf = ByteBuffer.allocate(2);
      bf.order(ByteOrder.BIG_ENDIAN);
      bf.putShort(ComBase.changeIntToShort(value));
      bf.flip();
      byte[] b = new byte[2];
      bf.get(b);
      return b;
   }