| | |
| | | import java.nio.ByteOrder;
|
| | |
|
| | | import com.base.ComBase;
|
| | | import com.base.ComFn;
|
| | |
|
| | |
|
| | | public class BaseData {
|
| | |
| | | }
|
| | |
|
| | | /**
|
| | | * 构造单点写入数据
|
| | | * @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
|
| | |
| | | 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;
|
| | | }
|