public InspectService(
            CoreConfig coreConfig,
            CancellationToken token) : base(coreConfig.InspectorPort, token)
        {
            _stat = EStatCommand.None;
            _mat  = null;

            _coreConfig = coreConfig;
            _logger     = LogManager.GetCurrentClassLogger();
        }
Beispiel #2
0
        //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);
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        //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();
        }
Beispiel #7
0
        //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;
            }
        }