using MECF.Framework.Simulator.Core.Driver; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace athosSimulator.LoadPort { public class Hirata : SerialPortDeviceSimulator { //public GeneratorStatus _simGeneratorStatus; private string _mapStr = "1111111111111111111111111"; public string MapStr { set { _mapStr = value; } } private const string EOF = "\r"; private const char MSG_DELIMITER = ' '; private object _lock = new object(); public Hirata(string portname) : base(portname, -1, EOF, MSG_DELIMITER) { } public override bool IsEnabled => base.IsEnabled; public override bool IsConnected => base.IsConnected; public override bool Equals(object obj) { return base.Equals(obj); } public override int GetHashCode() { return base.GetHashCode(); } public override string ToString() { return base.ToString(); } //走这里 protected override void ProcessUnsplitMessage(string command) { //if (command.Contains(EOF)) //{ // char eof= EOF.ToCharArray()[0]; // string[] sstr= command.Split(eof); //} //else lock(_lock) { if (command.Contains("SET:")) { //直接返回一样的 OnWriteMessage(command); } if (command.Contains("GET:")) { if (command.Contains("STAS")) { OnWriteMessage("0000GET:STAS/00100010101000000000;**"+ EOF); } if (command.Contains("MAPR")) { //全空 //OnWriteMessage("0000GET:MAPR/00000000000000000000000000;**"+ EOF); //全有 OnWriteMessage($"0000GET:MAPR/{_mapStr};**"+ EOF); } } if (command.Contains("MOV:")) { OnWriteMessage(command); Thread.Sleep(6000); OnWriteMessage(command.Replace("MOV", "INF")); } } } protected override void ProcessUnsplitMessage(byte[] message) { string command = string.Empty; foreach (byte _ch in message) { //当不是截断符时 if (_ch.ToString() != EOF) { command += _ch.ToString(); } else { command += _ch.ToString(); if (command.Contains("SET")) { //直接返回一样的 OnWriteMessage(command); } if (command.Contains("GET")) { if (command.Contains("STAS")) { OnWriteMessage("0000GET:STAS/00100010101000000000;**"); } if (command.Contains("MAPR")) { OnWriteMessage("0000GET:MAPR/00000000000000000000000000;**"); } } if (command.Contains("MOV")) { OnWriteMessage(command); command.Replace("MOV","INF"); Thread.Sleep(6000); OnWriteMessage(command); } command = string.Empty; } } } protected override void AddCommandHandler(string command, Action handler) { base.AddCommandHandler(command, handler); } protected override void CommandNotRecognized(string msg) { base.CommandNotRecognized(msg); } protected override void OnErrorMessage(string message) { base.OnErrorMessage(message); } protected override void ProcessWriteMessage(string msg) { base.ProcessWriteMessage(msg); } protected override void ProcessWriteMessage(byte[] msg) { base.ProcessWriteMessage(msg); } /// /// Set Simulator wafer map /// public void SetMapStr(string str) { } } }