FuqiAlignerConnection.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Aitex.Core.RT.Log;
  2. using MECF.Framework.Common.Communications;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO.Ports;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.HonghuAligners
  10. {
  11. public class FuqiAlignerMessage : AsciiMessage
  12. {
  13. public string Data { get; set; }
  14. }
  15. public class FuqiAlignerMessageBIN : BinaryMessage
  16. {
  17. public byte[] CMD { get; set; }
  18. public byte[] Data { get; set; }
  19. }
  20. public class FuqiAlignerConnection : SerialPortConnectionBase
  21. {
  22. private List<byte> _lstCacheBuffer = new List<byte>();
  23. public FuqiAlignerConnection(string portName, int baudRate = 9600, int dataBits = 8, Parity parity = Parity.None, StopBits stopBits = StopBits.One)
  24. : base(portName, baudRate, dataBits, parity, stopBits, "\r", false)
  25. {
  26. }
  27. public override bool SendMessage(byte[] message)
  28. {
  29. _lstCacheBuffer.Clear();
  30. return base.SendMessage(message);
  31. }
  32. protected override MessageBase ParseResponse(byte[] rawBuffer)
  33. {
  34. _lstCacheBuffer.AddRange(rawBuffer);
  35. byte[] temps = _lstCacheBuffer.ToArray();
  36. FuqiAlignerMessageBIN msg = new FuqiAlignerMessageBIN();
  37. msg.IsResponse = false;
  38. msg.RawMessage = _lstCacheBuffer.ToArray();
  39. if (temps.Last() == 0xA)
  40. {
  41. _lstCacheBuffer.Clear();
  42. msg.IsResponse = true;
  43. msg.CMD = temps;
  44. }
  45. return msg;
  46. }
  47. }
  48. }