Rorze.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Aitex.Core.Util;
  2. using MECF.Framework.Simulator.Core.Driver;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Threading.Tasks;
  9. namespace athosSimulator.PreAligner
  10. {
  11. public class Rorze : SocketDeviceSimulator
  12. {
  13. private const string EOF = "\r";
  14. private const char MSG_DELIMITER = ' ';
  15. private object _lock = new object();
  16. private Regex catch_parameter = new Regex(@"(?<=oALN1.)(.*)"); //获得带参的
  17. private Regex catch_head = new Regex(@"(.*)(?=\()");//获得不带参的
  18. //private PeriodicJob _job;
  19. //1102
  20. public Rorze(int port) : base(port, -1, EOF, MSG_DELIMITER)
  21. {
  22. Enable();
  23. //_job = new PeriodicJob(500,OnTimer,$"RorzePA->{port}",true);
  24. }
  25. protected override void ProcessUnsplitMessage(string message)
  26. {
  27. lock (_lock)
  28. {
  29. if (catch_parameter.IsMatch(message))
  30. {
  31. string message_parameter = catch_parameter.Match(message).Value;
  32. string reback_message = "aALN1.";
  33. //带参数
  34. if (message_parameter.Contains("("))
  35. {
  36. string head = catch_head.Match(message_parameter).Value;
  37. reback_message += $"{head}:";
  38. }
  39. //不带参数 直接回aALN1.SHFT(132);
  40. else
  41. {
  42. reback_message += $"{message_parameter}:";
  43. }
  44. OnWriteMessage(reback_message + EOF);
  45. }
  46. else
  47. {
  48. OnWriteMessage("数据格式错误" + EOF);
  49. }
  50. }
  51. }
  52. }
  53. }