This is an automated email from the ASF dual-hosted git repository.
cgarcia pushed a commit to branch feature/merlot
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git
The following commit(s) were added to refs/heads/feature/merlot by this push:
new 29dea3c Fix scalar handling.
29dea3c is described below
commit 29dea3cdf2a9fc1dad74b546001fd84567a9cf89
Author: César García <[email protected]>
AuthorDate: Tue Dec 10 10:13:44 2024 -0400
Fix scalar handling.
---
.../plc4x/merlot/api/command/DemoCommand004.java | 2 +-
.../org/apache/plc4x/merlot/db/api/DBRecord.java | 2 +-
.../apache/plc4x/merlot/db/core/DBByteFactory.java | 5 +--
.../plc4x/merlot/db/core/DBDoubleFactory.java | 5 +--
.../plc4x/merlot/db/core/DBFloatFactory.java | 5 +--
.../apache/plc4x/merlot/db/core/DBIntFactory.java | 5 +--
.../apache/plc4x/merlot/db/core/DBLongFactory.java | 5 +--
.../plc4x/merlot/db/core/DBShortFactory.java | 5 +--
.../plc4x/merlot/db/core/DBUByteFactory.java | 5 +--
.../apache/plc4x/merlot/db/core/DBUIntFactory.java | 5 +--
.../plc4x/merlot/db/core/DBULongFactory.java | 9 ++---
.../plc4x/merlot/db/core/DBUShortFactory.java | 5 +--
.../plc4x/merlot/drv/s7/core/S7DBAoFactory.java | 45 +++++++++++++---------
.../merlot/drv/s7/impl/S7DBWriterHandlerImpl.java | 24 ++++++++----
.../merlot/drv/s7/impl/S7PlcTagFunctionImpl.java | 4 +-
15 files changed, 59 insertions(+), 72 deletions(-)
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/command/DemoCommand004.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/command/DemoCommand004.java
index e90a0eb..e99e7e4 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/command/DemoCommand004.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/command/DemoCommand004.java
@@ -87,7 +87,7 @@ public class DemoCommand004 implements Action {
optPlcDevice.get().getUid().toString(),
"S7ITEM_" + i,
"S7Item description _" + i,
- "%DB100:0:USINT[48]",
+ "%DB100:0:USINT[100]",
"true");
if (optPlcItem.isPresent()){
optPlcItem.get().enable();
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBRecord.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBRecord.java
index 998ae4b..b126166 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBRecord.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBRecord.java
@@ -119,7 +119,7 @@ public class DBRecord extends PVRecord implements
PlcItemListener {
Matcher matcher;
if ((matcher = BYTE_OFFSET_PATTERN.matcher(strOffset)).matches()){
byteOffset = Integer.parseInt(matcher.group(BYTE_OFFSET ));
- fieldOffsets.set(2, new ImmutablePair(byteOffset,-1));
+ fieldOffsets.set(2, new ImmutablePair(byteOffset,(byte) -1));
} else if ((matcher =
BIT_OFFSET_PATTERN.matcher(strOffset)).matches()){
byteOffset = Integer.parseInt(matcher.group(BYTE_OFFSET ));
bitOffset = (byte) Integer.parseInt(matcher.group(BIT_OFFSET ));
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBByteFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBByteFactory.java
index eb80299..c1522b8 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBByteFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBByteFactory.java
@@ -112,9 +112,7 @@ public class DBByteFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeByte(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -125,7 +123,6 @@ public class DBByteFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBDoubleFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBDoubleFactory.java
index 80fb780..0a355ef 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBDoubleFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBDoubleFactory.java
@@ -111,9 +111,7 @@ public class DBDoubleFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeDouble(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -124,7 +122,6 @@ public class DBDoubleFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBFloatFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBFloatFactory.java
index ec6d2ac..26f25a1 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBFloatFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBFloatFactory.java
@@ -111,9 +111,7 @@ public class DBFloatFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeFloat(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -124,7 +122,6 @@ public class DBFloatFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBIntFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBIntFactory.java
index 2d09749..dd42340 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBIntFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBIntFactory.java
@@ -108,9 +108,7 @@ public class DBIntFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeInt(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -121,7 +119,6 @@ public class DBIntFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBLongFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBLongFactory.java
index ad3916b..369cde7 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBLongFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBLongFactory.java
@@ -108,9 +108,7 @@ public class DBLongFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeLong(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -121,7 +119,6 @@ public class DBLongFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBShortFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBShortFactory.java
index b1e8cab..398b065 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBShortFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBShortFactory.java
@@ -113,9 +113,7 @@ public class DBShortFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeShort(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -126,7 +124,6 @@ public class DBShortFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUByteFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUByteFactory.java
index a931207..af55c85 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUByteFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUByteFactory.java
@@ -108,9 +108,7 @@ public class DBUByteFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeByte(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -121,7 +119,6 @@ public class DBUByteFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUIntFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUIntFactory.java
index 37ca32d..1a7e609 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUIntFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUIntFactory.java
@@ -108,9 +108,7 @@ public class DBUIntFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeInt(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -121,7 +119,6 @@ public class DBUIntFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBULongFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBULongFactory.java
index cd210cf..c49dc47 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBULongFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBULongFactory.java
@@ -110,9 +110,7 @@ public class DBULongFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeLong(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -123,7 +121,6 @@ public class DBULongFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
@@ -134,8 +131,8 @@ public class DBULongFactory extends DBBaseFactory {
@Override
public void update() {
if (null != plcItem)
- if (value.get() != innerBuffer.getUnsignedMedium(0))
- value.put(innerBuffer.getUnsignedMedium(0));
+ if (value.get() != innerBuffer.getLong(0))
+ value.put(innerBuffer.getLong(0));
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUShortFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUShortFactory.java
index f472877..aaed46e 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUShortFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBUShortFactory.java
@@ -110,9 +110,7 @@ public class DBUShortFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- write_value.put(value.get());
- innerWriteBuffer.clear();
- innerWriteBuffer.writeShort(write_value.get());
+ write_value.put(value.get());
super.process();
}
}
@@ -123,7 +121,6 @@ public class DBUShortFactory extends DBBaseFactory {
this.plcItem = plcItem;
getOffset( this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
- innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
@Override
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
index d26124f..fe95834 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
@@ -119,7 +119,11 @@ public class S7DBAoFactory extends DBBaseFactory {
private PVInt iEstopFunction;
private PVBoolean bOutOfRange;
- private PVBoolean bConfiguratonError;
+ private PVBoolean bConfiguratonError;
+
+ private PVShort out_iMode;
+ private PVFloat out_rManualValue;
+ private PVBoolean out_bPBEN_ResetError;
byte byTemp;
@@ -129,24 +133,27 @@ public class S7DBAoFactory extends DBBaseFactory {
write_value = pvStructure.getShortField("write_value");
write_enable = pvStructure.getBooleanField("write_enable");
- iMode = pvStructure.getShortField("cmd/iMode");
- iErrorCode = pvStructure.getShortField("cmd/iErrorCode");
-
- rValue = pvStructure.getFloatField("cmd/rValue");
- rActiveValue = pvStructure.getFloatField("cmd/rActiveValue");
- rManualValue = pvStructure.getFloatField("cmd/rManualValue");
- rEstopValue = pvStructure.getFloatField("cmd/rEstopValue");
-
- bPB_ResetError = pvStructure.getBooleanField("cmd/bPB_ResetError");
- bPBEN_ResetError =
pvStructure.getBooleanField("cmd/bPBEN_ResetError");
- bError = pvStructure.getBooleanField("cmd/bError");
- bInterlock = pvStructure.getBooleanField("cmd/bInterlock");
-
- iEstopFunction = pvStructure.getIntField("cmd/iEstopFunction");
-
- bOutOfRange = pvStructure.getBooleanField("sts/iEstopFunction");
- bConfiguratonError =
pvStructure.getBooleanField("sts/ConfiguratonError");
+ PVStructure pvStructureCmd = pvStructure.getStructureField("cmd");
+ iMode = pvStructureCmd.getShortField("iMode");
+ iErrorCode = pvStructureCmd.getShortField("iErrorCode");
+ rValue = pvStructureCmd.getFloatField("rValue");
+ rActiveValue = pvStructureCmd.getFloatField("rActiveValue");
+ rManualValue = pvStructureCmd.getFloatField("rManualValue");
+ rEstopValue = pvStructureCmd.getFloatField("rEstopValue");
+ bPB_ResetError = pvStructureCmd.getBooleanField("bPB_ResetError");
+ bPBEN_ResetError =
pvStructureCmd.getBooleanField("bPBEN_ResetError");
+ bError = pvStructureCmd.getBooleanField("bError");
+ bInterlock = pvStructureCmd.getBooleanField("bInterlock");
+ iEstopFunction = pvStructureCmd.getIntField("iEstopFunction");
+ PVStructure pvStructureSts = pvStructure.getStructureField("sts");
+ bOutOfRange =
pvStructureSts.getBooleanField("sts/iEstopFunction");
+ bConfiguratonError =
pvStructureSts.getBooleanField("sts/ConfiguratonError");
+
+ PVStructure pvStructureOut = pvStructure.getStructureField("out");
+ out_iMode = pvStructureOut.getShortField("iMode");
+ out_rManualValue = pvStructureOut.getFloatField("rManualValue");
+ out_bPBEN_ResetError =
pvStructureOut.getBooleanField("bPBEN_ResetError");
}
/**
@@ -171,7 +178,7 @@ public class S7DBAoFactory extends DBBaseFactory {
this.plcItem = plcItem;
//offset = this.getPVStructure().getIntField("offset").get() *
Short.BYTES;
getOffset( this.getPVStructure().getStringField("offset").get());
- innerBuffer = plcItem.getItemByteBuf().slice(byteOffset, 3);
+ innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
innerWriteBuffer = Unpooled.copiedBuffer(innerBuffer);
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
index 12c3f21..e522aba 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
@@ -47,6 +47,7 @@ import org.epics.pvdata.pv.PVString;
import org.epics.pvdata.pv.PVStructure;
import org.epics.pvdata.pv.PVUByte;
import org.epics.pvdata.pv.PVUInt;
+import org.epics.pvdata.pv.PVULong;
import org.epics.pvdata.pv.PVUShort;
import static org.epics.pvdata.pv.ScalarType.pvBoolean;
import static org.epics.pvdata.pv.ScalarType.pvByte;
@@ -86,6 +87,7 @@ public class S7DBWriterHandlerImpl implements DBWriterHandler
{
public void monitorEvent(Monitor monitor) {
int byteOffset = 0;
byte bitOffset = -1;
+ Integer intTemp;
try
{
element = monitor.poll();
@@ -155,8 +157,7 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
byteBuf = Unpooled.buffer(l + 1);
byteBuf.resetWriterIndex();
byteBuf.writeByte(l);
- byteBuf.writeBytes(((PVString)
f).get().getBytes());
-
+ byteBuf.writeBytes(((PVString)
f).get().getBytes());
break;
case pvUByte:
byteBuf.writeByte(((PVUByte) f).get());
@@ -165,19 +166,28 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
byteBuf.writeInt(((PVUInt) f).get());
break;
case pvULong:
- byteBuf.writeLong(((PVLong) f).get());
+ byteBuf.writeLong(((PVULong) f).get());
break;
case pvUShort:
byteBuf.writeShort(((PVUShort) f).get());
break;
}
- ArrayList<ImmutablePair<Integer, Byte>>
fieldOffsets = dbRecord.getFieldOffsets();
- byteOffset = dbRecord.getByteOffset() +
((fieldOffsets.get(index) != null)?fieldOffsets.get(index).left:0);
- bitOffset = ((fieldOffsets.get(index) !=
null)?fieldOffsets.get(index).right: -1);
+ final ArrayList<ImmutablePair<Integer, Byte>>
fieldOffsets = dbRecord.getFieldOffsets();
+ byteOffset = ((fieldOffsets.get(index) !=
null)?fieldOffsets.get(index).left:0);
+ bitOffset = ((fieldOffsets.get(index) !=
null)?fieldOffsets.get(index).right.byteValue():(byte) -1);
+ System.out.println("Paso por aqui 9: " +
byteOffset);
+// if (fieldOffsets.get(index) != null) {
+// bitOffset =
fieldOffsets.get(index).right.byteValue();
+// } else {
+// bitOffset = (byte) -1;
+// }
+// System.out.println("Entero: " + bitOffset);
+
if (optPlcItem.isPresent()) {
optPlcItem.get().itemWrite(byteBuf,
byteOffset, bitOffset);
- }
+ }
+ System.out.println(">> ByteOffset: " + byteOffset
+ " bitOffset: " + bitOffset + "BufLen: " + byteBuf.readableBytes());
};
index = changedBitSet.nextSetBit(index);
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7PlcTagFunctionImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7PlcTagFunctionImpl.java
index 73dd190..cec9df0 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7PlcTagFunctionImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7PlcTagFunctionImpl.java
@@ -164,10 +164,10 @@ public class S7PlcTagFunctionImpl implements
PlcTagFunction {
intBlockNumber,
intByteOffset,
bitOffset,
- byteBuf.capacity());
+ byteBuf.readableBytes());
LOGGER.info("Write BOOL S7Tag: {}",
s7PlcTag.toString());
byteBuf.resetReaderIndex();
- for (int i=0; i < byteBuf.capacity(); i++){
+ for (int i=0; i < byteBuf.readableBytes(); i++){
objValues[i] = byteBuf.readBoolean();
}
break;