KITZTConnection.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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.Text.RegularExpressions;
  9. using System.Threading.Tasks;
  10. namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.ThrottleValves.KITZ
  11. {
  12. public class KITZMessage : AsciiMessage
  13. {
  14. public string Command { get; set; }
  15. public string Parameter { get; set; }
  16. }
  17. public class KITZConnection : SerialPortConnectionBase
  18. {
  19. public KITZConnection(string portName) : base(portName,115200, 8, Parity.None, StopBits.One, "\r")
  20. {
  21. }
  22. protected override MessageBase ParseResponse(string rawText)
  23. {
  24. KITZMessage msg = new KITZMessage();
  25. msg.IsResponse = false;
  26. msg.IsAck = false;
  27. msg.IsComplete = false;
  28. msg.RawMessage = rawText.Replace("\r", "").Replace("\n", "");
  29. if(string.IsNullOrEmpty(msg.RawMessage) || !msg.RawMessage.Contains(":"))
  30. {
  31. LOG.Error($"text length check failed, " + rawText);
  32. msg.IsFormatError = true;
  33. return msg;
  34. }
  35. string[] words = Regex.Split(msg.RawMessage, ":");
  36. msg.Command = words[0];
  37. if(words.Length > 1)
  38. msg.Parameter = words[1];
  39. msg.IsResponse = true;
  40. msg.IsAck = true;
  41. msg.IsComplete = true;
  42. return msg;
  43. }
  44. }
  45. }