1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using System;
- using MECF.Framework.Simulator.Core.Driver;
- namespace Venus_Simulator.Devices
- {
- class ESCHVMockPMD : SerialPortDeviceSimulator
- {
- public enum EscHvStatus
- {
- Unknown,
- OFF,
- ON,
- ERROR
- }
- private const string EOF = "\r";
- private const char MSG_DELIMITER = '_';
- private const string MOCKUP_PORT = "COM55";
- 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 ESCHVMockPMD() : 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);
- }
- }
- }
|