EthernetRevtechMatch.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Concurrent;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using Aitex.Core.Common.DeviceData;
  8. using Aitex.Core.RT.DataCenter;
  9. using Aitex.Core.RT.Event;
  10. using Aitex.Core.RT.IOCore;
  11. using Aitex.Core.RT.Log;
  12. using Aitex.Core.RT.OperationCenter;
  13. using Aitex.Core.RT.SCCore;
  14. using Aitex.Core.RT.Tolerance;
  15. using Aitex.Core.Util;
  16. using MECF.Framework.Common.Communications;
  17. using MECF.Framework.Common.DataCenter;
  18. using MECF.Framework.Common.Device.Bases;
  19. using MECF.Framework.Common.Equipment;
  20. using VirgoCommon;
  21. using VirgoRT.Modules;
  22. namespace VirgoRT.Devices
  23. {
  24. public class EthernetRevtechMatch : RevtechMatch
  25. {
  26. private AsyncSocketDevice _socket;
  27. private string _address;
  28. public EthernetRevtechMatch(ModuleName mod, string name, string configName = "") : base(mod, name, configName)
  29. {
  30. _address = SC.GetStringValue($"{mod}.{(string.IsNullOrWhiteSpace(configName) ? name : configName)}.IPAddress");
  31. _socket = new AsyncSocketDevice(_address,"\n");
  32. _socket.OnDataChanged += new AsyncSocketDevice.MessageHandler(OnDataChanged);
  33. _socket.OnErrorHappened += _socket_OnErrorHappened;
  34. }
  35. public override bool Initialize()
  36. {
  37. base.Initialize();
  38. LOG.Info($"{Module} {Name} Revtech match address:[{_address}] connect");
  39. _socket?.Connect(_address);
  40. return true;
  41. }
  42. protected override void SendCmd(string str)
  43. {
  44. base.SendCmd(str);
  45. _socket?.Write(Encoding.ASCII.GetBytes(str + "\n"));
  46. }
  47. private void _socket_OnErrorHappened(ErrorEventArgsDevice args)
  48. {
  49. EV.PostAlarmLog(Module, $"{Module} {Name} Revtech Match error [{args.Reason}]");
  50. }
  51. private void OnDataChanged(byte[] obj)
  52. {
  53. try
  54. {
  55. string data = System.Text.Encoding.ASCII.GetString(obj);
  56. //if (data.Length < 10 && data.Length > 20)
  57. //{
  58. // return;
  59. //}
  60. string[] matchData = data.Split(new char[] { ',' });
  61. if (matchData.Length > 13)
  62. {
  63. if (matchData[0].Contains("MANUAL") || matchData[0].Contains("AUTO"))
  64. {
  65. WorkMode = matchData[0] == "MANUAL" ? EnumRfMatchTuneMode.Manual : EnumRfMatchTuneMode.Auto;
  66. TunePosition1 = Convert.ToSingle(matchData[8]);
  67. TunePosition2 = Convert.ToSingle(matchData[7]);
  68. VPP = (ushort)Convert.ToSingle(matchData[12]);
  69. DCBias = Convert.ToSingle(matchData[13]);
  70. }
  71. }
  72. }
  73. catch (Exception ex)
  74. {
  75. }
  76. }
  77. }
  78. }