JelAlignerConnection.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO.Ports;
  4. using System.Linq;
  5. using System.Text;
  6. using Aitex.Core.RT.Log;
  7. using MECF.Framework.Common.Communications;
  8. namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.JelAligner
  9. {
  10. public class JelAlignerMessage : AsciiMessage
  11. {
  12. public string Data { get; set; }
  13. public string ErrorText { get; set; }
  14. }
  15. public class JelAlignerConnection : 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. public JelAlignerConnection(string portName, int baudRate = 9600, int dataBits = 8, Parity parity = Parity.None, StopBits stopBits = StopBits.One)
  21. : base(portName, baudRate, dataBits, parity, stopBits, "", true)
  22. {
  23. }
  24. public override bool SendMessage(byte[] message)
  25. {
  26. _lstCacheBuffer.Clear();
  27. return base.SendMessage(message);
  28. }
  29. public override bool SendMessage(string message)
  30. {
  31. _cachedBuffer = string.Empty;
  32. return base.SendMessage(message);
  33. }
  34. protected override MessageBase ParseResponse(string rawmsg)
  35. {
  36. _cachedBuffer += rawmsg;
  37. JelAlignerMessage msg = new JelAlignerMessage();
  38. if (_activeHandler == null)
  39. {
  40. _cachedBuffer = string.Empty;
  41. return msg;
  42. }
  43. if (_cachedBuffer == ">" && _activeHandler.GetType() != typeof(JelAlignerReadHandler))
  44. {
  45. msg.IsAck = true;
  46. msg.Data = _cachedBuffer.Replace(">", "").Replace("\r", "");
  47. _cachedBuffer = string.Empty;
  48. }
  49. else if (_cachedBuffer.Contains(">$") && _cachedBuffer.Contains("\r"))
  50. {
  51. msg.IsAck = true;
  52. msg.Data = _cachedBuffer.Replace(">", "").Replace("\r", "");
  53. _cachedBuffer = string.Empty;
  54. }
  55. else if (_cachedBuffer.Contains("\r"))
  56. {
  57. msg.IsAck = true;
  58. msg.Data = _cachedBuffer.Replace(">", "").Replace("\r", "");
  59. _cachedBuffer = string.Empty;
  60. }
  61. //else if (_cachedBuffer.Contains("\r"))
  62. //{
  63. // msg.IsAck = true;
  64. // msg.Data = rawmsg.Replace(">", "").Replace("\r", "");
  65. // _cachedBuffer = string.Empty;
  66. //}
  67. return msg;
  68. }
  69. }
  70. }