| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | using System;using System.Threading;using MECF.Framework.Simulator.Core.Driver;namespace CyberX8_Simulator.Devices{    class EdwardsPumpMockLL : SerialPortDeviceSimulator    {        public enum SimEdwardsPumpStatus        {            Open,            Close,            OnLine,            OffLine,        }        public static SimEdwardsPumpStatus _simPumpStatus;        public static SimEdwardsPumpStatus _simPumpControlStatus;        private const string EOF = "\r\n";        private const char MSG_DELIMITER = ' ';        private const string MOCKUP_PORT = "COM25";        public EdwardsPumpMockLL() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)        {            _simPumpStatus = SimEdwardsPumpStatus.Close;            _simPumpControlStatus = SimEdwardsPumpStatus.OffLine;        }        protected override void ProcessUnsplitMessage(string message)        {            if (string.IsNullOrEmpty(message))                throw new ArgumentException("Hardware command message is invalid");            string[] strs = message.Split('\r');            string sRes = string.Empty;            foreach (var s2 in strs)            {                if (s2.Length < 1) continue;                switch (s2)                {                    case "/":                        strs = null;                        sRes = string.Empty;                        break;                    case "!C1":                        _simPumpControlStatus = SimEdwardsPumpStatus.OnLine;                        sRes = "ERR 0" + "\r\n";                        break;                    case "!C0":                        _simPumpControlStatus = SimEdwardsPumpStatus.OffLine;                        sRes = "ERR 0" + "\r\n";                        break;                    case "!P1":                        if(_simPumpControlStatus == SimEdwardsPumpStatus.OnLine)                        {                            _simPumpStatus = SimEdwardsPumpStatus.Open;                            sRes = "ERR 0" + "\r\n";                        }                        else                        {                            sRes = "ERR 5" + "\r\n";                        }                        break;                    case "!P2":                        if (_simPumpControlStatus == SimEdwardsPumpStatus.OnLine)                        {                            _simPumpStatus = SimEdwardsPumpStatus.Close;                            sRes = "ERR 0" + "\r\n";                        }                        else                        {                            sRes = "ERR 5" + "\r\n";                        }                        break;                    case "?P":                        if (_simPumpStatus == SimEdwardsPumpStatus.Open)                            sRes = "4" + "\r\n";                        else if (_simPumpStatus == SimEdwardsPumpStatus.Close)                            sRes = "0" + "\r\n";                        else                            sRes = "0" + "\r\n";                        break;                    case "?C":                        if (_simPumpControlStatus == SimEdwardsPumpStatus.OffLine)                            sRes = "0" + "\r\n";                        else if (_simPumpControlStatus == SimEdwardsPumpStatus.OnLine)                            sRes = "1" + "\r\n";                        else                            sRes = "0" + "\r\n";                        break;                    default:                        break;                }                OnWriteMessage(sRes);            }        }    }}
 |