DetDmtUtil.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  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.Tasks;
  10. namespace Ips.DetAlgorithm
  11. {
  12. public static class DetDmtUtil
  13. {
  14. static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "detdmt", "detdmt.exe");
  15. public static async Task<ExeResult<string>> Disc(string filename, double freq, int fs, int timeout = 120, CancellationToken token = default)
  16. {
  17. var cli = Cli.Wrap(CliFile)
  18. .WithArguments(args =>
  19. {
  20. args.Add(filename);
  21. args.Add(freq);
  22. args.Add(fs);
  23. })
  24. .WithWorkingDirectory(Path.GetDirectoryName(CliFile));
  25. var res = await cli.ExecuteBufferedAsync(token.LinkTimeout(timeout));
  26. var result = res.StandardOutput;
  27. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  28. }
  29. }
  30. }