/// <summary> /// Writes floats to holding registers /// </summary> /// <param name="offset">The first register offset</param> /// <param name="values">The values to write</param> /// <returns>Awaitable task</returns> public async Task WriteRegistersAsync(int offset, float[] values, byte unit = 0x01) { if (tcpClient == null) { throw new Exception("Object not intialized"); } var request = new ModbusRequest16(offset, values, unit); var buffer = request.ToNetworkBuffer(); using (var cancellationTokenSource = new CancellationTokenSource(socketTimeout)) { using (cancellationTokenSource.Token.Register(() => transportStream.Close())) { await transportStream.WriteAsync(buffer, 0, buffer.Length, cancellationTokenSource.Token); } } var response = await ReadResponseAsync <ModbusReply16>(); }
/// <summary> /// Writes words to holding registers /// </summary> /// <param name="offset">The first register offset</param> /// <param name="values">The values to write</param> /// <returns>Awaitable task</returns> public void WriteRegisters(int offset, short[] values, byte unit = 0x01) { if (tcpClient == null) { throw new Exception("Object not intialized"); } var request = new ModbusRequest16(unit); request.WordCount = (short)(values.Length * 2); request.RegisterValues = values.ToNetworkBytes(); var buffer = request.ToNetworkBuffer(); using (var cancellationTokenSource = new CancellationTokenSource(socketTimeout)) { using (cancellationTokenSource.Token.Register(() => transportStream.Close())) { transportStream.Write(buffer, 0, buffer.Length); } } ReadResponse <ModbusReply16>(); }