EphTleUtil.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.EphAlgorithm
  11. {
  12. public static class EphTleUtil
  13. {
  14. static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "tle", "tle.exe");
  15. public static async Task<ExeResult<EphResult>> Get(string line1, string line2, DateTime time, CancellationToken token = default)
  16. {
  17. if (time == DateTime.MinValue)
  18. {
  19. throw new Exception("双行根推算星历异常,时间未指定");
  20. }
  21. var cli = Cli.Wrap(CliFile)
  22. .WithArguments(builder =>
  23. {
  24. builder.Add("calc");
  25. builder.Add(line1, true);
  26. builder.Add(line2, true);
  27. builder.Add(time.ToString("yyyyMMddHHmmss"), false);
  28. });
  29. var res = await cli.ExecuteBufferedAsync(token);
  30. EphResult result = EphResult.FromString(res.StandardOutput);
  31. result.Time = time;
  32. return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  33. }
  34. public static async Task<ExeResult<EphResult[]>> GetRange(string line1, string line2, DateTime time, int period, int times, CancellationToken token = default)
  35. {
  36. if (time == DateTime.MinValue)
  37. {
  38. throw new Exception("双行根推算星历异常,时间未指定");
  39. }
  40. var etime = time.AddSeconds(period * times);
  41. var cli = Cli.Wrap(CliFile)
  42. .WithArguments(builder =>
  43. {
  44. //builder.Add("-a", false).Add(line1, true);
  45. //builder.Add("-b", false).Add(line2, true);
  46. //builder.Add("-t", false).Add(DateTimeUtil.To1970s(time), false);
  47. //builder.Add("-p").Add(period);
  48. //builder.Add("-c").Add(times);
  49. builder.Add("range");
  50. builder.Add(line1, true);
  51. builder.Add(line2, true);
  52. builder.Add(time.ToString("yyyyMMddHHmmss"), false);
  53. builder.Add(etime.ToString("yyyyMMddHHmmss"), false);
  54. builder.Add("-t").Add(period.ToString());
  55. });
  56. var res = await cli.ExecuteBufferedAsync(token);
  57. var ephResults = EphResult.FromListString(res.StandardOutput);
  58. return ExeResult.Create(ephResults, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError);
  59. }
  60. }
  61. }