using CliWrap.Buffered; using Ips.Library.Basic; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.DevAlgorithm { public static class CfqUtil { public static bool SetFreq(string freqAddr, double[] freqs, out string errMsg) { errMsg = ""; using (SerialPortDevice spd = new SerialPortDevice(freqAddr)) { if (!spd.Open()) { errMsg = "打开串口失败!"; return false; } var bpq = new CH4BPQ(spd); return bpq.SetFreqs(freqs, ref errMsg); } } public static bool SetFreqByCli(string cliPath, IEnumerable setCfqList, out string errMsg, CancellationToken token = default) { errMsg = ""; var cmd = CliWrap.Cli.Wrap(cliPath) .WithArguments(args => { foreach (var item in setCfqList) { args.Add(item.CfqAddr, true).Add(Math.Abs(item.FreqPoint)); } }); var res = cmd.ExecuteBufferedAsync(token.LinkTimeout(20)).GetAwaiter().GetResult(); if (res.StandardError.IsNotNullOrWhitespace()) { errMsg = res.StandardError; return false; } return true; } } }