plc4x
plc4x copied to clipboard
Mock driver always writes null value
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.
@chrisdutz Our tests are running, so can this issue be closed now?
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.