Program.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 
  2. namespace Ips.Cfq.SetFreqBySerialPort.Cli
  3. {
  4. internal class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. if (args.Length == 0) return;
  9. List<SetFreqItem> setFreqItems = new List<SetFreqItem>();
  10. for (int i = 0; i < args.Length; i += 2)
  11. {
  12. string chAddr = args[i];
  13. var addrItems = chAddr.Split('-');
  14. string addr = addrItems[0];
  15. int.TryParse(addrItems[1], out int chNum);
  16. long.TryParse(args[i + 1], out long freqPoint);
  17. setFreqItems.Add(new SetFreqItem(addr, chNum, freqPoint));
  18. }
  19. if (setFreqItems.Count == 0) return;
  20. var devList = setFreqItems.GroupBy(m => m.Addr);
  21. foreach (var devItem in devList)
  22. {
  23. string errMsg = "";
  24. using (SerialPortDevice spd = new SerialPortDevice(devItem.Key))
  25. {
  26. if (!spd.Open())
  27. {
  28. errMsg = "打开串口失败!";
  29. }
  30. else
  31. {
  32. var bpq = new CH4BPQ(spd);
  33. bpq.SetFreqs(devItem.OrderBy(m => m.ChNum).Select(m => m.FreqPoint * 1e-6).ToArray(), ref errMsg);
  34. }
  35. }
  36. if (!string.IsNullOrWhiteSpace(errMsg))
  37. {
  38. Console.Error.WriteLine($"设置变频器【{devItem.Key}】失败,【{errMsg}】");
  39. }
  40. }
  41. }
  42. }
  43. }