Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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));
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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)
            {
            }
        }