/// <summary> /// Read contiguous block of input registers. /// </summary> /// <param name="startAddress">Address to begin reading.</param> /// <param name="numberOfPoints">Number of holding registers to read.</param> /// <returns>Input registers status</returns> public byte[] ReadInputRegistersRaw(ushort startAddress, ushort numberOfPoints) { this.ThrowIfDisposed(); this._logger.Log(START_RAED_INPUT_REGISTERS); this.ValidateNumberOfPoints(numberOfPoints, ProtocolConstants.MAXIMUM_REGISTER_REQUEST_RESPONSE_SIZE); var request = new TcpReadInputRegistersClientRequest(SLAVE_ADDRESS, startAddress, numberOfPoints); var response = this._modbus.ProcessRequest <TcpReadInputRegistersClientResponse>(request); this._logger.Log(END_RAED_INPUT_REGISTERS); return(response.RawData); }
/// <summary> /// Read contiguous block of input registers. /// </summary> /// <param name="startAddress">Address to begin reading.</param> /// <param name="numberOfPoints">Number of holding registers to read.</param> /// <returns>Input registers status</returns> public Task <byte[]> ReadInputRegistersRawAsync(ushort startAddress, ushort numberOfPoints) { this.ThrowIfDisposed(); this._logger.Log(START_RAED_INPUT_REGISTERS); this.ValidateNumberOfPoints(numberOfPoints, ProtocolConstants.MAXIMUM_REGISTER_REQUEST_RESPONSE_SIZE); var request = new TcpReadInputRegistersClientRequest(SLAVE_ADDRESS, startAddress, numberOfPoints); return(this._modbus.ProcessRequestAsync <TcpReadInputRegistersClientResponse>(request) .ContinueWith(task => { this._logger.Log(END_RAED_INPUT_REGISTERS); return task.Result.RawData; })); }