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結束
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("程序已退出!"); }
}//載入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結束
/// <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); } } }