Skip to content

Commit

Permalink
fix: Update the handling of PlcValues in the simulated driver.
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisdutz committed Oct 10, 2024
1 parent d94a915 commit d8183c1
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ public void set(SimulatedTag tag, PlcValue value) {
break;
default:
try {
final int lengthInBits = DataItem.getLengthInBits(value, tag.getPlcValueType().name(), tag.getArrayInfo().get(0).getSize());
final int lengthInBits = DataItem.getLengthInBits(value, tag.getPlcValueType().name(), (tag.getArrayInfo().isEmpty()) ? 1 : tag.getArrayInfo().get(0).getSize());
final WriteBufferByteBased writeBuffer = new WriteBufferByteBased((int) Math.ceil(((float) lengthInBits) / 8.0f));
DataItem.staticSerialize(writeBuffer, value, tag.getPlcValueType().name(), tag.getArrayInfo().get(0).getSize(), ByteOrder.BIG_ENDIAN);
DataItem.staticSerialize(writeBuffer, value, tag.getPlcValueType().name(), (tag.getArrayInfo().isEmpty()) ? 1 : tag.getArrayInfo().get(0).getSize(), ByteOrder.BIG_ENDIAN);
} catch (SerializationException e) {
LOGGER.info("Write failed");
}
Expand All @@ -120,12 +120,12 @@ private PlcValue randomValue(SimulatedTag tag) {

short tagDataTypeSize = SimulatedDataTypeSizes.valueOf(tag.getPlcValueType().name()).getDataTypeSize();

byte[] b = new byte[tagDataTypeSize * tag.getArrayInfo().get(0).getSize()];
byte[] b = new byte[tagDataTypeSize * ((tag.getArrayInfo().isEmpty()) ? 1 : tag.getArrayInfo().get(0).getSize())];
random.nextBytes(b);

ReadBuffer io = new ReadBufferByteBased(b);
try {
return DataItem.staticParse(io, tag.getPlcValueType().name(), tag.getArrayInfo().get(0).getSize());
return DataItem.staticParse(io, tag.getPlcValueType().name(), ((tag.getArrayInfo().isEmpty()) ? 1 : tag.getArrayInfo().get(0).getSize()));
} catch (ParseException e) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,10 @@ public PlcValueType getPlcValueType() {

@Override
public List<ArrayInfo> getArrayInfo() {
return Collections.singletonList(new DefaultArrayInfo(0, numElements - 1));
if(numElements > 1) {
return Collections.singletonList(new DefaultArrayInfo(0, numElements - 1));
}
return Collections.emptyList();
}

public SimulatedTagType getType() {
Expand Down

0 comments on commit d8183c1

Please sign in to comment.