}//卸載CCD結束 /// <summary> /// 調整曝光值 /// </summary> /// <param name="TempCameras">指定相機</param> /// <param name="Exposure">給定曝光值</param> /// <returns>設定成功與否</returns> public static Boolean CCD_Exposure_Function(VisionCameras TempCameras, double Exposure) { string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString(); try { // Get a reference to the ExposureParams interface of the AcqFifo. ICogAcqExposure ExposureParams = ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].OwnedExposureParams; ICogAcqBrightness BrightnessParams = ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].OwnedBrightnessParams; ICogAcqContrast ContrastParams = ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].OwnedContrastParams; // Always check to see an "Owned" property is supported // before using it. if (ExposureParams != null) // Check for exposure support. { BrightnessParams.Brightness = 0.5; ContrastParams.Contrast = 0; ExposureParams.Exposure = Exposure; // sets ExposureTimeAbs ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].Prepare(); // writes the properties to the camera. } SaveLog.Msg_("調整曝光值 " + TempCameras.ToString() + " :" + Exposure.ToString()); return(true); } catch (Exception ex) { SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString()); SaveLog.Msg_("調整曝光值 " + TempCameras.ToString() + " :" + Exposure.ToString() + " 失敗"); return(false); } }
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結束
}//CCD連續取像結束 public static Boolean Get_Cameras_Live_Status(VisionCameras TempCameras) { string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString(); if (CCDNumber_Load_[(Int32)TempCameras])//如果Camera有初始化成功 { try { return(CCDNumber_LiveFleg_[(Int32)TempCameras]); } catch (Exception ex) { SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString()); return(false); } } else { return(false); } }
}//載入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> /// CCD停止取像 /// </summary> /// <param name="TempCCDDisplay">CCDDisplay畫面</param> /// <param name="TempCCDAcqFifo">CCD實體相機串流口</param> /// <param name="CCD_Load">CCD是否成功載入旗標</param> /// <returns>回傳是否成功停止取像</returns> public static Boolean StopLive_Image_Function(Cognex.VisionPro.CogRecordDisplay TempCCDDisplay, VisionCameras TempCameras)//CCD停止取像 { string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString(); #region 停止取像 Int32 TempCameras_ = (int)TempCameras; if (CCDNumber_Load_[(Int32)TempCameras])//如果Camera有初始化成功 { try { CCDNumber_LiveFleg_[TempCameras_] = false; //停止取像 TempCCDDisplay.StopLiveDisplay(); //單張取像 TempCCDDisplay.Image = (Cognex.VisionPro.CogImage8Grey)ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].Acquire(out CCDNumber_GrabOut_); Thread.Sleep(50); SaveLog.Msg_("停止取像" + TempCameras.ToString()); return(true); } catch (Exception ex) { SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString()); CCDNumber_LiveFleg_[TempCameras_] = false; return(false); } } else { return(false); } #endregion 停止取像 }//CCD停止取像結束
}//CCD單張取像結束 /// <summary> /// CCD連續取像 /// </summary> /// <param name="TempCCDDisplay">CCDDisplay畫面</param> /// <param name="TempCCDAcqFifo">CCD實體相機串流口</param> /// <param name="CCD_Load">CCD是否成功載入旗標</param> /// <returns>回傳是否成功連續取像</returns> public static Boolean Live_Image_Function(Cognex.VisionPro.CogRecordDisplay TempCCDDisplay, VisionCameras TempCameras)//CCD連續取像 { string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString(); #region 連續取像 if (CCDNumber_Load_[(Int32)TempCameras])//如果Camera有初始化成功 { try { if (CCDNumber_LiveFleg_[(Int32)TempCameras] == false) { //取像中 TempCCDDisplay.StaticGraphics.Clear(); TempCCDDisplay.InteractiveGraphics.Clear(); //清空影像 TempCCDDisplay.StartLiveDisplay(ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras]); //建立影像fifo與Camers連結關聯 CCDNumber_LiveFleg_[(Int32)TempCameras] = true; SaveLog.Msg_("取像" + TempCameras.ToString()); } else { //靜止取像 CCDNumber_LiveFleg_[(Int32)TempCameras] = false; TempCCDDisplay.StopLiveDisplay(); //單張取像 TempCCDDisplay.Image = (Cognex.VisionPro.CogImage8Grey)ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].Acquire(out CCDNumber_GrabOut_); SaveLog.Msg_("停止取像" + TempCameras.ToString()); } return(true); } catch (Exception ex) { SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString()); CCDNumber_LiveFleg_[(Int32)TempCameras] = false; return(false); } } else { return(false); } #endregion 連續取像 }//CCD連續取像結束
/// <summary> /// CCD單張取像 /// </summary> /// <param name="TempcogDisplay">CCDDisplay畫面</param> /// <param name="TempCameras">CCD實體相機個數</param> /// <returns>回傳是否成功單張取像</returns> public static Boolean Grab_Image_Function(Cognex.VisionPro.CogRecordDisplay TempCCDDisplay, VisionCameras TempCameras)//CCD單張取像 { string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString(); #region 單張取像 if (CCDNumber_Load_[(Int32)TempCameras])//如果CCD有初始化成功 { try { TempCCDDisplay.StaticGraphics.Clear(); TempCCDDisplay.InteractiveGraphics.Clear(); TempCCDDisplay.Image = (Cognex.VisionPro.CogImage8Grey)ICogAcqFifo_CCDNumber_AcqFifo_Tool[(Int32)TempCameras].Acquire(out CCDNumber_GrabOut_);//單張取像 SaveLog.Msg_("單張取像 " + TempCameras.ToString()); return(true); } catch (Exception ex) { SaveLog.Msg_(ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString()); SaveLog.Msg_("單張取像失敗 " + TempCameras.ToString()); return(false); } } else { SaveLog.Msg_("未載入相機 " + TempCameras.ToString()); return(true); } #endregion 單張取像 }//CCD單張取像結束