Example #1
0
        /// <summary>
        /// Uploads program from manipulator to PC memory
        /// </summary>
        /// <param name="remoteProgram">Program downloaded from manipulator</param>
        /// <returns>Requested program or null when program with given name does not exist</returns>
        public async Task <Program> DownloadProgram(RemoteProgram remoteProgram, CancellationToken cancellationToken)
        {
            manipulator.Number(remoteProgram.Name);
            await Task.Delay(1000, cancellationToken);

            var errorCode = await manipulator.ErrorRead();

            if (errorCode != 0)
            {
                throw new AlarmException(errorCode);
            }

            var content = string.Empty;

            for (uint i = 1; ; i++)
            {
                var line = await manipulator.StepRead(i);

                if (line.Equals("\r"))
                {
                    break;
                }
                content += line + "\n";

                try
                {
                    cancellationToken.ThrowIfCancellationRequested();
                }
                catch (OperationCanceledException)
                {
                    break;
                }
            }
            return(Program.CreateFromRemoteProgram(remoteProgram, content));
        }
        /// <summary>
        /// Uploads program from manipulator to PC memory
        /// </summary>
        /// <param name="remoteProgram">Program downloaded from manipulator</param>
        /// <returns>Requested program or null when program with given name does not exist</returns>
        public async Task <Program> DownloadProgram(RemoteProgram remoteProgram)
        {
            manipulator.Number(remoteProgram.Name);
            await Task.Delay(1000);

            var errorCode = await manipulator.ErrorRead();

            if (errorCode != 0)
            {
                throw new AlarmException(errorCode);
            }

            var content = string.Empty;

            for (uint i = 1;; i++)
            {
                var line = await manipulator.StepRead(i);

                if (line.Equals("\r"))
                {
                    break;
                }
                content += line + "\n";
            }
            return(Program.CreateFromRemoteProgram(remoteProgram, content));
        }
        /// <summary>
        /// Uploads program from manipulator to PC memory
        /// </summary>
        /// <param name="programName">Name of program on manipulator</param>
        /// <returns>Requested program or null when program with given name does not exist</returns>
        public async Task <Program> DownloadProgram(RemoteProgram remoteProgram)
        {
            var dialog = new SaveFileDialog();

            if (dialog.ShowDialog() == false)
            {
                return(null);
            }

            manipulator.Number(remoteProgram.Name);
            await Task.Delay(1000);

            var errorCode = await manipulator.ErrorRead();

            if (errorCode != 0)
            {
                throw new AlarmException(errorCode);
            }

            var content = String.Empty;

            for (uint i = 1;; i++)
            {
                var line = await manipulator.StepRead(i);

                if (line.Equals("\r"))
                {
                    break;
                }
                content += line + "\n";
            }
            File.WriteAllText(dialog.FileName, content);
            return(Program.CreateFromRemoteProgram(remoteProgram, content));
        }