| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- using System;
 
- using System.ServiceModel.Channels;
 
- using MECF.Framework.Simulator.Core.Driver;
 
- namespace Venus_Simulator.Devices
 
- {
 
-     class PendulumValveMockPMA : SerialPortDeviceSimulator
 
-     {
 
-         public enum PendulumValveStatus
 
-         {
 
-             Unknown,
 
-             OFF,
 
-             ON,
 
-             ERROR
 
-         }
 
-         private const string EOF = "\r";
 
-         private const char MSG_DELIMITER = '_';
 
-         private const string MOCKUP_PORT = "COM65";
 
-         private int _pressure = 120;
 
-         private int _position = 500;
 
-         private bool _bHold = false;
 
-         private Random _rd = new Random();
 
-         PendulumValveStatus _simPendulumValveStatus;
 
-         public PendulumValveMockPMA() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)
 
-         {
 
-             _simPendulumValveStatus = PendulumValveStatus.Unknown;
 
-         }
 
-         protected override void ProcessUnsplitMessage(string message)
 
-         {
 
-             if (string.IsNullOrEmpty(message))
 
-                 throw new ArgumentException("Hardware command message is invalid");
 
-             var items = message.Split('\r');
 
-             foreach (var item in message.Split('\r'))
 
-             {
 
-                 if (item == "")
 
-                 {
 
-                     continue;
 
-                 }
 
-                 string item2= item + "\r";
 
-                 if (_bHold == false)
 
-                 {
 
-                     _pressure += _rd.Next(-10, 10);
 
-                     _position += _rd.Next(-50, 50);
 
-                 }
 
-                 if (_simPendulumValveStatus == PendulumValveStatus.OFF)
 
-                 {
 
-                     _position = 0;
 
-                 }
 
-                 string sRes = string.Empty;
 
-                 string str = item2.Trim();
 
-                 switch (str)
 
-                 {
 
-                     case "P:":
 
-                         sRes = string.Format("P:{0:D8}\r\n", _pressure);
 
-                         break;
 
-                     case "A:":
 
-                         sRes = string.Format("A:{0:D6}\r\n", _position);
 
-                         break;
 
-                     case "C:":
 
-                         _bHold = false;
 
-                         _simPendulumValveStatus = PendulumValveStatus.OFF;
 
-                         sRes = "C:\r\n";
 
-                         break;
 
-                     case "O:":
 
-                         _bHold = false;
 
-                         _simPendulumValveStatus = PendulumValveStatus.ON;
 
-                         sRes = "O:\r\n";
 
-                         break;
 
-                     case "H:":
 
-                         _bHold = true;
 
-                         sRes = "H:\r\n";
 
-                         break;
 
-                     case "i:30":
 
-                         string data = _simPendulumValveStatus == PendulumValveStatus.OFF ? "3" : "4";
 
-                         sRes = $"i:301{data}100000\r\n";
 
-                         break;
 
-                     default:
 
-                         {
 
-                             if (str.Contains("S:"))
 
-                             {
 
-                                 int pressure;
 
-                                 if (int.TryParse(str.Substring(2, 8), out pressure))
 
-                                 {
 
-                                     _pressure = pressure;
 
-                                 }
 
-                                 _bHold = false;
 
-                                 sRes = "S:\r\n";
 
-                             }
 
-                             else if (str.StartsWith("R:"))
 
-                             {
 
-                                 int position;
 
-                                 if (int.TryParse(str.Substring(2, 6), out position))
 
-                                 {
 
-                                     _position = position;
 
-                                 }
 
-                                 _bHold = false;
 
-                                 sRes = "R:\r\n";
 
-                             }
 
-                             else
 
-                                 return;
 
-                         }
 
-                         break;
 
-                 }
 
-                 OnWriteMessage(sRes);
 
-             }
 
-           
 
-         }
 
-     }
 
- }
 
 
  |