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