public InspectService( CoreConfig coreConfig, CancellationToken token) : base(coreConfig.InspectorPort, token) { _stat = EStatCommand.None; _mat = null; _coreConfig = coreConfig; _logger = LogManager.GetCurrentClassLogger(); }
//Modify.changhyun_an.2021.05.27.result request add.end... private void SendStat(EStatCommand command, EStatCode code) { if (_client == null) { return; } string message = string.Format("{0},{1},{2}\r", EMachineCommand.Stat, command, (int)code); byte[] buff = Encoding.ASCII.GetBytes(message); var stream = _client.GetStream(); stream.Write(buff, 0, buff.Length); }
private void GrabDone() { _grabService.ImageGrabbed -= ImageGrabbed; _grabService.GrabDone -= GrabDone; _lightControlService.LightOff(); if (_coreConfig.UseInspector) { var result = _inspectionCommService.Inspect(_grabInfos, _wafer, new CancellationToken()); SendResult(EMachineCommand.Result, result); } else { SendResult(EMachineCommand.Result, new InspectResult(EJudgement.SKIP, null, null, null)); } _stat = EStatCommand.Ready; }
private EStatCommand GetStat(CancellationToken token) { if (_client == null) { return(EStatCommand.None); } _stat = EStatCommand.None; byte[] buff = Encoding.ASCII.GetBytes("Get_stat"); var stream = _client.GetStream(); stream.Write(buff, 0, buff.Length); while (token.IsCancellationRequested == false) { if (_stat != EStatCommand.None) { break; } } return(_stat); }
//Modify.ach.20210601.Camera 결과값 변수 추가.end... public HostCommService( InspectService inspectionCommService, GrabService grabService, LightControlService lightControlService, AppState appState, CoreConfig coreConfig, CancellationToken token) : base(coreConfig.HostPort, token) { _stat = EStatCommand.Ready; _inspectionCommService = inspectionCommService; _grabService = grabService; _lightControlService = lightControlService; _appState = appState; _coreConfig = coreConfig; _grabInfos = new List <GrabInfo>(); //_token = token; //_logger = LogManager.GetCurrentClassLogger(); }
protected override async Task DataRecived(string data) { var messages = data.Split(','); if (messages.Length == 0) { return; } //Get_Stat if (messages.First() == "Stat" && messages.Length == 3) { var command = (EStatCommand)Enum.Parse(typeof(EStatCommand), messages[1]); _stat = command; return; } //결과값 조건 수정해야함. if (messages.Length > 5) { Resultmessages = data; readyflag = 0; return; } //throw new NotImplementedException(); }
//public bool IsConnected() //{ // return _client != null && _client.Connected; //} //public async Task Connect() //{ // try // { // _listener = new TcpListener(IPAddress.Any, _coreConfig.HostPort); // _listener.Start(); // while (_token.IsCancellationRequested == false) // { // _client = await _listener.AcceptTcpClientAsync().ConfigureAwait(false); // await Task.Factory.StartNew(AsyncTcpProcess, this); // } // } // catch (Exception e) // { // _logger.Error(e); // } //} //public bool Disconnect() //{ // if (_listener == null) // return false; // _listener.Stop(); // _listener = null; // return true; //} //private async static void AsyncTcpProcess(object o) //{ // var service = (HostCommService)o; // var client = service._client; // NetworkStream stream = client.GetStream(); // try // { // while (_token.IsCancellationRequested == false) // { // var buff = new byte[1024]; // var nbytes = await stream.ReadAsync(buff, 0, buff.Length).ConfigureAwait(false); // if (nbytes > 0) // { // string message = Encoding.ASCII.GetString(buff, 0, nbytes); // await service.DataRecived(message).ConfigureAwait(false); // } // } // } // catch (Exception e) // { // service._logger.Error(e); // } // finally // { // stream.Close(); // client.Close(); // } //} protected override async Task DataRecived(string data) { //if (_appState.IsAutoEnabled == false // || _coreConfig.UseHost == false) // return; //if (_appState.IsManualEnabled == false // && _appState.IsGrabEnabled == true) //{ // Send(EMachineCommand.Error, EMachineMassage.Comm); // return; //} var index = data.IndexOf('\r'); if (index < 0 || index > data.Length) { //Send(EMachineCommand.D:\Project\KT_Interface\KT_Interface.Core\Services\HostCommService.csError, EMachineMassage.Invalid); _logger.Error("Invalid Command"); return; } var message = new string(data.Take(index).ToArray()); var messages = message.Split(','); EHostCommand command; if (Enum.TryParse(messages.First(), out command) == false) { _logger.Error("Invalid Command"); //Send(EMachineCommand.Error, EMachineMassage.Invalid); return; } switch (command) { case EHostCommand.Get_stat: SendStat(_stat, EStatCode.None); break; case EHostCommand.Start1: Send(EMachineCommand.Ack, EMachineMassage.Comm, "Start1"); _stat = EStatCommand.Busy; _wafer = messages[1]; _grabInfos.Clear(); //_lightControlService.LightOn(); //Modify.changhyun_an.2021.05.27.Insert Grab Delay Code.Start... Thread.Sleep(300); //Modify.changhyun_an.2021.05.27.Insert Grab Delay Code.End... _grabService.ImageGrabbed += ImageGrabbed; _grabService.GrabDone += GrabDone; _grabService.StartGrab(_coreConfig.GrabCount); break; case EHostCommand.Start2: Send(EMachineCommand.Ack, EMachineMassage.Comm, "Start2"); SendResult(EMachineCommand.Result, new InspectResult(EJudgement.Fail, null, null, null)); break; case EHostCommand.Stop: _stat = EStatCommand.Ready; //ach test Thread.Sleep(1000); Send(EMachineCommand.Ack, EMachineMassage.Comm, "Stop"); //_stat = EStatCommand.Ready; //_grabService.Stop(); //_lightControlService.LightOff(); //if (_lightControlService.LightOff() == false) //{ // //Send(EMachineCommand.Error, EMachineMassage.Light); // return; //} //Send(EMachineCommand.Ack); break; case EHostCommand.Req_result: _stat = EStatCommand.Ready; SendReqResult(); break; } }