CfqUtil.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using CliWrap.Buffered;
  2. using Ips.Library.Basic;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Ips.DevAlgorithm
  9. {
  10. public static class CfqUtil
  11. {
  12. public static bool SetFreq(string freqAddr, double[] freqs, out string errMsg)
  13. {
  14. errMsg = "";
  15. using (SerialPortDevice spd = new SerialPortDevice(freqAddr))
  16. {
  17. if (!spd.Open())
  18. {
  19. errMsg = "打开串口失败!";
  20. return false;
  21. }
  22. var bpq = new CH4BPQ(spd);
  23. return bpq.SetFreqs(freqs, ref errMsg);
  24. }
  25. }
  26. public static bool SetFreqByCli(string cliPath, IEnumerable<SetCfqItem> setCfqList, out string errMsg, CancellationToken token = default)
  27. {
  28. errMsg = "";
  29. var cmd = CliWrap.Cli.Wrap(cliPath)
  30. .WithArguments(args =>
  31. {
  32. foreach (var item in setCfqList)
  33. {
  34. args.Add(item.CfqAddr, true).Add(Math.Abs(item.FreqPoint));
  35. }
  36. });
  37. var res = cmd.ExecuteBufferedAsync(token.LinkTimeout(20)).GetAwaiter().GetResult();
  38. if (res.StandardError.IsNotNullOrWhitespace())
  39. {
  40. errMsg = res.StandardError;
  41. return false;
  42. }
  43. return true;
  44. }
  45. }
  46. }