示例#1
0
        /// <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);
        }
示例#2
0
        /// <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;
            }));
        }