| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- using System;
 
- using MECF.Framework.Simulator.Core.Driver;
 
- namespace Venus_Simulator.Devices
 
- {
 
-     class ESCHVMockPMB : SerialPortDeviceSimulator
 
-     {
 
-         public enum EscHvStatus
 
-         {
 
-             Unknown,
 
-             OFF,
 
-             ON,
 
-             ERROR
 
-         }
 
-         private const string EOF = "\r";
 
-         private const char MSG_DELIMITER = '_';
 
-         private const string MOCKUP_PORT = "COM81";
 
-         private int _voltage = 120;
 
-         private int _current_limit = 20;
 
-         private int _up_ramp_time = 0;
 
-         private int _down_ramp_time = 0;
 
-         private Random _rd = new Random();
 
-         EscHvStatus _simEscHvStatus;
 
-         public ESCHVMockPMB() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)
 
-         {
 
-             _simEscHvStatus = EscHvStatus.ON;
 
-         }
 
-         protected override void ProcessUnsplitMessage(string message)
 
-         {
 
-             if (string.IsNullOrEmpty(message))
 
-                 throw new ArgumentException("Hardware command message is invalid");
 
-             string sRes = "\r\n>";
 
-             string str = message.Trim();
 
-             string operation = message.Substring(0, 2);
 
-             int data = 0;
 
-             bool bHasValidateData = false;
 
-             if(message.Length > 2)
 
-             {
 
-                 if (int.TryParse(message.Substring(2), out data))
 
-                 {
 
-                     bHasValidateData = true;
 
-                 }
 
-             }
 
-             switch (operation)
 
-             {
 
-                 case "SV":
 
-                     if (bHasValidateData) _voltage = data;
 
-                     break;
 
-                 case "SI:":
 
-                     if (bHasValidateData) _current_limit = data;
 
-                     break;
 
-                 case "P+":
 
-                     if (bHasValidateData) _up_ramp_time = data;
 
-                     break;
 
-                 case "P-":
 
-                     if (bHasValidateData) _down_ramp_time = data;
 
-                     break;
 
-                 case "RV":
 
-                     int out_valtage = _simEscHvStatus == EscHvStatus.ON ? _voltage + _rd.Next(-3, 5) : 0;
 
-                     sRes = string.Format("RV\r\n\r{0:D4}\n\r>", out_valtage);//$"{out_valtage}\n\r>";
 
-                     break;
 
-                 case "R+":
 
-                     //sRes = $"{_rd.Next(0, _current_limit)}\n\r>"
 
-                     sRes = string.Format("R+\r\n\r{0:D4}\n\r>", 2);
 
-                     break;
 
-                 case "R-":
 
-                     sRes = string.Format("R-\r\n\r{0:D4}\n\r>", 1);
 
-                     break;
 
-                 case "SB":
 
-                     sRes = string.Format("SB\r{0:D4}\n\r>", _simEscHvStatus == EscHvStatus.ON ? 4 : 0); //$"{(_simEscHvStatus == EscHvStatus.ON ? 4 : 0)}\r\n>";
 
-                     break;
 
-                 case "EV":
 
-                     _simEscHvStatus = EscHvStatus.ON;
 
-                     break;
 
-                 case "DV":
 
-                     _simEscHvStatus = EscHvStatus.OFF;
 
-                     break;
 
-             }
 
-             OnWriteMessage(sRes);
 
-         }
 
-     }
 
- }
 
 
  |