12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using MECF.Framework.Simulator.Core.Driver;
- using System.Linq;
- namespace Venus_Simulator.Devices
- {
- class TurboPumpMockPMA : SerialPortDeviceSimulator
- {
- public enum TurboPumpStatus
- {
- Unknown,
- OFF,
- ON,
- ERROR
- }
- private readonly byte PUMP_ON_FLAG = 0x02;
- private readonly byte RESERVE_FLAG = 0x80;
- private readonly byte ISO_VALVE_OPEN_FLAG = 0x01;
- private readonly byte WATER_VALVE_OEPN_FLAG = 0x08;
- private readonly byte VALVE_AT_SPEED_FLAG = 0x40;
- private byte pumpStatus
- {
- get
- {
- return (byte)((_simTurboPumpStatus == TurboPumpStatus.ON ? PUMP_ON_FLAG : 0) + RESERVE_FLAG);
- }
- }
- private byte valveStatus
- {
- get
- {
- return (byte)(ISO_VALVE_OPEN_FLAG + WATER_VALVE_OEPN_FLAG + VALVE_AT_SPEED_FLAG + RESERVE_FLAG);
- }
- }
- private const string EOF = "\r";
- private const char MSG_DELIMITER = '_';
- private const string MOCKUP_PORT = "COM61";
- private int _speed = 200;
- private int _temperature = 80;
- private Random _rd = new Random();
- TurboPumpStatus _simTurboPumpStatus;
- public TurboPumpMockPMA() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)
- {
- _simTurboPumpStatus = TurboPumpStatus.Unknown;
- }
- protected override void ProcessUnsplitMessage(string message)
- {
- if (string.IsNullOrEmpty(message))
- throw new ArgumentException("Hardware command message is invalid");
- string sRes = string.Empty;
- string str = message.Trim();
- if (str.Contains("STA"))
- {
- if(_simTurboPumpStatus == TurboPumpStatus.ON)
- {
- _speed = 200;
- }
- else
- {
- _speed = 0;
- }
- string strData = string.Format("#000,000,{0:D5},000,000,000,000,000,00,00000,{1:D3},099,0123456789012345678901234\r", _speed + _rd.Next(0, 5), _temperature + _rd.Next(-5, 5));
- byte[] byteArray = System.Text.Encoding.Default.GetBytes(strData);
- byteArray[6] = pumpStatus;
- byteArray[7] = valveStatus;
- OnWriteMessage(byteArray);
- return;
- }
- else if (str.Contains("TMPON"))
- {
- sRes = "#000,OK\r";
- _simTurboPumpStatus = TurboPumpStatus.ON;
- }
- else if (str.Contains("TMPOFF"))
- {
- sRes = "#000,OK\r";
- _simTurboPumpStatus = TurboPumpStatus.OFF;
- }
- else
- return;
- OnWriteMessage(sRes);
- }
- }
- }
|