/// <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)); }