/// <summary>
        /// Sends program to manipulator
        /// </summary>
        /// <param name="program"></param>
        public async void UploadProgram(Program program)
        {
            if (!manipulator.Connected)
            {
                return;
            }
            try
            {
                manipulator.Number(program.Name);
                await Task.Delay(1000);

                manipulator.New();
                await Task.Delay(1000);

                var lines = program.GetLines();

                for (var i = 0; i < lines.Count; i++)
                {
                    await Task.Delay(500);

                    manipulator.SendCustom(lines[i]);
                    StepUpdate?.Invoke(this, new NotificationEventArgs("Uploading program", i + 1,
                                                                       lines.Count, EventType.LINE_UPLOADED));
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message);
            }
        }
Exemple #2
0
        /// <summary>
        /// Sends program to manipulator
        /// </summary>
        /// <param name="program">Program to be uploaded to manipulator</param>
        /// <param name="cancellationToken">Defines task cancellation operation</param>
        public async Task UploadProgram(Program program, CancellationToken cancellationToken)
        {
            if (!manipulator.Connected)
            {
                return;
            }
            try
            {
                manipulator.Number(program.Name);
                await Task.Delay(1000, cancellationToken);

                manipulator.New();
                await Task.Delay(1000, cancellationToken);

                var lines = program.GetLines();

                for (var i = 0; i < lines.Count; i++)
                {
                    await Task.Delay(500, cancellationToken);

                    cancellationToken.ThrowIfCancellationRequested();

                    manipulator.SendCustom(lines[i]);
                    StepUpdate?.Invoke(this, new NotificationEventArgs("Uploading program", i + 1,
                                                                       lines.Count, EventType.LINE_UPLOADED));
                }
            }
            catch (OperationCanceledException)
            {
                // Cancellation does not require handling as method returns immediately after catch clause
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message);
            }
        }