Exemplo n.º 1
0
        void OnImgDataOut()
        {
            if (HoImage != null &&
                HoImage.IsInitialized())
            {
                HoImage.Dispose();
            }

            HoImage = _imgData.Clone();

            if (HoImage != null &&
                HoImage.IsInitialized())
            {
                System.Threading.Thread.Sleep(10);
                if (CameraImageGrabbedEvt != null)
                {
                    CameraImageGrabbedEvt(CameraProperty, HoImage);
                }
            }
        }
Exemplo n.º 2
0
        private void Bbi_Click(object sender, ItemClickEventArgs e)
        {
            switch (e.Item.Tag.ToString())
            {
            case "BBI_LOADIMAGE":
                LoadImage();
                break;

            case "BBI_LINE":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROILine());     //定义区域时,矢量线段不响应;主要用在定义测量
                    }
                }
                break;

            case "BBI_RECTANGLE1":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROIRectangle1());
                    }
                }
                break;

            case "BBI_RECTANGLE2":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROIRectangle2());
                    }
                }
                break;

            case "BBI_CIRCULARARC":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROICircularArc());     //定义区域时,有向圆弧不响应;主要用在定义测量
                    }
                }
                break;

            case "BBI_CIRCLE":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROICircle());
                    }
                }
                break;

            case "BBI_ANNULUS":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.SetROIShape(new ProVision.InteractiveROI.ROIAnnulus());
                    }
                }
                break;

            case "BBI_DELETEACTIVEROI":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _ROIManager.RemoveActiveROI();
                    }
                }
                break;

            case "BBI_DELETEALLROI":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _HwndCtrller.ResetAll();
                        _HwndCtrller.Repaint();
                    }
                }
                break;

            case "BBI_RESETWINDOW":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _HwndCtrller.ResetWindow();
                        _HwndCtrller.Repaint();
                    }
                }
                break;

            case "BBI_CLEARICONIC":
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    if (_ROIManager != null)
                    {
                        _HwndCtrller.ResetAll();

                        if (_hoModifiedRegion != null &&
                            _hoModifiedRegion.IsInitialized())
                        {
                            _hoModifiedRegion.Dispose();
                        }

                        if (_hoSelectedRegion != null &&
                            _hoSelectedRegion.IsInitialized())
                        {
                            _hoSelectedRegion.Dispose();
                        }

                        this.bchkiModifyRegion.Checked = false;
                        this.lstbRegion.Items.Clear();
                        _isUpdated = false;
                    }
                }
                break;

            case "BBI_UPDATEREGION":

                _isUpdated = false;
                if (_hoImage != null &&
                    _hoImage.IsInitialized())
                {
                    //若非传入区域
                    if (!_isTransmitted)
                    {
                        if (_ROIManager != null)
                        {
                            if (_hoRawRegion != null &&
                                _hoRawRegion.IsInitialized())
                            {
                                _hoRawRegion.Dispose();
                            }
                            HalconDotNet.HOperatorSet.GenEmptyObj(out _hoRawRegion);

                            _roiList = _ROIManager.ROIList;

                            if (_roiList != null &&
                                _roiList.Count > 0)
                            {
                                this.lstbRegion.Items.Clear();
                                string roiType = "";

                                for (int i = 0; i < _roiList.Count; i++)
                                {
                                    HalconDotNet.HOperatorSet.ConcatObj(_hoRawRegion, ((ProVision.InteractiveROI.ROI)_roiList[i]).GetModelRegion(), out _hoRawRegion);
                                    roiType = ((ProVision.InteractiveROI.ROI)_roiList[i]).ROIShape.ToString();
                                    this.lstbRegion.Items.Add(i.ToString("00") + "[" + roiType + "]");
                                }

                                if (_hoModifiedRegion != null &&
                                    _hoModifiedRegion.IsInitialized())
                                {
                                    _hoModifiedRegion.Dispose();
                                }

                                _hoModifiedRegion             = _hoRawRegion.Clone();
                                this.lstbRegion.SelectedIndex = 0;
                                HalconDotNet.HOperatorSet.SelectObj(_hoModifiedRegion, out _hoSelectedRegion, 1);
                                _isUpdated = true;
                            }
                        }
                    }
                    else
                    {
                        //传入区域--作为单一区域
                        this.lstbRegion.Items.Clear();
                        this.lstbRegion.Items.Add("00" + "[Arbitrary]");
                        if (_hoModifiedRegion != null &&
                            _hoModifiedRegion.IsInitialized())
                        {
                            _hoModifiedRegion.Dispose();
                        }

                        //修改区域与选择区域为同一指向
                        HalconDotNet.HOperatorSet.SelectObj(_hoRawRegion, out _hoModifiedRegion, 1);
                        _hoSelectedRegion = _hoModifiedRegion;
                    }
                }
                break;

            default: break;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 更新结果图形变量
        /// [原始图像,搜索区域或跟随区域]
        /// </summary>
        /// <param name="resultData"></param>
        public void UpdateIconicResult(ProLaminator.Data.LaminatorProcessData resultData)
        {
            try
            {
                if (_hwndCtrller != null)
                {
                    if (resultData != null)
                    {
                        this.Invoke(
                            new System.Windows.Forms.MethodInvoker(
                                () =>
                        {
                            _hwndCtrller.ClearEntities();
                            _hoImage = resultData.RawImage;

                            if (_tstImage != null &&
                                _tstImage.IsInitialized())
                            {
                                _tstImage.Dispose();
                            }

                            _tstImage = _hoImage.Clone();
                            _hwndCtrller.AddHobjEntity(_tstImage);

                            _hwndCtrller.ChangeGraphicSettings(ProVision.InteractiveROI.GraphicContext.GC_COLOR, "red");
                            _hwndCtrller.AddHobjEntity(resultData.InspetcArea);

                            _hwndCtrller.ChangeGraphicSettings(ProVision.InteractiveROI.GraphicContext.GC_COLOR, "green");
                            _hwndCtrller.AddHobjEntity(resultData.ResultRegion);

                            _hwndCtrller.Repaint();

                            this.btneProOK.EditValue         = resultData.ProductOKNumber;
                            this.btneProNG.EditValue         = resultData.ProductNGNumber;
                            this.btneProTotal.EditValue      = resultData.ProductTotalNumber;
                            this.btneProYieldRatio.EditValue = resultData.ProductYieldRatio * 100;
                            this.btneElapse.Text             = System.Math.Round(resultData.ElapseTime, 2).ToString();

                            this.lblRunState.Text           = resultData.RunState;
                            this.lblInspectResult.Text      = resultData.ImgResultOK ? "OK" : "NG";
                            this.lblInspectResult.ForeColor = resultData.ImgResultOK ? System.Drawing.Color.Green : System.Drawing.Color.Red;

                            string r = System.Math.Round(resultData.Row.D, 2).ToString();
                            string c = System.Math.Round(resultData.Col.D, 2).ToString();
                            string a = System.Math.Round(resultData.DeltaAglRad.D, 2).ToString();

                            string x   = resultData.DeltaX.ToString();
                            string y   = resultData.DeltaY.ToString();
                            string da  = resultData.DeltaAglDegree.ToString();
                            string flg = resultData.ResultFlag.ToString("00");

                            if (_displayResultList == null)
                            {
                                _displayResultList = new List <DisplayResult>();
                            }

                            if (_displayResultList.Count > 0)
                            {
                                _displayResultList.Insert(0, new DisplayResult()
                                {
                                    Row = r, COl = c, Angle = a, DeltaX = x, DeltaY = y, DeltaA = da, Flag = flg
                                });

                                if (_displayResultList.Count > 3)
                                {
                                    _displayResultList.RemoveAt(3);
                                }
                            }
                            else
                            {
                                _displayResultList.Add(new DisplayResult()
                                {
                                    Row = r, COl = c, Angle = a, DeltaX = x, DeltaY = y, DeltaA = da, Flag = flg
                                });
                            }

                            for (int i = 0; i < _displayResultList.Count; i++)
                            {
                                if (i == 0)
                                {
                                    this.meLog.Text  = ">>>";
                                    this.meLog.Text += "定位坐标R:" + _displayResultList[i].Row + ",坐标C:" + _displayResultList[i].COl + ",弧角A:" + _displayResultList[i].Angle + "\r\n";
                                    this.meLog.Text += "相对偏移X:" + _displayResultList[i].DeltaX + ",Y:" + _displayResultList[i].DeltaY + "角D:" + _displayResultList[i].DeltaA + "\r\n";
                                    this.meLog.Text += "结果标记:" + _displayResultList[i].Flag;
                                }
                                else
                                {
                                    this.meLog.Text += "\r\n>>>";
                                    this.meLog.Text += "定位坐标R:" + _displayResultList[i].Row + ",坐标C:" + _displayResultList[i].COl + ",弧角A:" + _displayResultList[i].Angle + "\r\n";
                                    this.meLog.Text += "相对偏移X:" + _displayResultList[i].DeltaX + ",Y:" + _displayResultList[i].DeltaY + "角D:" + _displayResultList[i].DeltaA + "\r\n";
                                    this.meLog.Text += "结果标记:" + _displayResultList[i].Flag;
                                }
                            }
                        }));
                    }
                }
            }
            catch (HalconDotNet.HalconException hex)
            {
            }
            catch (System.Exception ex)
            {
            }
        }