Example #1
0
 private void AcqFifoTool_Ran(object sender, System.EventArgs e)
 {
     cogRecordDisplay1.InteractiveGraphics.Clear();
     cogRecordDisplay1.StaticGraphics.Clear();
     calbCheckerBoard            = cogToolBlockEditV21.Subject.Tools["CogCalibCheckerboardTool1"] as CogCalibCheckerboardTool;
     calbCheckerBoard.InputImage = AcqFifoTool.OutputImage;
     calbCheckerBoard.Run();
     CalibNPointTool            = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool;
     CalibNPointTool.InputImage = calbCheckerBoard.OutputImage;
     CalibNPointTool.Run();
     if (flagDisplayResult)  //add on 25/11/14
     {
         cogRecordDisplay1.Image = cogPMAlignTool.InputImage;
     }
     cogPMAlignTool.InputImage       = CalibNPointTool.OutputImage as CogImage8Grey;
     PatMaxTool.InputImage           = AcqFifoTool.OutputImage as CogImage8Grey;
     PatMaxTool.InputImage           = CalibNPointTool.OutputImage as CogImage8Grey;
     ImageFileTool.InputImage        = AcqFifoTool.OutputImage;
     static_AcqFifoTool_Ran_numacqs += 1;
     if (static_AcqFifoTool_Ran_numacqs > 4)
     {
         GC.Collect();
         static_AcqFifoTool_Ran_numacqs = 0;
     }
 }
Example #2
0
        /// <summary>
        /// 开启vpp编辑画面
        /// </summary>
        /// <param name="cogCalibCheckerboard">棋盘格矫正工具</param>
        /// <param name="cogCalibNPointToNPoint">坐标系标定工具</param>
        /// <param name="enableCheckerboard">启用棋盘格工具</param>
        /// <param name="enableCalibNPointToNPoint">启用坐标系工具</param>
        /// <param name="cogToolBlock">编辑vpp</param>
        /// <param name="backupToolBlock">备份vpp</param>
        /// <param name="toolBlockId">工具id</param>
        /// <param name="titleText">vpp名称</param>
        public void ShowEdit(CogCalibCheckerboardTool cogCalibCheckerboard, CogCalibNPointToNPointTool cogCalibNPointToNPoint, bool enableCheckerboard, bool enableCalibNPointToNPoint, CogToolBlock cogToolBlock, CogToolBlock backupToolBlock, int toolBlockId, string titleText)
        {
            //mod 20200918 by wangsizhe start
            ////_save = false;
            //if (cogToolBlock == null)
            //{
            //    cogToolBlock = new CogToolBlock();
            //}

            //if (cogCalibCheckerboard == null)
            //{
            //    cogCalibCheckerboard = new CogCalibCheckerboardTool();
            //}

            //if (cogCalibNPointToNPoint == null)
            //{
            //    cogCalibNPointToNPoint = new CogCalibNPointToNPointTool();
            //}

            //_enableCheckerboard = enableCheckerboard;
            //_enableCalibNPointToNPoint = enableCalibNPointToNPoint;
            //_cogCalibCheckerboard = cogCalibCheckerboard;
            //_cogCalibNPointToNPoint = cogCalibNPointToNPoint;
            //Text = titleText;
            //_backupToolBlock = backupToolBlock;
            //_cogToolBlock = cogToolBlock;
            //_toolBlockId = toolBlockId;
            //cogToolBlockEditV21.Subject = _cogToolBlock;
            //Show();
            cogToolBlockEditV21.Invoke(new Action(delegate
            {
                if (cogToolBlock == null)
                {
                    cogToolBlock = new CogToolBlock();
                }

                if (cogCalibCheckerboard == null)
                {
                    cogCalibCheckerboard = new CogCalibCheckerboardTool();
                }

                if (cogCalibNPointToNPoint == null)
                {
                    cogCalibNPointToNPoint = new CogCalibNPointToNPointTool();
                }

                _enableCheckerboard        = enableCheckerboard;
                _enableCalibNPointToNPoint = enableCalibNPointToNPoint;
                _cogCalibCheckerboard      = cogCalibCheckerboard;
                _cogCalibNPointToNPoint    = cogCalibNPointToNPoint;
                Text                        = titleText;
                _backupToolBlock            = backupToolBlock;
                _cogToolBlock               = cogToolBlock;
                _toolBlockId                = toolBlockId;
                cogToolBlockEditV21.Subject = _cogToolBlock;
                Show();
            }));
            //mod 20200918 by wangsizhe end
        }
Example #3
0
 private void button2_Click(object sender, EventArgs e)
 {
     // CogSerializer.SaveObjectToFile(toolBlock,@"C:\PROJECTS\Stahli.Net\Bin\Debug\CognexStahli\Camera1.vpp");
     CogSerializer.SaveObjectToFile(toolBlock, System.IO.Directory.GetCurrentDirectory() + "\\CognexStahli\\Camera1.vpp");
     cogAcqTool                = cogToolBlockEditV21.Subject.Tools["CogAcqFifoTool1"] as CogAcqFifoTool;
     calbCheckerBoard          = cogToolBlockEditV21.Subject.Tools["CogCalibCheckerboardTool1"] as CogCalibCheckerboardTool;
     CalibNPointTool           = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool;
     cogPMAlignTool            = cogToolBlockEditV21.Subject.Tools["CogPMAlignTool1"] as CogPMAlignTool;
     cogPMAlignTool.InputImage = CalibNPointTool.OutputImage as CogImage8Grey;
 }
Example #4
0
        public FrmLoadTray()
        {
            visionActionDelegate = new VisionActionDelegate(VisionActionDelegateFunc);
            InitializeComponent();

            //Add any initialization after the InitializeComponent() call
            cogToolBlockEditV21.LocalDisplayVisible = false;
            mIFTool = new CogImageFileTool();
            //mIFTool.Operator.Open(Environment.GetEnvironmentVariable("VPRO_ROOT") + @"\images\coins.idb", CogImageFileModeConstants.Read);
            mAcqTool = new CogAcqFifoTool();

            toolBlock = cogToolBlockEditV21.Subject;
            try
            {
                // toolBlock = CogSerializer.LoadObjectFromFile(@"C:\PROJECTS\Stahli.Net\Bin\Debug\CognexStahli\Camera1.vpp") as CogToolBlock;  //Need to upload insernt name as given by asaf
                toolBlock = CogSerializer.LoadObjectFromFile(System.IO.Directory.GetCurrentDirectory() + "\\CognexStahli\\Camera1.vpp") as CogToolBlock; //Need to upload insernt name as given by asaf
                //if it is new insert, upload a defult
            }
            catch (Exception ex)
            {
                MessageBox.Show("Tool block is error");
            }
            cogToolBlockEditV21.Subject         = toolBlock;
            cogToolBlockEditV21.Subject.Ran    += new EventHandler(Subject_Ran);
            cogToolBlockEditV21.SubjectChanged += new EventHandler(cogToolBlockEditV21_SubjectChanged);
            foreach (ICogTool tool in toolBlock.Tools)
            {
                calbCheckerBoard = tool as CogCalibCheckerboardTool;
                if (calbCheckerBoard != null)
                {
                    break;
                }
            }

            foreach (ICogTool tool in toolBlock.Tools)
            {
                CalibNPointTool = tool as CogCalibNPointToNPointTool;
                if (CalibNPointTool != null)
                {
                    break;
                }
            }

            foreach (ICogTool tool in toolBlock.Tools)
            {
                cogPMAlignTool = tool as CogPMAlignTool;
                if (cogPMAlignTool != null)
                {
                    break;
                }
            }

            loadOrderDataDelegate = new LoadOrderDataDelegate(LoadOrderDataDelegateFunc);
            // LoadPatternFromFile();   //13.07.15 (Ziv)
        }
        public void Subject_Ran(object sender, EventArgs e)     //Run tool
        {
            cogAcqTool = cogToolBlockEditV21.Subject.Tools["CogAcqFifoTool1"] as CogAcqFifoTool;
            calbCheckerBoard.InputImage = cogToolBlockEditV21.Subject.Inputs["Image"].Value as CogImage8Grey;
            calbCheckerBoard            = cogToolBlockEditV21.Subject.Tools["CogCalibCheckerboardTool1"] as CogCalibCheckerboardTool;
            calbCheckerBoard.Run();
            CalibNPointTool            = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool;
            CalibNPointTool.InputImage = calbCheckerBoard.OutputImage;
            cogPMAlignTool             = cogToolBlockEditV21.Subject.Tools["CogPMAlignTool1"] as CogPMAlignTool;
            cogPMAlignTool.InputImage  = CalibNPointTool.OutputImage as CogImage8Grey;
            cogRecordDisplay1.Image    = cogPMAlignTool.InputImage;
            cogPMAlignTool.Run();
            cogRecordDisplay1.Record = cogPMAlignTool.CreateLastRunRecord();
            cogRecordDisplay1.Fit(true);
            if (dataGridView1.Visible == false)
            {
                dataGridView1.Visible = true;
            }
            dataGridView1.Rows.Clear();


            TrayIndexData TIS;

            AppGen.Inst.UnLoadCarrier.CurrIndex = 0;
            AppGen.Inst.UnLoadCarrier.IndexList.Clear();

            try
            {
                for (int i = 0; i < cogPMAlignTool.Results.Count; i++)
                {
                    TIS = new TrayIndexData();
                    dataGridView1.Rows.Add();
                    dataGridView1[0, i].Value = cogPMAlignTool.Results[i].ID.ToString();
                    dataGridView1[1, i].Value = cogPMAlignTool.Results[i].Score.ToString();
                    dataGridView1[2, i].Value = cogPMAlignTool.Results[i].GetPose().Rotation *(180 / Math.PI);
                    dataGridView1[3, i].Value = cogPMAlignTool.Results[i].GetPose().TranslationX;
                    dataGridView1[4, i].Value = cogPMAlignTool.Results[i].GetPose().TranslationY;

                    TIS.X_VisRes     = cogPMAlignTool.Results[i].GetPose().TranslationX;
                    TIS.Y_VisRes     = cogPMAlignTool.Results[i].GetPose().TranslationY;
                    TIS.Angle_VisRes = cogPMAlignTool.Results[i].GetPose().Rotation *(180 / Math.PI);

                    AppGen.Inst.UnLoadCarrier.IndexList.Add(TIS);
                }
                txtPatMaxScoreValue.Text = cogPMAlignTool.Results.Count.ToString();
            }
            catch (Exception)
            {
                MessageBox.Show("No Input Image available for setup.", "PatMax Setup Error");
            }
        }
        private void button1_Click(object sender, EventArgs e)  //Teach
        {
            if (!SettingUp)
            {
                if ((!AppGen.Inst.MDImain.frmVisionMain.FrmUnloadCarrier.flagFullTray))
                {
                    MessageBox.Show("Please acquire full frame");
                    return;
                }
                cogPMAlignTool.Pattern.TrainImage = CalibNPointTool.OutputImage as CogImage8Grey;
                //While setting up PMAlign, disable other GUI controls.
                SettingUp = true;
                DisableAll(settingUpPatMax);
                //Add TrainRegion to display's interactive graphics
                //Add SearchRegion to display's static graphics for display only.
                cogRecordDisplay1.InteractiveGraphics.Clear();
                cogRecordDisplay1.StaticGraphics.Clear();

                cogRecordDisplay1.InteractiveGraphics.Add(cogPMAlignTool.Pattern.TrainRegion as ICogGraphicInteractive, "test", false);

                //Now
                axes                  = new CogCoordinateAxes();
                axes.Transform        = cogPMAlignTool.Pattern.Origin;
                axes.GraphicDOFEnable = CogCoordinateAxesDOFConstants.All &
                                        ~CogCoordinateAxesDOFConstants.Skew;
                axes.Interactive = true;
                // Add a standard VisionPro "manipulable" mouse cursor.
                axes.MouseCursor            = CogStandardCursorConstants.ManipulableGraphic;
                axes.XAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic;
                axes.YAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic;
                cogRecordDisplay1.InteractiveGraphics.Add((ICogGraphicInteractive)axes, "test", false);



                //if ((cogPMAlignTool.SearchRegion != null))
                //{
                //    //cogPMAlignTool.SearchRegion.FitToImage(cogRecordDisplay1.Image, 0.990,0.999);
                //    cogRecordDisplay1.StaticGraphics.Add(cogPMAlignTool.SearchRegion as ICogGraphic, "test");
                //    cogToolBlockEditV21.Subject.Inputs["Image"].Value = cogRecordDisplay1.Image;
                //}

                //OK has been pressed, completing Setup.
            }
            else
            {
                SettingUp = false;
                cogRecordDisplay1.InteractiveGraphics.Clear();
                cogRecordDisplay1.StaticGraphics.Clear();
                //Make sure we catch errors from Train, since they are likely.  For example,
                //No InputImage, No Pattern Features, etc.
                try
                {
                    CalibNPointTool = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool;
                    CalibNPointTool.Run();
                    cogPMAlignTool.Pattern.Train();


                    //SavePatternToFile();
                    //save the teach pattern according to order name (ziv)
                    AppGen.Inst.MDImain.frmVisionMain.savePattern("Camera3", AppGen.Inst.OrderParams.InsertCode, cogPMAlignTool.Pattern);
                }
                catch (CogException cogex)
                {
                    MessageBox.Show("Following Specific Cognex Error Occured:" + cogex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "PatMax Setup Error");
                }
                EnableAll(settingUpPatMax);
            }
        }
Example #7
0
        public void Subject_Ran(object sender, EventArgs e)
        {
            if (RunAgainFlag)
            {
                PatMaxTool.RunParams.AcceptThreshold     = Convert.ToDouble(numericUpDown1.Value * Convert.ToDecimal(0.9));
                cogPMAlignTool.RunParams.AcceptThreshold = Convert.ToDouble(numericUpDown1.Value * Convert.ToDecimal(0.9));
            }
            cogAcqTool = cogToolBlockEditV21.Subject.Tools["CogAcqFifoTool1"] as CogAcqFifoTool;
            calbCheckerBoard.InputImage = cogToolBlockEditV21.Subject.Inputs["Image"].Value as CogImage8Grey;
            calbCheckerBoard            = cogToolBlockEditV21.Subject.Tools["CogCalibCheckerboardTool1"] as CogCalibCheckerboardTool;
            calbCheckerBoard.Run();
            CalibNPointTool            = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool;
            CalibNPointTool.InputImage = calbCheckerBoard.OutputImage;
            cogPMAlignTool             = cogToolBlockEditV21.Subject.Tools["CogPMAlignTool1"] as CogPMAlignTool;
            cogPMAlignTool.InputImage  = CalibNPointTool.OutputImage as CogImage8Grey;
            //cogRecordDisplay1.Image = cogPMAlignTool.InputImage;
            cogPMAlignTool.Run();
            if (flagDisplayResult)  //add on 25/11/14
            {
                cogRecordDisplay1.Image  = cogPMAlignTool.InputImage;
                cogRecordDisplay1.Record = cogPMAlignTool.CreateLastRunRecord();
                cogRecordDisplay1.Fit(true);
            }
            dataGridView1.Rows.Clear();

            try
            {
                if ((cogPMAlignTool.Results.Count == 0) && (!AppGen.Inst.MDImain.frmVisionMain.FrmLoadtray.flagFullTray))   //no insert founded
                {
                    AppGen.Inst.LoadTray.IndexList[AppGen.Inst.LoadTray.CurrIndex].IsFound = false;
                    UnfoundInsertList.Add(AppGen.Inst.LoadTray.IndexList[AppGen.Inst.LoadTray.CurrIndex]); //not in use!!
                }
                else                                                                                       //insert founded
                {
                    AppGen.Inst.LoadTray.IndexList[AppGen.Inst.LoadTray.CurrIndex].X_VisRes     = cogPMAlignTool.Results[0].GetPose().TranslationX;
                    AppGen.Inst.LoadTray.IndexList[AppGen.Inst.LoadTray.CurrIndex].Y_VisRes     = cogPMAlignTool.Results[0].GetPose().TranslationY;
                    AppGen.Inst.LoadTray.IndexList[AppGen.Inst.LoadTray.CurrIndex].Angle_VisRes = cogPMAlignTool.Results[0].GetPose().Rotation *(180 / Math.PI);   //converted to degree
                }

                for (int i = 0; i < cogPMAlignTool.Results.Count; i++)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1[0, i].Value = cogPMAlignTool.Results[i].ID.ToString();
                    dataGridView1[1, i].Value = cogPMAlignTool.Results[i].Score.ToString();
                    dataGridView1[2, i].Value = cogPMAlignTool.Results[i].GetPose().Rotation *(180 / Math.PI);
                    dataGridView1[3, i].Value = cogPMAlignTool.Results[i].GetPose().TranslationX;
                    dataGridView1[4, i].Value = cogPMAlignTool.Results[i].GetPose().TranslationY;
                }
                txtPatMaxScoreValue.Text = cogPMAlignTool.Results.Count.ToString();
                if ((cogPMAlignTool.SearchRegion != null))
                {
                    //cogPMAlignTool.SearchRegion.FitToImage(cogRecordDisplay1.Image, 0.990,0.999);
                    cogRecordDisplay1.StaticGraphics.Add(cogPMAlignTool.SearchRegion as ICogGraphic, "test");
                    cogToolBlockEditV21.Subject.Inputs["Image"].Value = cogRecordDisplay1.Image;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Insert wasn't found", "Run tool Error");
            }
        }
Example #8
0
        //初始化函数2
        private void initToolEdit()
        {
            //JobManagerEdit.Subject = m_JobManager;

            //一级视觉
            CogToolGroup m_ToolGroup_1 = (CogToolGroup)m_Job_1.VisionTool;

            cogToolGroupEditV21.Subject = m_ToolGroup_1;



            if (m_ToolGroup_1 == null)
            {
                MessageBox.Show("toolgroup1工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }


            blobTool_1 = (CogBlobTool)m_ToolGroup_1.Tools["CogBlobTool1"];
            if (blobTool_1 == null)
            {
                MessageBox.Show("blob1工具读取失败,请退出软件");
            }



            pmaTool_1 = (CogPMAlignTool)m_ToolGroup_1.Tools["caliPMATool"];
            if (pmaTool_1 == null)
            {
                MessageBox.Show("pma1工具读取失败,请退出软件");
            }

            calibTool_1 = (CogCalibNPointToNPointTool)m_ToolGroup_1.Tools["CogCalibNPointToNPointTool1"];
            if (calibTool_1 == null)
            {
                MessageBox.Show("calib1工具读取失败,请退出软件");
            }

            acqFifoTool_1 = (CogAcqFifoTool)m_ToolGroup_1.Tools["CogAcqFifoTool1"];
            if (acqFifoTool_1 == null)
            {
                MessageBox.Show("acqfifo1工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }

            mAcqFifo_1 = acqFifoTool_1.Operator;

            if (mAcqFifo_1 == null)
            {
                MessageBox.Show("macqfifo1为 null,窗口将自动关闭");
                this.Close();
                return;
            }


            mAcqFifo_1.Timeout = 1000;



            //二级视觉
            CogToolGroup m_ToolGroup_2 = (CogToolGroup)m_Job_2.VisionTool;

            cogToolGroupEditV22.Subject = m_ToolGroup_2;



            if (m_ToolGroup_2 == null)
            {
                MessageBox.Show("toolgroup2工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }

            blobTool_2 = (CogBlobTool)m_ToolGroup_2.Tools["CogBlobTool1"];
            if (blobTool_2 == null)
            {
                MessageBox.Show("blob2工具读取失败,请退出软件");
            }

            pmaTool_2 = (CogPMAlignTool)m_ToolGroup_2.Tools["caliPMATool"];
            if (pmaTool_2 == null)
            {
                MessageBox.Show("pma2工具读取失败,请退出软件");
            }

            calibTool_2 = (CogCalibNPointToNPointTool)m_ToolGroup_2.Tools["CogCalibNPointToNPointTool1"];
            if (calibTool_2 == null)
            {
                MessageBox.Show("calib2工具读取失败,请退出软件");
            }


            acqFifoTool_2 = (CogAcqFifoTool)m_ToolGroup_2.Tools["CogAcqFifoTool1"];
            if (acqFifoTool_2 == null)
            {
                MessageBox.Show("acqfifo2工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }

            mAcqFifo_2 = acqFifoTool_2.Operator;

            if (mAcqFifo_2 == null)
            {
                MessageBox.Show("macqfifo2为 null,窗口将自动关闭");
                this.Close();
                return;
            }



            mAcqFifo_2.Timeout = 1000;



            ////对比度Test
            //ICogAcqContrast mContrast = mAcqFifo_2.OwnedContrastParams;
            //double val = mContrast.Contrast;
            //Console.WriteLine(val);



            //三级视觉
            CogToolGroup m_ToolGroup_3 = (CogToolGroup)m_Job_3.VisionTool;

            cogToolGroupEditV23.Subject = m_ToolGroup_3;


            if (m_ToolGroup_3 == null)
            {
                MessageBox.Show("toolgroup3工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }

            blobTool_3 = (CogBlobTool)m_ToolGroup_3.Tools["CogBlobTool1"];
            if (blobTool_3 == null)
            {
                MessageBox.Show("blob3工具读取失败,请退出软件");
            }
            pmaTool_3 = (CogPMAlignTool)m_ToolGroup_3.Tools["caliPMATool"];
            if (pmaTool_3 == null)
            {
                MessageBox.Show("pma3工具读取失败,请退出软件");
            }

            calibTool_3 = (CogCalibNPointToNPointTool)m_ToolGroup_3.Tools["CogCalibNPointToNPointTool1"];
            if (calibTool_3 == null)
            {
                MessageBox.Show("calib3工具读取失败,请退出软件");
            }


            acqFifoTool_3 = (CogAcqFifoTool)m_ToolGroup_3.Tools["CogAcqFifoTool1"];
            if (acqFifoTool_3 == null)
            {
                MessageBox.Show("acqfifo3工具读取失败,窗口将自动关闭");
                this.Close();
                return;
            }

            mAcqFifo_3 = acqFifoTool_3.Operator;

            if (mAcqFifo_3 == null)
            {
                MessageBox.Show("macqfifo3为 null,窗口将自动关闭");
                this.Close();
                return;
            }



            mAcqFifo_3.Timeout = 1000;
        }
Example #9
0
 public ACalibNPointToNPoint(Object objTool)
 {
     m_cogCalibNPointToNPointTool = objTool as CogCalibNPointToNPointTool;
     Init();
 }
Example #10
0
 public ACalibNPointToNPoint()
 {
     m_cogCalibNPointToNPointTool = new CogCalibNPointToNPointTool();
     Init();
 }