예제 #1
0
        public override void draw()
        {
            HOperatorSet.SetColor(this.LWindowHandle, "cyan");
            HOperatorSet.SetDraw(this.LWindowHandle, "margin");
            HalconHelp.disp_message(this.LWindowHandle, "选中一个牙", "window", 12, 12, "green",
                                    "true");
            HOperatorSet.DrawRectangle1(this.LWindowHandle, out toothRow1, out toothColumn1, out toothRow2, out toothColumn2);

            tr1 = toothRow1.D;
            tr2 = toothRow2.D;
            tc1 = toothColumn1.D;
            tc2 = toothColumn2.D;
            HObject rect1;

            HOperatorSet.GenEmptyObj(out rect1);
            HOperatorSet.GenRectangle1(out rect1, toothRow1, toothColumn1, toothRow2, toothColumn2);
            HOperatorSet.DispObj(rect1, this.LWindowHandle);
            HalconHelp.disp_message(this.LWindowHandle, "选中检测区域", "window", 12, 12, "green",
                                    "true");

            HOperatorSet.DrawRectangle1(this.LWindowHandle, out RoiRow1, out RoiColumn1, out RoiRow2, out RoiColumn2);

            rr1 = RoiRow1.D;
            rr2 = RoiRow2.D;
            rc1 = RoiColumn1.D;
            rc2 = RoiColumn2.D;

            HObject rect2;

            HOperatorSet.GenEmptyObj(out rect2);
            HOperatorSet.GenRectangle1(out rect2, RoiRow1, RoiColumn1, RoiRow2, RoiColumn2);
            HOperatorSet.DispObj(rect2, this.LWindowHandle);
        }
 public override void draw()
 {
     HOperatorSet.SetColor(this.LWindowHandle, "cyan");
     HOperatorSet.SetDraw(this.LWindowHandle, "margin");
     //HOperatorSet.SetDraw(LWindowHandle, "margin");
     //HOperatorSet.SetColor(LWindowHandle, "green");
     HalconHelp.disp_message(LWindowHandle, "选取需要检测部分的最宽处", "window",
                             12, 12, "black", "true");
     HOperatorSet.DrawRectangle1(this.LWindowHandle, out Row1, out Column1, out Row2, out Column2);
     this.R1 = Row1.D;
     this.R2 = Row2.D;
     this.C1 = Column1.D;
     this.C2 = Column2.D;
 }
        public void InitHalcon()
        {
            // Default settings used in HDevelop
            HOperatorSet.SetSystem("do_low_error", "false");
            if (this.Image == null)
            {
                MyDebug.ShowMessage("初始化失败");
                return;
            }
            HTuple width = new HTuple(), height = new HTuple();

            HOperatorSet.GetImageSize(Image, out width, out height);
            HOperatorSet.SetPart(this.LWindowHandle, 0, 0, height, width);
            HOperatorSet.DispObj(Image, this.LWindowHandle);
            HOperatorSet.SetDraw(this.LWindowHandle, "margin");
            HalconHelp.set_display_font(this.LWindowHandle, 16, "mono", "true", "false");
            HOperatorSet.SetColor(this.LWindowHandle, "green");
        }
예제 #4
0
        private void OnImageProcessedEvent(CCamera instance, HObject ho_Image)
        {
            try
            {
                if (InvokeRequired)
                {
                    Invoke(new CCamera.OnImageProcessedEventHandler(OnImageProcessedEvent), new object[] { instance, ho_Image });
                    return;
                }
                kk++;
                //Console.WriteLine("kk:" +kk);
                instance.tempImage.Dispose();
                HOperatorSet.CopyImage(instance.Image, out instance.tempImage);

                HTuple cwindow = new HTuple();
                switch (instance.logicName)
                {
                case "CCD1": cwindow = hWindowControl1.HalconWindow;
                    break;

                case "CCD2": cwindow = hWindowControl2.HalconWindow;
                    break;

                case "CCD3": cwindow = hWindowControl3.HalconWindow;
                    break;

                case "CCD4": cwindow = hWindowControl4.HalconWindow;
                    break;

                case "CCD5": cwindow = hWindowControl5.HalconWindow;
                    break;
                    //case "CCD6": cwindow = hWindowControl6.HalconWindow;
                    //    break;
                }

                for (int i = 0; i < 6; i++)
                {
                    if (instance.logicName == "CCD" + i.ToString())
                    {
                        HOperatorSet.SetColor(cwindow, "green");
                        HOperatorSet.SetDraw(cwindow, "margin");
                        HTuple w, h;
                        HOperatorSet.GetImageSize(ho_Image, out w, out h);

                        HOperatorSet.SetPart(cwindow, 0, 0, h, w);

                        HOperatorSet.DispObj(ho_Image, cwindow);

                        if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0)
                        {
                            HOperatorSet.DispObj(instance.RegionToDisp, cwindow);
                            HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false");
                            HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 10, 10, "green", "false");
                        }
                    }
                }
                switch (instance.logicName)
                {
                case "CCD1": cwindow = hWindowControl6.HalconWindow;
                    break;

                case "CCD2": cwindow = hWindowControl7.HalconWindow;
                    break;

                case "CCD3": cwindow = hWindowControl8.HalconWindow;
                    break;

                case "CCD4": cwindow = hWindowControl9.HalconWindow;
                    break;

                case "CCD5": cwindow = hWindowControl10.HalconWindow;
                    break;
                }

                for (int i = 0; i < 6; i++)
                {
                    if (instance.logicName == "CCD" + i.ToString())
                    {
                        HOperatorSet.SetColor(cwindow, "green");
                        HOperatorSet.SetDraw(cwindow, "margin");
                        HTuple w, h;
                        HOperatorSet.GetImageSize(ho_Image, out w, out h);

                        HOperatorSet.SetPart(cwindow, 0, 0, h, w);

                        HOperatorSet.DispObj(ho_Image, cwindow);

                        if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0)
                        {
                            HOperatorSet.DispObj(instance.RegionToDisp, cwindow);
                            //if (instance.logicName == "CCD1")
                            //{
                            //    HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false");
                            //    HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 2, 2, "green", "false");
                            //}
                        }
                    }
                }
                DataRowCollection drc = ds.Tables["detailTable"].Rows;

                int    rs      = 0;
                string shijian = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
                string path    = PathHelper.currentProductPath + @"\" + shijian + ".txt";
                foreach (DataRow dr in drc)
                {
                    string s = dr[0].ToString();

                    if (dr[0].ToString() == instance.logicName)
                    {
                        if (instance.result.resultToShow.Count > rs)
                        {
                            double cl = double.Parse(instance.result.resultToShow[rs].data);
                            double xz = (double)dr[2];
                            dr[5] = Math.Round((cl + xz), 3);
                            if (double.Parse(dr[5].ToString()) <= double.Parse(dr[3].ToString()) && double.Parse(dr[5].ToString()) >= double.Parse(dr[4].ToString()))
                            {
                                dr[6] = "OK";
                            }
                            else
                            {
                                dr[6] = "NG";
                            }
                            if (instance.goodcountlist.Count() != 0)
                            {
                                dr[7] = Math.Round((double)(instance.goodcountlist[rs] / (double)Turntable.Instance.pn.totalCount * 100), 2).ToString() + "%";
                                //Console.WriteLine("" + instance.goodcountlist[rs] + "---" + (double)Turntable.Instance.pn.totalCount);
                            }
                            rs++;
                        }
                        else
                        {
                            dr[5] = 0;
                        }
                        // File.AppendAllText(path,dr[1].ToString() + "  " + dr[5].ToString(), Encoding.Default);
                    }
                }

                //File.AppendAllText(path,Environment.NewLine, Encoding.Default);
                DataHelper.CheckData(ds, instance.logicName, instance);
            }
            catch (Exception e)
            {
                MyDebug.ShowMessage("界面图像处" + e.Message);
            }
            finally
            {
                ho_Image.Dispose();
                instance.RegionToDisp.Dispose();
                instance.Image.Dispose();
                instance.resultHTuple = new HTuple();
                //UpdateProInfo();
            }
        }
예제 #5
0
        public void my_clamp(HObject ho_Region, out HObject ho_Arrow, HTuple hv_vOrh,
                             out HTuple hv_length)
        {
            // Local iconic variables
            try
            {
                HObject ho_Arrow1 = null, ho_Arrow2 = null;
                // Local control variables
                HTuple hv_Rows = new HTuple(), hv_Columns = new HTuple(), hv_maxc = new HTuple();
                HTuple hv_minc = new HTuple(), hv_index = new HTuple();

                // Initialize local and output iconic variables
                HOperatorSet.GenEmptyObj(out ho_Arrow);
                HOperatorSet.GenEmptyObj(out ho_Arrow1);
                HOperatorSet.GenEmptyObj(out ho_Arrow2);

                hv_length = new HTuple();
                HTuple Num = new HTuple();
                HOperatorSet.CountObj(ho_Region, out Num);
                if (Num.I != 1)
                {
                    //MessageBox.Show("将图像分割为一种颜色");
                    Debug.Print("将图像分割为一种颜色");
                    return;
                }
                HOperatorSet.GetRegionPoints(ho_Region, out hv_Rows, out hv_Columns);
                if ((int)(new HTuple(hv_vOrh.TupleEqual("h"))) != 0 && hv_Rows.Length > 0)
                {
                    hv_maxc   = hv_Columns.TupleMax();
                    hv_minc   = hv_Columns.TupleMin();
                    hv_length = hv_maxc - hv_minc;
                    HOperatorSet.TupleFind(hv_Columns, hv_maxc, out hv_index);

                    ho_Arrow1.Dispose();
                    HalconHelp.gen_arrow_contour_xld(out ho_Arrow1, hv_Rows.TupleSelect(hv_index.TupleSelect(
                                                                                            0)), (hv_Columns.TupleSelect(hv_index.TupleSelect(0))) + 50, hv_Rows.TupleSelect(
                                                         hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)),
                                                     15, 15);
                    HOperatorSet.TupleFind(hv_Columns, hv_minc, out hv_index);
                    ho_Arrow2.Dispose();
                    HalconHelp.gen_arrow_contour_xld(out ho_Arrow2, hv_Rows.TupleSelect(hv_index.TupleSelect(
                                                                                            0)), (hv_Columns.TupleSelect(hv_index.TupleSelect(0))) - 50, hv_Rows.TupleSelect(
                                                         hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)),
                                                     15, 15);
                    ho_Arrow.Dispose();
                    HOperatorSet.ConcatObj(ho_Arrow1, ho_Arrow2, out ho_Arrow);
                }
                else if ((int)(new HTuple(hv_vOrh.TupleEqual("v"))) != 0 && hv_Rows.Length > 0)
                {
                    hv_maxc   = hv_Rows.TupleMax();
                    hv_minc   = hv_Rows.TupleMin();
                    hv_length = hv_maxc - hv_minc;
                    HOperatorSet.TupleFind(hv_Rows, hv_maxc, out hv_index);

                    ho_Arrow1.Dispose();
                    HalconHelp.gen_arrow_contour_xld(out ho_Arrow1, (hv_Rows.TupleSelect(hv_index.TupleSelect(
                                                                                             0))) + 50, hv_Columns.TupleSelect(hv_index.TupleSelect(0)), hv_Rows.TupleSelect(
                                                         hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)),
                                                     15, 15);
                    HOperatorSet.TupleFind(hv_Rows, hv_minc, out hv_index);
                    ho_Arrow2.Dispose();
                    HalconHelp.gen_arrow_contour_xld(out ho_Arrow2, (hv_Rows.TupleSelect(hv_index.TupleSelect(
                                                                                             0))) - 50, hv_Columns.TupleSelect(hv_index.TupleSelect(0)), hv_Rows.TupleSelect(
                                                         hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)),
                                                     15, 15);
                    ho_Arrow.Dispose();
                    HOperatorSet.ConcatObj(ho_Arrow1, ho_Arrow2, out ho_Arrow);

                    hv_length = (hv_Rows.TupleMax()) - (hv_Rows.TupleMin());
                }
                ho_Arrow1.Dispose();
                ho_Arrow2.Dispose();
                return;
            }

            catch (Exception e)
            {
                ho_Arrow  = null;
                hv_length = 0;
                return;
            }
        }