STeamRFMatchConnection.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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.RFMatchs.STeam
  10. {
  11. public class STeamRFMatchMessage : BinaryMessage
  12. {
  13. public byte[] Data { get; set; }
  14. public string ErrorCode { get; set; }
  15. }
  16. public class STeamRFMatchConnection : SerialPortConnectionBase
  17. {
  18. private List<byte> _msgBuffer = new List<byte>();
  19. STeamRFMatch _device;
  20. public STeamRFMatchConnection(STeamRFMatch device, string portName, int baudRate = 115200, int dataBits = 8, Parity parity = Parity.None, StopBits stopBits = StopBits.One)
  21. : base(portName, baudRate, dataBits, parity, stopBits, "\r\n", false)
  22. {
  23. _device = device;
  24. }
  25. public override bool SendMessage(byte[] message)
  26. {
  27. return base.SendMessage(message);
  28. }
  29. protected override MessageBase ParseResponse(byte[] rawMessage)
  30. {
  31. STeamRFMatchMessage msg = new STeamRFMatchMessage();
  32. if (rawMessage == null || rawMessage.Length < 1)
  33. {
  34. return null;
  35. }
  36. _msgBuffer.AddRange(rawMessage);
  37. if (_msgBuffer[0] == 0x80 && _msgBuffer[1] == 0x1C && _msgBuffer[2] == 0x11)
  38. {
  39. msg.Data = _msgBuffer.Skip(_msgBuffer.IndexOf(0x04) + 3).Take(30).ToArray();
  40. }
  41. _msgBuffer.RemoveRange(0, rawMessage.Length);
  42. msg.IsComplete = true;
  43. return msg;
  44. }
  45. }
  46. }