JelC5000RobotFlippeConnection.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Collections.Generic;
  2. using System.IO.Ports;
  3. using System.Linq;
  4. using System.Text;
  5. using Aitex.Core.RT.Log;
  6. using MECF.Framework.Common.Communications;
  7. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase;
  8. namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.JEL
  9. {
  10. public class JelC5000RobotFlippeMessage : AsciiMessage
  11. {
  12. public string Data { get; set; }
  13. public string ErrorText { get; set; }
  14. }
  15. public class JelC5000RobotFlippeConnection : SerialPortConnectionBase
  16. {
  17. //private bool _isAckMode = false;//should read from config file
  18. private string _cachedBuffer = string.Empty;
  19. private List<byte> _lstCacheBuffer = new List<byte>();
  20. private RobotBaseDevice m_Robot;
  21. public JelC5000RobotFlippeConnection(RobotBaseDevice robot, string portName, int baudRate = 9600, int dataBits = 8, Parity parity = Parity.None, StopBits stopBits = StopBits.One)
  22. : base(portName, baudRate, dataBits, parity, stopBits,"", true)
  23. {
  24. m_Robot = robot;
  25. }
  26. public override bool SendMessage(byte[] message)
  27. {
  28. _lstCacheBuffer.Clear();
  29. return base.SendMessage(message);
  30. }
  31. public override bool SendMessage(string message)
  32. {
  33. _cachedBuffer = string.Empty;
  34. while (m_Robot.CommandMessages.Count > 50)
  35. m_Robot.CommandMessages.RemoveLast();
  36. m_Robot.CommandMessages.AddFirst($"Send:{message.Replace("\r","")}");
  37. return base.SendMessage(message);
  38. }
  39. protected override MessageBase ParseResponse(string rawmsg)
  40. {
  41. _cachedBuffer += rawmsg;
  42. JelC5000RobotFlippeMessage msg = new JelC5000RobotFlippeMessage();
  43. if (_cachedBuffer == ">")
  44. {
  45. msg.IsAck = true;
  46. msg.Data = _cachedBuffer.Replace(">", "").Replace("\r", "");
  47. while (m_Robot.CommandMessages.Count > 50)
  48. m_Robot.CommandMessages.RemoveLast();
  49. m_Robot.CommandMessages.AddFirst($"Received:{_cachedBuffer.Replace("\r", "")}");
  50. _cachedBuffer = string.Empty;
  51. }
  52. else if(_cachedBuffer.Contains("\r"))
  53. {
  54. msg.IsAck = true;
  55. msg.IsResponse = true;
  56. msg.Data = _cachedBuffer.Replace(">", "").Replace("\r", "");
  57. while (m_Robot.CommandMessages.Count > 50)
  58. m_Robot.CommandMessages.RemoveLast();
  59. m_Robot.CommandMessages.AddFirst($"Received:{_cachedBuffer.Replace("\r", "")}");
  60. _cachedBuffer = string.Empty;
  61. }
  62. //else if(_cachedBuffer.Contains("\r"))
  63. //{
  64. // msg.IsAck = true;
  65. // msg.Data = rawmsg.Replace(">", "").Replace("\r", "");
  66. // _cachedBuffer = string.Empty;
  67. //}
  68. return msg;
  69. }
  70. }
  71. }