コード例 #1
0
 private void ReadCameraSetting()
 {
     //cameras.Clear();
     try
     {
         XmlDocument xmlDocCamera = new XmlDocument();
         xmlDocCamera.Load("./Data/" + "CameraSettings.xml");
         XmlNodeList xnl;
         XmlNode     xn;
         xn  = xmlDocCamera.GetElementsByTagName("Camera")[0];
         xnl = xn.ChildNodes;
         int i = 1;
         if (ccameras.Count == 0)
         {
             foreach (XmlNode x in xnl)
             {
                 CCamera c = new CCamera(x.Attributes["name"].Value);
                 c.sortnum                = i - 1;
                 c.logicName              = "CCD" + i;
                 c.name                   = x.Attributes["name"].Value;
                 c.ExposureTime           = int.Parse(x.Attributes["ExposureTime"].Value);
                 c.Gain                   = int.Parse(x.Attributes["Gain"].Value);
                 c.PixelDist              = double.Parse(x.Attributes["PixelDist"].Value);
                 c.OnImageProcessedEvent += new CCamera.OnImageProcessedEventHandler(OnImageProcessedEvent);
                 ccameras.Add(c);
                 i++;
             }
         }
         for (int ci = 0; ci < ccameras.Count; ci++)
         {
             CCD.Add("CCD" + (ci + 1).ToString(), ccameras[ci]);
         }
     }
     catch
     {
         MessageBox.Show("相机加载错误");
     }
 }
コード例 #2
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();
            }
        }
コード例 #3
0
        public static void CheckData(DataSet ds, string cameraName, CCamera instance)
        {
            Initial();
            int               current        = int.Parse(cameraName.Substring(3, 1));
            string            nextCameraName = "CCD" + (current + 1).ToString();
            DataRowCollection drc            = ds.Tables["detailTable"].Rows;
            int               checkresult    = (int)Holes.firstHole;
            List <int>        CheckList      = new List <int>();

            int index = 0;

            foreach (DataRow dr in drc)
            {
                if (dr[0].ToString() == cameraName)
                {
                    double xz = (double)dr[2];
                    double sx = (double)dr[3];
                    double xx = (double)dr[4];
                    double jg = (double)dr[5];

                    //良品
                    if (jg >= xx && jg <= sx)
                    {
                        checkresult = (int)Holes.secondHole;
                        instance.goodcountlist[index]++;
                    }
                    //未识别
                    else if (jg == xz)
                    {
                        checkresult = (int)Holes.thirdHole;
                    }

                    //不良品
                    else
                    {
                        checkresult = (int)Holes.firstHole;
                        instance.badcountlist[index]++;
                    }
                    CheckList.Add(checkresult);

                    index++;
                }
            }

            //不良品
            if (CheckList.Contains((int)Holes.firstHole))
            {
                checkresult = (int)Holes.firstHole;
            }
            //未识别
            else if (CheckList.Contains((int)Holes.thirdHole))
            {
                checkresult = (int)Holes.thirdHole;
            }
            //良品
            else if (CheckList.Contains((int)Holes.secondHole))
            {
                checkresult = (int)Holes.secondHole;
            }
            else
            {
                checkresult = (int)Holes.thirdHole;
            }
            if (CheckList.Count != 0)
            {
                //Card.mu.WaitOne();
                lock (Card.lockobj)
                {
                    //10.28ch改为逆向查找

                    Nut nut;
                    for (int i = 0; i < Turntable.Instance.nutqueue.Count; i++)
                    {
                        CameraCheckOut cco = new CameraCheckOut();
                        nut = Turntable.Instance.nutqueue[i];
                        int length = nut.checkedResult.Count;
                        //  Console.WriteLine("" + nut.checkedResult[length - 1].nextCameraName + "ff" + instance.poscmin + "ww" + nut.initialPos);
                        if (nut.checkedResult[length - 1].nextCameraName == cameraName && instance.poscmin == nut.initialPos)
                        //if (nut.posNo == CameraID[cameraName])
                        {
                            cco.leadToTheHole  = checkresult;
                            cco.nextCameraName = nextCameraName;
                            //   Console.WriteLine("" + cameraName + "" + nut.initialPos);
                            nut.checkedResult.Add(cco);
                            jiancejieguo jcjg1 = new jiancejieguo();
                            foreach (DataRow drx in drc)
                            {
                                if (drx[0].ToString() == cameraName)
                                {
                                    jcjg1 = new jiancejieguo();
                                    jcjg1.jiancexiangmu = drx[1].ToString();
                                    jcjg1.celiangjieguo = (double)drx[5];
                                    nut.jiance.Add(jcjg1);
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }