using CliWrap; using CliWrap.Buffered; using Ips.Library.Basic; using Ips.Library.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.EphAlgorithm { public static class EphTleUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "tle", "tle.exe"); public static async Task> Get(string line1, string line2, DateTime time, CancellationToken token = default) { if (time == DateTime.MinValue) { throw new Exception("双行根推算星历异常,时间未指定"); } var cli = Cli.Wrap(CliFile) .WithArguments(builder => { builder.Add("calc"); builder.Add(line1, true); builder.Add(line2, true); builder.Add(time.ToString("yyyyMMddHHmmss"), false); }); var res = await cli.ExecuteBufferedAsync(token); EphResult result = EphResult.FromString(res.StandardOutput); result.Time = time; return ExeResult.Create(result, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } public static async Task> GetRange(string line1, string line2, DateTime time, int period, int times, CancellationToken token = default) { if (time == DateTime.MinValue) { throw new Exception("双行根推算星历异常,时间未指定"); } var etime = time.AddSeconds(period * times); var cli = Cli.Wrap(CliFile) .WithArguments(builder => { //builder.Add("-a", false).Add(line1, true); //builder.Add("-b", false).Add(line2, true); //builder.Add("-t", false).Add(DateTimeUtil.To1970s(time), false); //builder.Add("-p").Add(period); //builder.Add("-c").Add(times); builder.Add("range"); builder.Add(line1, true); builder.Add(line2, true); builder.Add(time.ToString("yyyyMMddHHmmss"), false); builder.Add(etime.ToString("yyyyMMddHHmmss"), false); builder.Add("-t").Add(period.ToString()); }); var res = await cli.ExecuteBufferedAsync(token); var ephResults = EphResult.FromListString(res.StandardOutput); return ExeResult.Create(ephResults, cli.Arguments, res.StartTime, res.ExitTime, res.ExitCode, res.StandardError); } } }