/// <summary> /// Asynchronously reads specified number of ushorts starting from the specified address. /// </summary> /// <param name="startAddress">Address to start to read from</param> /// <param name="count">Number of ushorts to read</param> /// <returns>Read data</returns> public async Task <ushort[]> ReadAsync(FinsAddress startAddress, ushort count) { var sid = IncrementSid(); var cmd = FinsDriver.ReadCommand(startAddress, new Header(sid, true), count); return((await CommandAsync(sid, cmd)).Data); }
/// <summary> /// Asynchronously writes specified data to specified memory address. /// </summary> /// <param name="startAddress">Address to start to write to</param> /// <param name="data">Data to write</param> public async Task WriteAsync(FinsAddress startAddress, ushort[] data) { var sid = IncrementSid(); var cmd = FinsDriver.WriteCommand(startAddress, new Header(sid, true), data); await CommandAsync(sid, cmd); }
/// <summary> /// Syncroniously writes specified data to specified address. /// </summary> /// <param name="startAddress">Address to start write to</param> /// <param name="data">Data to write</param> public void Write(FinsAddress startAddress, ushort[] data) { var sid = IncrementSid(); var cmd = FinsDriver.WriteCommand(startAddress, new Header(sid, true), data); Write(sid, cmd); }
/// <summary> /// Syncroniously reads specified number of ushorts starting from specified address. /// </summary> /// <param name="startAddress">Address to start to read from</param> /// <param name="count">Number of ushorts to read</param> /// <returns>Read data</returns> public ushort[] Read(FinsAddress startAddress, ushort count) { var sid = IncrementSid(); var cmd = FinsDriver.ReadCommand(startAddress, new Header(sid, true), count); return(Read(sid, cmd)); }
/// <summary> /// Writes specified data to specified address of data memory without /// waiting for a response. /// </summary> /// <param name="startAddress">Address to start to read from</param> /// <param name="count">Number of ushorts to read</param> public void WriteNoResponse(FinsAddress startAddress, ushort[] data) { var sid = IncrementSid(); var cmd = FinsDriver.WriteCommand(startAddress, new Header(sid, false), data); _udpClient.SendAsync(cmd, cmd.Length); }
/// <summary> /// Syncroniously writes specified data to specified address of work memory /// </summary> /// <param name="startAddress">Address to start write to</param> /// <param name="data">Data to write</param> public void WriteWork(ushort startAddress, ushort[] data) { var sid = IncrementSid(); var cmd = FinsDriver.WriteWorkCommand(new Header(sid, true), startAddress, data); Write(sid, cmd); }
private void ReadWorker() { try { while (true) { var task = _udpClient.ReceiveAsync(); task.Wait(_cancellationToken); if (task.IsFaulted) { throw new AggregateException(task.Exception); } FinsDriver.ProcessResponse(task.Result, _responses); } } catch (OperationCanceledException) { } }