DetDmUtil.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using CliWrap;
  2. using CliWrap.Buffered;
  3. using Ips.Library.Basic;
  4. using Ips.Library.Entity;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Channels;
  10. using System.Threading.Tasks;
  11. namespace Ips.DetAlgorithm
  12. {
  13. public static class DetDmUtil
  14. {
  15. static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detdm", "detdm.exe");
  16. /// <summary>
  17. /// DAMA检测
  18. /// </summary>
  19. public static async Task<ExeResult<Timeslot[]>> Dama(string filename, DetDamaOptions arg, int timeout = 60, CancellationToken token = default)
  20. {
  21. var cli = Cli.Wrap(CliFile)
  22. .WithArguments(args =>
  23. {
  24. args.Add("dama");
  25. args.Add(filename);
  26. args.Add("-f").Add(arg.Fs);
  27. args.Add("-c").Add(arg.Channel);
  28. args.Add("-s").Add(arg.Sparese);
  29. args.Add("--ccow").Add(arg.Ccow.ToString());
  30. args.Add("--full").Add(arg.Full.ToString());
  31. });
  32. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  33. var result = Timeslot.FromListString(res.StandardOutput);
  34. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  35. }
  36. /// <summary>
  37. /// 非Dama检测
  38. /// </summary>
  39. public static async Task<ExeResult<Timeslot[]>> Det(string filename, DetNotDamaOptions arg, int timeout = 60, CancellationToken token = default)
  40. {
  41. string filetest = PathUtil.GetBasePath("ipscli", "detdm", "detdm.exe");
  42. var cli = Cli.Wrap(CliFile)
  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. }