RorzeRobot751Connection.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Diagnostics;
  3. using System.Linq;
  4. using System.Net;
  5. using Aitex.Core.RT.Event;
  6. using Aitex.Core.RT.Log;
  7. using athosRT.tool;
  8. using MECF.Framework.Common.Communications;
  9. using EV = Aitex.Core.RT.Event.EV;
  10. using TCPPortConnectionBase = athosRT.tool.Comm.TCPPortConnectionBase;
  11. namespace athosRT.Modules.Robot
  12. {
  13. public class RorzeRobot751Connection : TCPPortConnectionBase
  14. {
  15. private RorzeRobot751 _robot;
  16. private string _address;
  17. public RorzeRobot751Connection(RorzeRobot751 robot, string ipaddress)
  18. : base(ipaddress)
  19. {
  20. _address = ipaddress;
  21. _robot = robot;
  22. }
  23. protected override MessageBase ParseResponse(string rawMessage)
  24. {
  25. LogObject.Info("Robot", $"Communication {_address} Receive {rawMessage.Replace("\r", "")}");
  26. RorzeRobot751Message rorzeRobot751Message = new RorzeRobot751Message();
  27. try
  28. {
  29. rorzeRobot751Message.RawMessage = rawMessage.Replace("\r", "");
  30. rorzeRobot751Message.IsAck = false;
  31. rorzeRobot751Message.IsComplete = false;
  32. rorzeRobot751Message.IsFormatError = false;
  33. rorzeRobot751Message.IsEvent = false;
  34. switch (rawMessage[0])
  35. {
  36. case 'a':
  37. rorzeRobot751Message.IsAck = true;
  38. rorzeRobot751Message.IsComplete = false;
  39. rorzeRobot751Message.Data = rawMessage.Split(';').LastOrDefault().Split('/');
  40. break;
  41. case 'n':
  42. rorzeRobot751Message.IsNak = true;
  43. rorzeRobot751Message.IsComplete = false;
  44. break;
  45. case 'c':
  46. rorzeRobot751Message.IsError = true;
  47. rorzeRobot751Message.IsComplete = false;
  48. break;
  49. case 'e':
  50. rorzeRobot751Message.IsEvent = true;
  51. rorzeRobot751Message.IsComplete = false;
  52. _robot.OnEventReceived(rawMessage);
  53. break;
  54. }
  55. return rorzeRobot751Message;
  56. }
  57. catch (Exception ex)
  58. {
  59. LOG.Write(ex, 2, "D:\\sorter\\trunk\\Efem\\Jet\\Jet_001_2P_Jet\\EfemRT\\Devices\\Rorze751\\RorzeRobot751Connection.cs", "ParseResponse", 76);
  60. rorzeRobot751Message.IsFormatError = true;
  61. return rorzeRobot751Message;
  62. }
  63. }
  64. protected override void OnEventArrived(MessageBase msg)
  65. {
  66. RorzeRobot751Message rorzeRobot751Message = msg as RorzeRobot751Message;
  67. if (rorzeRobot751Message.EvNo == "100")
  68. {
  69. string text = rorzeRobot751Message.EvData.Substring(1, rorzeRobot751Message.EvData.Length - 1);
  70. _robot.NotifyAlarmByErrorCode(text.ToUpper());
  71. if (Convert.ToInt32(text, 16) > 240)
  72. {
  73. _robot.OnError("Robot occurred error:" + rorzeRobot751Message.EvData + " on " + rorzeRobot751Message.EvDate + ".");
  74. }
  75. else
  76. {
  77. EV.PostWarningLog("Robot", "Robot occurred error:" + rorzeRobot751Message.EvData + " on " + rorzeRobot751Message.EvDate + ".");
  78. }
  79. }
  80. if (!(rorzeRobot751Message.EvNo == "140"))
  81. {
  82. }
  83. }
  84. protected override void ActiveHandlerProceedMessage(MessageBase msg)
  85. {
  86. //Trace.WriteLine("ActiveHandlerProceedMessage override");
  87. lock (_lockerActiveHandler)
  88. {
  89. //if (_activeHandler != null && (msg.IsFormatError || (_activeHandler.HandleMessage(msg, out var transactionComplete) && transactionComplete)))
  90. if (_activeHandler != null && (_activeHandler.HandleMessage(msg, out var transactionComplete) && transactionComplete))
  91. {
  92. _activeHandler = null;
  93. }
  94. }
  95. }
  96. }
  97. }