using Aitex.Core.Util; 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.Tasks; namespace athosSimulator.PreAligner { public class Rorze : SocketDeviceSimulator { private const string EOF = "\r"; private const char MSG_DELIMITER = ' '; private object _lock = new object(); private Regex catch_parameter = new Regex(@"(?<=oALN1.)(.*)"); //获得带参的 private Regex catch_head = new Regex(@"(.*)(?=\()");//获得不带参的 //private PeriodicJob _job; //1102 public Rorze(int port) : base(port, -1, EOF, MSG_DELIMITER) { Enable(); //_job = new PeriodicJob(500,OnTimer,$"RorzePA->{port}",true); } protected override void ProcessUnsplitMessage(string message) { lock (_lock) { if (catch_parameter.IsMatch(message)) { string message_parameter = catch_parameter.Match(message).Value; string reback_message = "aALN1."; //带参数 if (message_parameter.Contains("(")) { string head = catch_head.Match(message_parameter).Value; reback_message += $"{head}:"; } //不带参数 直接回aALN1.SHFT(132); else { reback_message += $"{message_parameter}:"; } OnWriteMessage(reback_message + EOF); } else { OnWriteMessage("数据格式错误" + EOF); } } } } }