DmcUtils.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Threading.Channels;
  6. using System.Threading.Tasks;
  7. using CliWrap;
  8. using CliWrap.Buffered;
  9. using Ips.Library.Basic;
  10. using Ips.Library.CliLib;
  11. using Ips.Library.Entity;
  12. namespace Ips.Dmc
  13. {
  14. public static class DmcUtils
  15. {
  16. static readonly string CliPath = PathUtil.GetAssemblyPath("ipscli", "dmc", "dmc.exe");
  17. /// <summary>
  18. /// DAMA检测
  19. /// </summary>
  20. public static async Task<ExeResult<Timeslot[]>> Dama(string filename, DetDMOptions arg, int timeout = 60, CancellationToken token = default)
  21. {
  22. var cli = Cli.Wrap(CliPath)
  23. .WithArguments(args =>
  24. {
  25. args.Add("dama");
  26. args.Add(filename);
  27. args.IpsAdd("fs", arg.Fs);
  28. args.IpsAdd("channel", arg.Channel);
  29. args.IpsAdd("sparse", arg.Sparese);
  30. args.IpsAdd("ccow", arg.Ccow);
  31. args.IpsAdd("full", arg.Full);
  32. });
  33. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  34. var result = Timeslot.FromListString(res.StandardOutput);
  35. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  36. }
  37. /// <summary>
  38. /// DET检测
  39. /// </summary>
  40. public static async Task<ExeResult<Timeslot[]>> Det(string filename, DetNotDMOptions arg, int timeout = 60, CancellationToken token = default)
  41. {
  42. var cli = Cli.Wrap(CliPath)
  43. .WithArguments(args =>
  44. {
  45. args.Add("det");
  46. args.Add(filename);
  47. args.Add("-w").Add(arg.BandWidth);
  48. });
  49. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  50. var result = Timeslot.FromListString(res.StandardOutput);
  51. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  52. }
  53. }
  54. }