123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using Aitex.Core.Util;
- using MECF.Framework.Simulator.Core.Driver;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net.Http.Headers;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading;
- using System.Threading.Tasks;
- namespace Venus_Simulator.Devices
- {
- public class DETMSimulatorServer : SocketDeviceSimulator
- {
- private readonly Regex _check_load = new Regex(@"CHECK LOAD\s+(\d)+\s+(A|B)\s*");
- private readonly Regex _move_arm = new Regex(@"(PLACE|PICK)\s+(\d+)\s+ARM\s+(A|B)\s+(\w{4})\s*");
- private readonly Regex _move_wafer = new Regex(@"(PLACE|PICK)\s+(\d+)\s+ARM\s+(A|B)\s*");
- private readonly Regex _rq_arm = new Regex(@"(RQ)\s+(LOAD)\s+(ARM)\s*");
- private readonly Regex _rq_speed = new Regex(@"(RQ)\s+(MOTIONPARA)\s*");
- private readonly Regex _set_speed = new Regex(@"(SET)\s+(MOTIONPARA)\s*");
- private readonly Regex _store_speed = new Regex(@"(STORE)\s+(MOTIONPARA)\s*");
- private PeriodicJob _HwThread;
- private string WithWaferSpeed = "0300";
- private string NoWaferSpeed = "0300";
- public DETMSimulatorServer() : base(1103, -1, "\n", ' ')
- {
- _HwThread = new PeriodicJob(500, OnSendEvent, "honghuRobot", true);
- }
- private bool OnSendEvent()
- {
- return true;
- }
- protected override void ProcessUnsplitMessage(string str)
- {
- if (str.Contains("HOME") || str.Contains("GOTO") || str.Contains("XFER") || str.Contains("HALT"))
- {
- OnWriteMessage("_RDY");
- }
- if (_rq_speed.IsMatch(str))
- {
- switch (str.Split(' ')[2])
- {
- case "WITHWAFER":
- OnWriteMessage($"MOTIONPARA WITHWAFER SPDPCT ALL {WithWaferSpeed} 0100 0100");
- OnWriteMessage("_RDY");
- break;
- case "NOWAFER":
- OnWriteMessage($"MOTIONPARA NOWAFER SPDPCT ALL {NoWaferSpeed} 0100 0100");
- OnWriteMessage("_RDY");
- break;
- default:
- OnWriteMessage(str);
- OnWriteMessage($"_ERR 350");
- break;
- }
- }
- if (_set_speed.IsMatch(str))
- {
- switch (str.Split(' ')[2])
- {
- case "WITHWAFER":
- WithWaferSpeed = str.Split(' ')[5];
- OnWriteMessage(str);
- OnWriteMessage("_RDY");
- break;
- case "NOWAFER":
- NoWaferSpeed = str.Split(' ')[5];
- OnWriteMessage(str);
- OnWriteMessage("_RDY");
- break;
- default:
- OnWriteMessage(str);
- OnWriteMessage($"_ERR 350");
- break;
- }
- }
- if (_store_speed.IsMatch(str))
- {
- OnWriteMessage(str);
- OnWriteMessage("_RDY");
- }
- if (_rq_arm.IsMatch(str))
- {
- //OnWriteMessage(string.Format($"LOAD {arm} OFF"));
- //OnWriteMessage(string.Format($"CHECK LOAD"));
- OnWriteMessage("_RDY");
- }
- //if (str.Contains("RQ WAF_CEN DATA"))
- //{
- // string t = new Random().Next(0, 359).ToString().PadLeft(6, '0');
- // string r = new Random().Next(0, 50000).ToString().PadLeft(6, '0');
- // OnWriteMessage($"WAF_CEN RT 000000 000000 000000 000000 LFT 000000 000000 000000 000000 OFFSET {r} {t}");
- // OnWriteMessage("_RDY");
- //}
- if (_check_load.IsMatch(str))
- {
- Match result = _check_load.Match(str);
- string station = result.Groups[1].Value;
- string arm = result.Groups[2].Value;
- //OnWriteMessage(string.Format($"LOAD {arm} OFF"));
- //OnWriteMessage(string.Format($"CHECK LOAD"));
- OnWriteMessage("_RDY");
- }
- else if (_move_arm.IsMatch(str))
- {
- // @"(PLACE|PICK)\s+(\d+)\s+SLOT\s+(\d+)\s+ARM\s+(A|B)\s+(\w{4})\s+"
- Match result = _move_arm.Match(str);
- string operation = result.Groups[1].Value;
- string station = result.Groups[2].Value;
- string slot = result.Groups[3].Value;
- string arm = result.Groups[4].Value;
- string dir = result.Groups[5].Value;
- Thread.Sleep(6000);
- OnWriteMessage("_RDY");
- }
- else if (_move_wafer.IsMatch(str))
- {
- // @"(PLACE|PICK)\s+(\d+)\s+SLOT\s+(\d+)\s+ARM\s+(A|B)\s+"
- Match result = _move_wafer.Match(str);
- string operation = result.Groups[1].Value;
- string station = result.Groups[2].Value;
- string slot = result.Groups[3].Value;
- string arm = result.Groups[4].Value;
- Thread.Sleep(6000);
- OnWriteMessage("_RDY");
- }
- }
- }
- }
|