Пример #1
0
        public static CogRecordDisplay CogDisplay_Public;//公開的CogDisplay控制項
        #endregion CogDisplay元件

        /// <summary>
        /// 載入CCD
        /// </summary>
        /// <param name="TempcogDisplay">CCDDisplay畫面</param>
        /// <param name="TempCameras">CCD實體相機個數</param>
        /// <returns>回傳是否成功開啟CCD</returns>
        public static Boolean Load_Cameras(VisionCameras TempCameras)//載入CCD
        {
            string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString();

            #region 開啟相機
            CCDNumber_Load_[(Int32)TempCameras] = false;
            ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras] = null;
            try
            {
                CogFrameGrabberGigEs_TopCameras_Tool = new CogFrameGrabberGigEs();
                if (CogFrameGrabberGigEs_TopCameras_Tool.Count > 0)                    //有找到一台以上的相機
                {
                    CogFrameGrabberGigEs_TopCameras_Tool = new CogFrameGrabberGigEs(); //宣告CogFrameGrabberGigEs
                    //中斷連線
                    CogFrameGrabberGigEs_TopCameras_Tool[CCDNumber_[(Int32)TempCameras]].Disconnect(true);
                    //設定影像格式
                    CCDNumber_VideoFormat[0] = CogFrameGrabberGigEs_TopCameras_Tool[CCDNumber_[(Int32)TempCameras]].AvailableVideoFormats[0];
                    //取得相機控制權
                    ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras] = CogFrameGrabberGigEs_TopCameras_Tool[CCDNumber_[(Int32)TempCameras]].CreateAcqFifo(CCDNumber_VideoFormat[0], CogAcqFifoPixelFormatConstants.Format8Grey, 0, true);
                    //載入成功
                    CCDNumber_Load_[(Int32)TempCameras]  = true;
                    CogFrameGrabberGigEs_TopCameras_Tool = null;//釋放CogFrameGrabberGigEs

                    SaveLog.Msg_("開起相機 " + TempCameras.ToString() + " 完成");
                    return(true);
                }
                else
                {
                    //載入失敗
                    CCDNumber_Load_[(Int32)TempCameras] = false;
                    SaveLog.Msg_("開起相機 " + TempCameras.ToString() + " 失敗");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString());

                if (CogFrameGrabberGigEs_TopCameras_Tool != null)
                {
                    CogFrameGrabberGigEs_TopCameras_Tool = null;                                              //釋放CogFrameGrabberGigEs
                }
                CCDNumber_Load_[(Int32)TempCameras] = false;
                return(false);
            }
            #endregion 開啟相機
        }//載入CCD結束
Пример #2
0
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            CogFrameGrabberGigEs cameras = new CogFrameGrabberGigEs();

            try
            {
                foreach (CogFrameGrabberGigE item in cameras)
                {
                    item.Disconnect(false);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("关闭相机失败{0}", ex.Message));
            }

            UiMainForm.LogMessage("程序已退出!");
        }
Пример #3
0
        }//載入CCD結束

        /// <summary>
        /// 卸載CCD
        /// </summary>
        /// <param name="TempCameras">CCD實體相機個數</param>
        /// <returns>回傳是否成功卸載CCD</returns>
        public static Boolean UnLoad_Cameras(VisionCameras TempCameras)//卸載CCD
        {
            string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString();

            #region 卸載CCD

            try
            {
                if (CCDNumber_Load_[(Int32)TempCameras])                               //如果相機有載入
                {
                    CogFrameGrabberGigEs_TopCameras_Tool = new CogFrameGrabberGigEs(); //宣告CogFrameGrabberGigEs
                    if (CogFrameGrabberGigEs_TopCameras_Tool.Count > 0)
                    {
                        if (ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras] != null)                         //有取得控制權
                        {
                            CogFrameGrabberGigEs_TopCameras_Tool[CCDNumber_[(Int32)TempCameras]].Disconnect(false); //中斷連結
                            CCDNumber_Load_[(Int32)TempCameras] = false;                                            //更改載入狀態
                            CCDNumber_VideoFormat = null;                                                           //釋放記憶體
                            ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras] = null;                          //釋放記憶體
                        }
                    }
                    CogFrameGrabberGigEs_TopCameras_Tool = null;//釋放CogFrameGrabberGigEs
                }

                SaveLog.Msg_("卸載相機 " + TempCameras.ToString());
                return(true);
            }
            catch (Exception ex)
            {
                SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString());

                CCDNumber_Load_[(Int32)TempCameras] = false;
                SaveLog.Msg_("卸載相機失敗 " + TempCameras.ToString());
                return(false);
            }
            #endregion 卸載CCD
        }//卸載CCD結束
Пример #4
0
        /// <summary>
        /// Initialize Vision Framegrabber, Camera and Acq Buffer
        /// </summary>
        public void Initialize(bool simulation)
        {
            bool runStatus = true;

            int i;

            _simulation = simulation;
            // Get a reference to a collection of all the GigE Vision cameras
            // found by this system.
            CogFrameGrabberGigEs frameGrabbers = new CogFrameGrabberGigEs();

            // look for cameras only if enabled
            if (!_simulation)
            {
                // look for MAXCAMERA cameras
                if (frameGrabbers.Count < MAX_CAMERA)
                {
                    runStatus = false;
                    if (HSTMachine.Workcell.HSTSettings.Install.HGADetectionUsingVision)
                    {
                        Seagate.AAS.Parsel.Equipment.Machine.DisplayStartupError(String.Format("Not all 2 cameras found in this system! {0}", new Exception()));
                        XyratexOSC.Logging.Log.Info(this, "Error: Not all 2 cameras found in this system!");
                    }
                    else
                    {
                        Seagate.AAS.Parsel.Equipment.Machine.DisplayStartupError("HGA Detection using vision is disabled");
                        XyratexOSC.Logging.Log.Info(this, "HGA Detection using vision is disable!");
                    }
                }
                //else
                //{

                try
                {
                    for (i = 0; i < frameGrabbers.Count; i++)
                    {
                        this.cogFrameGrabber[i] = frameGrabbers[i];

                        this.cogAcqFifo[i] = this.cogFrameGrabber[i].CreateAcqFifo("Generic GigEVision (Mono)",
                                                                                   CogAcqFifoPixelFormatConstants.Format8Grey, 0, false);

                        ICogAcqROI      cogROIParams;
                        ICogAcqContrast cogContrast;
                        int             x, y, width, height;

                        // Get the CogAcqContrastParams
                        cogContrast = this.cogAcqFifo[i].OwnedContrastParams;

                        // set default contrast params
                        if (cogContrast != null)
                        {
                            cogContrast.Contrast = 0.5;
                        }

                        this.cogAcqTrigger[i] = this.cogAcqFifo[i].OwnedTriggerParams;
                    }
                }
                catch (Exception ex)
                {
                    runStatus = false;
                    Log.Error(this, "Error: Could not Initialize Camera(s). Original error: " + ex.Message);
                }
            }
        }