v5.0.0
Breaking Changes
- The previously introduced TCP client constructor overload was called
Connect
although it expected a totally externally managed TCP client which should already be connected. This constructor is now namedInitialize
and its signature has been adapted to better fit its purpose. The passed TCP client (orIModbusRtuSerialPort
in case of the RTU client) is now not modified at all, i.e. configured timeouts or other things are not applied to these externally managed instances (#78).
Features
- Modbus TCP and RTU clients implement
IDisposable
so you can do the following now:using var client = new ModbusTcpClient(...)
(#67) - Modbus server base class has now a virtual
Stop
method so the actual server can be stopped using a base class reference (#79).
Bugs Fixed
- The Modbus server ignored the unit identifier and responded to all requests (#79).
- Modbus server side read timeout exception handling is more defined now:
- The TCP server closes the connection.
- The Modbus RTU server ignores the exception as there is only a single connection and if that one is closed, there would be no point in keeping the RTU server running.
- Modbus server did not properly handle asynchronous cancellation (#79).
Thanks @schotime and @LukasKarel for your PRs!