RejeSMIF.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using MECF.Framework.Simulator.Core.Driver;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Timers;
  9. namespace MECF.Framework.Simulator.Core.SMIFs.RejeSMIF
  10. {
  11. public class RejeSMIF : SerialPortDeviceSimulator
  12. {
  13. public bool Failed { get; set; }
  14. public bool IsOn { get; set; }
  15. public bool IsHalo { get; set; }
  16. public bool IsContinueAck { get; set; }
  17. Stopwatch _timer = new Stopwatch();
  18. private System.Timers.Timer _tick;
  19. Random _rd = new Random();
  20. private object _locker = new object();
  21. public string ResultValue { get; set; }
  22. public RejeSMIF(string port)
  23. : base(port, -1, "\r", ' ', true)
  24. {
  25. ResultValue = "";
  26. _tick = new System.Timers.Timer();
  27. _tick.Interval = 200;
  28. _tick.Elapsed += _tick_Elapsed;
  29. _tick.Start();
  30. //Failed = true;
  31. }
  32. private void _tick_Elapsed(object sender, ElapsedEventArgs e)
  33. {
  34. lock (_locker)
  35. {
  36. if (_timer.IsRunning && _timer.Elapsed > TimeSpan.FromSeconds(10))
  37. {
  38. _timer.Stop();
  39. }
  40. }
  41. }
  42. List<byte> _cached = new List<byte>();
  43. //private int _mode;
  44. //private int _powerSetPoint;
  45. protected override void ProcessUnsplitMessage(string message)
  46. {
  47. string startchar = "s";
  48. string adrchar = "00";
  49. string endchar = "\r";
  50. string responseAck = "ACK:";
  51. string responseINF = "INF:";
  52. //string responseNAK = "NAK";
  53. string responseABS = "ABS";
  54. string command = "";
  55. if (message.Contains("MOD") || message.Contains("MOV") || message.Contains("SET"))
  56. {
  57. if (message.Contains(":"))
  58. {
  59. command = message.Split(':')[1].Replace(";", "").Replace("\r", "");
  60. }
  61. if (!Failed)
  62. {
  63. OnWriteMessage(string.Format("{0}{1}{2}{3}{4}", startchar, adrchar, responseAck, command, endchar));
  64. OnWriteMessage(string.Format("{0}{1}{2}{3}{4}", startchar, adrchar, responseINF, command, endchar));
  65. }
  66. else
  67. {
  68. //OnWriteMessage(string.Format("{0}{1}{2}{3}/{4}{5}", startchar, adrchar, responseNAK, command, "CBUSY", endchar));
  69. OnWriteMessage(string.Format("{0}{1}{2}{3}/{4}{5}", startchar, adrchar, responseABS, command, "ZDALM", endchar));
  70. }
  71. }
  72. else
  73. {
  74. command = message.Split(':')[1].Replace(";", "").Replace("\r", "");
  75. if (message.Contains("GET"))
  76. {
  77. if (!Failed)
  78. {
  79. if (message.Contains("STATE"))
  80. {
  81. //OnWriteMessage(string.Format("{0}{1}{2}{3}/00001000000000000000;{4}", startchar, adrchar, responseAck, command, endchar));
  82. OnWriteMessage(string.Format("{0}{1}{2}{3}/00000000000000000000;{4}", startchar, adrchar, responseAck, command, endchar));
  83. }
  84. if (message.Contains("VERSN"))
  85. {
  86. OnWriteMessage(string.Format("{0}{1}{2}{3}/Ver.19/12/1.0.0.01;{4}", startchar, adrchar, responseAck, command, endchar));
  87. }
  88. if (message.Contains("MAPRD"))
  89. {
  90. OnWriteMessage(string.Format("{0}{1}{2}{3}0000000000000000000000000;{4}", startchar, adrchar, responseAck, command, endchar));
  91. }
  92. if (message.Contains("WTY"))
  93. {
  94. OnWriteMessage(string.Format("{0}{1}{2}{3}/S25/P0000/M0000/N0000/G0000;{4}", startchar, adrchar, responseAck, command, endchar));
  95. }
  96. if (message.Contains("THICK"))
  97. {
  98. OnWriteMessage(string.Format("{0}{1}{2}{3}0000000000000000000000000;{4}", startchar, adrchar, responseAck, command, endchar));
  99. }
  100. if (message.Contains("JZPOS"))
  101. {
  102. OnWriteMessage(string.Format("{0}{1}{2}{3}/0;{4}", startchar, adrchar, responseAck, command, endchar));
  103. }
  104. if (message.Contains("HMPOS"))
  105. {
  106. OnWriteMessage(string.Format("{0}{1}{2}{3}/0;{4}", startchar, adrchar, responseAck, command, endchar));
  107. }
  108. }
  109. else
  110. {
  111. OnWriteMessage(string.Format("{0}{1}{2}{3}/{4}{5}", startchar, adrchar, responseABS, command, "ZDALM", endchar));
  112. }
  113. }
  114. }
  115. }
  116. }
  117. }