| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | using System;using System.Threading;using MECF.Framework.Simulator.Core.Driver;using Venus_Simulator.Instances;using Aitex.Core.RT.SCCore;using MECF.Framework.Common.SCCore;using MECF.Framework.Common.DataCenter;using Aitex.Core.Util;using System.IO;namespace Venus_Simulator.Devices{    class SMCChillerMock : SerialPortDeviceSimulator    {        public enum SMCChillerStatus        {            Open,            Close,        }        public static SMCChillerStatus _simPumpStatus;        private const string EOF = "\r\n";        private const char MSG_DELIMITER = ' ';        //private const string MOCKUP_PORT = "COM43";        public SMCChillerMock(string port) : base(port, -1, EOF, MSG_DELIMITER)        {            _simPumpStatus = SMCChillerStatus.Close;        }        protected override void ProcessUnsplitMessage(string message)        {            if (string.IsNullOrEmpty(message))                throw new ArgumentException("Hardware command message is invalid");            string[] separatingStrings = { EOF };            string[] msgs = message.Trim().Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);            foreach (var msg in msgs)            {                if(msg.StartsWith(":0106000B"))                {                    int temp = Convert.ToInt32(msg.Substring(9, 8), 16);                    Console.WriteLine($"Chiller Set Temp: {temp}");                    SetTemp(temp);                }                else if(msg.StartsWith(":0106000C0001"))                {                    _simPumpStatus = SMCChillerStatus.Open;                }                else if(msg.StartsWith(":0106000C0000"))                {                    _simPumpStatus = SMCChillerStatus.Close;                }            }                    }        void SetTemp(int temp)        {            string module;//= PortName == "COM43" ? "PMA" : "PMB";            switch (PortName)            {                case "COM43":                case "COM53":                    module = "PMA";                    break;                case "COM45":                    module = "PMB";                     break;                case "COM86":                    module = "PMC";                    break;                case "COM28":                    module = "PMD";                    break;                default:                    module = "PMB";                    break;            }                           double _OffsetTemp = SystemConfig.Instance.GetValue<double>($"{module}.Chiller.ChillerTemperatureOffset");            SimulatorSystem.Instance.SetCoolantOutletTemp(module, temp / 10 + (int)_OffsetTemp);        }    }}
 |