| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- using System;
 
- using MECF.Framework.Simulator.Core.Driver;
 
- namespace Venus_Simulator.Devices
 
- {
 
-     class ESCHVMockPMA : SerialPortDeviceSimulator
 
-     {
 
-         public enum EscHvStatus
 
-         {
 
-             Unknown,
 
-             OFF,
 
-             ON,
 
-             ERROR
 
-         }
 
-         private const string EOF = "\r";
 
-         private const char MSG_DELIMITER = '_';
 
-         private const string MOCKUP_PORT = "COM63";
 
-         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 ESCHVMockPMA() : 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");
 
-             var items = message.Split('\r');
 
-             foreach (var item in message.Split('\r'))
 
-             {
 
-                 if (item == "")
 
-                 {
 
-                     continue;
 
-                 }
 
-                 string item2 = item + "\r";
 
-                 string sRes = "\r\n>";
 
-                 string str = item2.Trim();
 
-                 string operation = item2.Substring(0, 2);
 
-                 int data = 0;
 
-                 bool bHasValidateData = false;
 
-                 if (item2.Length > 2)
 
-                 {
 
-                     if (int.TryParse(item2.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);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |