| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | using System;using System.Threading;using MECF.Framework.Simulator.Core.Driver;using System.Threading.Tasks;namespace Venus_Simulator.Devices{    class AdTecGeneratorMockPMD : SerialPortDeviceSimulator    {        public enum GeneratorStatus        {            Unknown,            OFF,            ON,            ERROR        }        public static GeneratorStatus _simGeneratorStatus;        private const string EOF = "\r";        private const char MSG_DELIMITER = '_';        private const string MOCKUP_PORT = "COM49";            public AdTecGeneratorMockPMD() : base(MOCKUP_PORT, -1, EOF, MSG_DELIMITER)        {            _simGeneratorStatus = GeneratorStatus.Unknown;        }        protected  override void ProcessUnsplitMessage(string message)        {            if (string.IsNullOrEmpty(message))                throw new ArgumentException("Hardware command message is invalid");            string sRes = string.Empty;            if (message.Contains(EOF))            {                message = message.Remove(message.Length - 1);            }            string[] msgs = message.Split('\r');            foreach(string msg in msgs)            {                switch (msg)                {                    case "Q":                        if (_simGeneratorStatus == GeneratorStatus.ON)                        {                            sRes = "2010000 12345 00900 00100 45678\r";                        }                        else if (_simGeneratorStatus == GeneratorStatus.OFF)                        {                            sRes = "2000000 12345 00000 00000 45678\r";                        }                        break;                    case "G":                        _simGeneratorStatus = GeneratorStatus.ON;                        sRes = "\r";                        break;                    case "S":                        _simGeneratorStatus = GeneratorStatus.OFF;                        sRes = "\r";                        break;                    default:                        break;                }                Thread.Sleep(200);                sRes += "\r";                OnWriteMessage(sRes);            }        }    }}
 |