Beispiel #1
0
        public void RegolazioniLivello(HImage image, CancellationToken token, out ArrayList iconicList, out ElaborateResult result)
        {
            iconicList = new ArrayList();
            result     = new ElaborateResult();
            try
            {
                iconicList.Add(new Utilities.ObjectToDisplay(image));

                if (this.parametri.AbilitaControllo)
                {
                    double center = FindPositionBottle(image, this.parametri, false, ref iconicList);

                    bool errorLevelMin, errorLevelMax, errorEmpty;

                    result.Success = AnalisiLivello(image, this.parametri, center, true, out errorLevelMin, out errorLevelMax, out errorEmpty, ref iconicList);
                }
                else
                {
                    result.Success = true;
                }
            }
            catch (Exception)
            {
                result.Success = false;
            }
        }
        private void RaiseNewImageToDisplayEvent(ArrayList iconicVar, ElaborateResult result)
        {
            OnNewImageToDisplayDelegate del;

            lock (newImageEventLock)
            {
                del = OnNewImageToDisplay;
            }

            if (del != null)
            {
                del(iconicVar, result);
            }
        }
Beispiel #3
0
        private void ManageErrorImage(ArrayList iconicVarList, ElaborateResult result)
        {
            if (result.Success == false && Properties.Settings.Default.NumeroErrori > 0)
            {
                lock (lastErrorsLock)
                {
                    if (LastErrors.Count == Properties.Settings.Default.NumeroErrori)
                    {
                        LastErrors[Properties.Settings.Default.NumeroErrori - 1].Dispose();
                        LastErrors.RemoveAt(Properties.Settings.Default.NumeroErrori - 1);
                    }
                    Utilities.CacheErrorObject ceo = new Utilities.CacheErrorObject(iconicVarList, result);

                    if (Properties.Settings.Default.ErroriSuDisco)
                    {
                        //WriteErrorImageToDisk(ceo);
                        if (ceo != null && ceo.IconicVar != null && ceo.IconicVar.Count > 0 && ((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar is HImage)
                        {
                            HImage img = (((Utilities.ObjectToDisplay)ceo.IconicVar[0]).IconicVar as HImage).CopyImage();

                            Action actionSave = () =>
                            {
                                try
                                {
                                    WriteErrorImageToDisk(img);
                                }
                                catch (Exception ex)
                                {
                                    ExceptionManager.AddException(ex);
                                }
                            };

                            if (this.taskWriteErrorImageToDisk == null)
                            {
                                this.taskWriteErrorImageToDisk = Task.Run(actionSave);
                            }
                            else
                            {
                                this.taskWriteErrorImageToDisk = this.taskWriteErrorImageToDisk.ContinueWith(k => actionSave());
                            }
                        }
                    }

                    LastErrors.Insert(0, ceo);
                }
            }
        }
Beispiel #4
0
        private void RaiseNewImageToDisplayEvent(ArrayList iconicVar, ElaborateResult result)
        {
            //OnNewImageToDisplayDelegate del;

            //lock (newImageEventLock)
            //{
            //    del = OnNewImageToDisplay;
            //}

            //if (del != null)
            //{
            //    del(iconicVar, result);
            //}

            Action action = () =>
            {
                try
                {
                    OnNewImageToDisplayDelegate del;

                    lock (newImageEventLock)
                    {
                        del = OnNewImageToDisplay;
                    }

                    if (del != null)
                    {
                        del(iconicVar, result);
                    }
                }
                catch (Exception ex)
                {
                    ExceptionManager.AddException(ex);
                }
            };

            if (this.taskRaiseNewImageToDisplayEvent == null)
            {
                this.taskRaiseNewImageToDisplayEvent = Task.Run(action);
            }
            else
            {
                this.taskRaiseNewImageToDisplayEvent = this.taskRaiseNewImageToDisplayEvent.ContinueWith(k => action());
            }
        }
Beispiel #5
0
        public void WorkingControlloLivelloAlgorithm(HImage image, CancellationToken token, out ArrayList iconicList, out ElaborateResult result)
        {
            iconicList = new ArrayList();
            result     = new ElaborateResult();
            try
            {
                iconicList.Add(new Utilities.ObjectToDisplay(image));

                if (this.parametri == null)
                {
                    iconicList.Add(new Utilities.ObjectToDisplay(linguaMngr.GetTranslation("MSG_NO_RECIPE"), "red", 0, 0));
                    result.Success = true;
                }
                else
                {
                    if (this.parametri.AbilitaControllo)
                    {
                        double center = FindPositionBottle(image, this.parametri, false, ref iconicList);

                        token.ThrowIfCancellationRequested();

                        bool errorLevelMin, errorLevelMax, errorEmpty;

                        result.Success = AnalisiLivello(image, this.parametri, center, true, out errorLevelMin, out errorLevelMax, out errorEmpty, ref iconicList);

                        result.DettaglioElaborazione.Add("KO_LEVEL_MIN", errorLevelMin);
                        result.DettaglioElaborazione.Add("KO_LEVEL_MAX", errorLevelMax);
                        result.DettaglioElaborazione.Add("KO_LEVEL_EMPTY", errorEmpty);

                        token.ThrowIfCancellationRequested();
                    }
                    else
                    {
                        iconicList.Add(new Utilities.ObjectToDisplay(linguaMngr.GetTranslation("MSG_TEST_DISABLED"), "red", 0, 0));
                        result.Success = true;
                    }
                }
            }
            catch (Exception)
            {
                result.Success = false;
            }
        }
        private void ElaborateImage(HImage hImage, CancellationTokenSource cts, out ArrayList iconicVar, out ElaborateResult oResult)
        {
            OnExecuteAlgorithmDelegate del;

            ArrayList       retValue = new ArrayList();
            ElaborateResult result   = new ElaborateResult();

            lock (OnExecuteAlgorithmLock)
            {
                del = OnExecuteAlgorithm;
            }

            if (del != null)
            {
                del(hImage, cts.Token, out retValue, out result);
            }

            iconicVar = retValue;
            oResult   = result;
        }
Beispiel #7
0
        public void RegolazioniCentraggio(HImage image, CancellationToken token, out ArrayList iconicList, out ElaborateResult result)
        {
            iconicList = new ArrayList();
            result     = new ElaborateResult();
            try
            {
                iconicList.Add(new Utilities.ObjectToDisplay(image));

                if (this.parametri.AbilitaControllo)
                {
                    double center = FindPositionBottle(image, this.parametri, true, ref iconicList);

                    result.Success = center != 0;
                }
                else
                {
                    result.Success = true;
                }
            }
            catch (Exception)
            {
                result.Success = false;
            }
        }