plc4x icon indicating copy to clipboard operation
plc4x copied to clipboard

Mock driver always writes null value

Open ottlukas opened this issue 3 years ago • 2 comments

The Mock driver is usefull for developing applications without available hardware. Reads from Mock devices work, but writes seem broken.

Scenario:

implement MockDevice interface and the write method. See that this device is set in the connection using the MockConnection.setDevice method.

When a WriteRequest is issued on the connection, the MockDevice.write method is indeed called, but the value parameter is always null. The given value to write is not passed through.

Debugging and looking into the sourcecode shows following:

MockConnection.write uses following statement to retrieve the value:

 


// MockConnection:147
((MockField) writeRequest.getField(name)).getPlcValue()

This retrieves the plcValue member from the MockField object. This  plcValue is written to by constructor MockField(String address, MockPlcValue plcValue) only. However, I did not find any call to this constructor.

 

Note:

Other Drivers seem to use


writeRequest.getPlcValue(fieldName) 

instead and do not have a value member in the Field class. (e.g. Simulator, Modbus )

Imported from Jira PLC4X-288. Original Jira may contain additional context. Reported by: teslanet-nl.

ottlukas avatar Nov 09 '22 10:11 ottlukas

@chrisdutz Our tests are running, so can this issue be closed now?

ottlukas avatar Feb 06 '24 10:02 ottlukas

Didn't close it, as I actually haven't tested it ... I did close an issue as it wasn't causing issues, till I noticed it wasn't as I disabled the test ... so wanted to make sure.

chrisdutz avatar Feb 06 '24 13:02 chrisdutz