| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | using MECF.Framework.Simulator.Core.Driver;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading;using System.Threading.Tasks;namespace Venus_Simulator.Devices{    public class VceSimulator : SerialPortDeviceSimulator    {        private const string EOF = "\r";        private const char MSG_DELIMITER = ' ';        private const string VCE_Port = "COM161";        private Regex _action_rule = new Regex(@"\d\d,A,.*");        private Regex _read_rule = new Regex(@"\d\d,R,.*");        private Regex _set_rule = new Regex(@"\d\d,S,.*");        private Regex _curing_rule = new Regex(@"\d\d,P,.*");        public VceSimulator() : base(VCE_Port, -1, EOF, MSG_DELIMITER)        {        }        protected override void ProcessUnsplitMessage(string message)        {            if (string.IsNullOrEmpty(message))                throw new ArgumentException("Hardware command message is invalid");            if (message.Contains(EOF))            {                message = message.Trim();            }            if (_action_rule.IsMatch(message) || _set_rule.IsMatch(message) || _curing_rule.IsMatch(message))            {                OnWriteMessage("_RDY" + EOF);                Thread.Sleep(2000);                OnWriteMessage("_BKGRDY" + EOF);                return;            }            if (_read_rule.IsMatch(message))            {                switch (message)                {                    case "00,R,MI":                        OnWriteMessage("00,X,MI,1,0,A,3,0,0,0,0,0,0" + EOF);                        Thread.Sleep(2000);                        OnWriteMessage("_RDY" + EOF);                        return;                    case "00,R,MI,S":                        OnWriteMessage("00,X,MI,XXXXXXXXXX,XXXXXXXXXX,XXXXX?????,??????????" + EOF);                        //OnWriteMessage("00,X,MI,0000000000,0000000000,XXXXX?????,??????????" + EOF);                        Thread.Sleep(2000);                        OnWriteMessage("_RDY" + EOF);                        return;                    default:                        return;                }            }            //string[] strs = message.Split(MSG_DELIMITER);            //Thread.Sleep(2 * 1000);        }    }}
 |