using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using CliWrap; using Ips.Library.Basic; using Ips.Library.Entity; namespace Ips.Library.LocLib { public static class XdcUtil { static readonly string CliFile = Path.Combine(IpsPath.CliRootDir, "xdc", "xdc.exe"); public static async Task ExecuteAsync(string fileIn, string fileOut, double fs, XdcItem[] items, int th = 6, CancellationToken token = default) { var len = items.Length; var ffcs = new double[len]; var bws = new double[len]; var mods = new ModuType[len]; for (int i = 0; i < len; i++) { var item = items[i]; ffcs[i] = item.Ffc; bws[i] = item.BandWidth; mods[i] = item.ModuType; } var cli = Cli.Wrap(CliFile) .WithArguments(args => { args.Add(fileIn, true); args.Add(fileOut, true); args.Add(fs); args.Add("--ffcs").Add(ffcs.JoinAsString(" "), false); args.Add("--bws").Add(bws.JoinAsString(" "), false); args.Add("--mods").Add(mods.Select(m => m.ToString("d")).JoinAsString(" "), false); args.Add("--th").Add(th); }); var resCmd = await cli.ExecuteAsync(token); return resCmd; } } public class XdcItem { public XdcItem() { } /// /// 同频对消参数 /// /// 频偏(MHz) /// 信号带宽(MHz) /// 调制方式 public XdcItem(double ffc, double bandWidth, ModuType moduType) { Ffc = ffc; BandWidth = bandWidth; ModuType = moduType; } /// /// 频偏(MHz) /// public double Ffc { get; set; } /// /// 信号带宽(MHz) /// public double BandWidth { get; set; } /// /// 调制方式 /// public ModuType ModuType { get; set; } } }