/// <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)); }
public async Task <List <RemoteProgram> > ReadProgramInfo(CancellationToken cancellationToken) { var remoteProgramList = new List <RemoteProgram>(); // Decode data for (var i = 1; ; i++) { manipulator.SendCustom(i == 1 ? "EXE0, \"Fd<*\"" : $"EXE0, \"Fd{i}\""); await manipulator.Port.WaitForMessageAsync(); var QoK = manipulator.Port.Read(); if (QoK.Equals("QoK\r") || Regex.IsMatch(QoK, @"^QoK\s*$")) { break; } try { cancellationToken.ThrowIfCancellationRequested(); } catch (OperationCanceledException) { break; } var remoteProgram = RemoteProgram.Create(QoK); if (remoteProgram != null) { remoteProgramList.Add(remoteProgram); } } return(remoteProgramList); }
public async Task <List <RemoteProgram> > ReadProgramInfo() { var remoteProgramList = new List <RemoteProgram>(); // Decode data for (var i = 1; ; i++) { manipulator.SendCustom(i == 1 ? "EXE0, \"Fd<*\"" : $"EXE0, \"Fd{i}\""); await manipulator.Port.WaitForMessageAsync(); var QoK = manipulator.Port.Read(); if (QoK.Equals("QoK\r")) { break; } var remoteProgram = RemoteProgram.Create(QoK); if (remoteProgram != null) { remoteProgramList.Add(remoteProgram); } } return(remoteProgramList); }
/// <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="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)); }
public static Program CreateFromRemoteProgram(RemoteProgram program, string content) { return(new Program(program.Name) { Size = program.Size, Timestamp = program.Timestamp, Content = content }); }
public async void RunProgram(RemoteProgram remoteProgram) { if (!manipulator.Connected) return; try { manipulator.Number(remoteProgram.Name); await Task.Delay(1000); manipulator.Run(); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }
public async Task RunProgram(RemoteProgram remoteProgram, CancellationToken cancellationToken) { if (!manipulator.Connected) { return; } try { cancellationToken.ThrowIfCancellationRequested(); manipulator.Number(remoteProgram.Name); await Task.Delay(1000, cancellationToken); manipulator.Run(); } catch (OperationCanceledException) { // Cancellation does not require handling as method returns immediately after catch clause } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }
public async Task RunProgram(RemoteProgram remoteProgram) { await RunProgram(remoteProgram, default(CancellationToken)); }
public async Task <Program> DownloadProgram(RemoteProgram remoteProgram) { return(await DownloadProgram(remoteProgram, default(CancellationToken))); }