From 1fe34bd9cd779c67beece43b4016e2a0192157c9 Mon Sep 17 00:00:00 2001 From: whyclj <1525436766@qq.com> Date: 星期二, 21 七月 2020 14:17:22 +0800 Subject: [PATCH] 改成改单个寄存器 --- src/com/modbus/util/BaseData.java | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) diff --git a/src/com/modbus/util/BaseData.java b/src/com/modbus/util/BaseData.java index 79f9106..82cfd17 100644 --- a/src/com/modbus/util/BaseData.java +++ b/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; } -- Gitblit v1.9.1