/// <summary> /// 打开相机 /// </summary> /// <param name="strSN">相机ID号</param> /// <returns>成功返回true,失败返回false</returns> /// public bool Open(string strSN) { try { string tempSN = string.Empty; m_ImageControl = new ICImagingControl(); foreach (Device dev in m_ImageControl.Devices) { if (dev.GetSerialNumber(out tempSN)) { if (strSN == tempSN)//判断是否等于指定相机序号 { m_ImageControl.Device = dev.Name; break; } } } if (!m_ImageControl.DeviceValid) { throw new Exception("没有找到相机,是否SN号有误!"); } if (m_ImageControl.LiveVideoRunning) { m_ImageControl.LiveStop(); } m_ImageControl.MemoryCurrentGrabberColorformat = TIS.Imaging.ICImagingControlColorformats.ICY8; float[] Frame = m_ImageControl.DeviceFrameRates; m_ImageControl.DeviceFrameRate = Frame[0]; VCDProp = TIS.Imaging.VCDHelpers.VCDSimpleModule.GetSimplePropertyContainer(m_ImageControl.VCDPropertyItems); //m_ImageControl.DeviceListChangedExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; //m_ImageControl.DeviceLostExecutionMode = TIS.Imaging.EventExecutionMode.AsyncInvoke; //m_ImageControl.ImageAvailableExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; m_ImageControl.LiveCaptureContinuous = true; m_ImageControl.LiveDisplayDefault = false; m_ImageControl.ImageAvailable += ImageCallBack; m_byMonoBuffer = new byte[m_nWidth * m_nHeight]; m_ImageControl.LiveStart(); TrigEnableSwitch = (TIS.Imaging.VCDSwitchProperty)m_ImageControl.VCDPropertyItems.FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode + ":" + TIS.Imaging.VCDIDs.VCDElement_Value + ":" + TIS.Imaging.VCDIDs.VCDInterface_Switch); TrigEnableSwitch.Switch = true; m_ImageControl.LiveStop(); //TrigEnableSwitch.Switch = false; // m_ImageControl.DeviceTrigger = false; Imagecamera cannot set trigger while openning bIsConnected = true; //IsConnected = true; return(true); } catch (Exception ex) { Trace.WriteLine("YMJ Init fail " + ex.Message); return(false); } }
private void Set_appropriate_params() { var local_vcdprop = new TIS.Imaging.VCDHelpers.VCDSimpleProperty(IC_Control.VCDPropertyItems); var local_AbsValExp = (VCDAbsoluteValueProperty)IC_Control.VCDPropertyItems.FindInterface(VCDIDs.VCDID_Exposure + ":" + VCDIDs.VCDElement_Value + ":" + VCDIDs.VCDInterface_AbsoluteValue); LoadExposure_ToCam(ref local_AbsValExp, 0.016f); local_vcdprop.RangeValue[VCDIDs.VCDID_Gain] = (local_vcdprop.RangeMin(VCDIDs.VCDID_Gain) + local_vcdprop.RangeMax(VCDIDs.VCDID_Gain)) / 2; }
private void Init_Properties(ICImagingControl ic) { vcdProp = new TIS.Imaging.VCDHelpers.VCDSimpleProperty(ic.VCDPropertyItems); var a = ic.VCDPropertyItems.CategoryMap; var b = ic.VCDPropertyItems.Count; var c = ic.VCDPropertyItems.get_Item(0); AbsValExp = (VCDAbsoluteValueProperty)ic.VCDPropertyItems.FindInterface(VCDIDs.VCDID_Exposure + ":" + VCDIDs.VCDElement_Value + ":" + VCDIDs.VCDInterface_AbsoluteValue); }
private void Update_Sliders() { if (icImagingControl1.DeviceValid) { vCDProp = TIS.Imaging.VCDHelpers.VCDSimpleModule.GetSimplePropertyContainer(icImagingControl1.VCDPropertyItems); //Loading Values into sliders camView.Slider_Set(CamView2.ControlsE.GainS, SliderControls.Minimum, vCDProp.RangeMin(VCDIDs.VCDID_Gain)); camView.Slider_Set(CamView2.ControlsE.GainS, SliderControls.Maximum, vCDProp.RangeMax(VCDIDs.VCDID_Gain)); camView.Slider_Set(CamView2.ControlsE.GainS, SliderControls.Value, vCDProp.RangeValue[VCDIDs.VCDID_Gain]); camView.Slider_Set(CamView2.ControlsE.GainS, SliderControls.TickFrequency, (camView.Slider_Get(CamView2.ControlsE.GainS, SliderControls.Maximum) - camView.Slider_Get(CamView2.ControlsE.GainS, SliderControls.Minimum) / 10)); camView.Add_event(CamView2.ControlsE.GainS, GainSlider_ValueChanged); camView.Slider_Set(CamView2.ControlsE.ExposureS, SliderControls.Minimum, vCDProp.RangeMin(VCDIDs.VCDID_Exposure)); //on our cam is 0.1ms //this.ExposureSlider.Maximum = VCDProp.RangeMax(TIS.Imaging.VCDIDs.VCDID_Exposure); //max value on cam is 300s which is bad camView.Slider_Set(CamView2.ControlsE.ExposureS, SliderControls.Maximum, 1000);; //max at 0.1s camView.Slider_Set(CamView2.ControlsE.ExposureS, SliderControls.Value, vCDProp.RangeValue[VCDIDs.VCDID_Exposure]); camView.Slider_Set(CamView2.ControlsE.ExposureS, SliderControls.TickFrequency, (camView.Slider_Get(CamView2.ControlsE.ExposureS, SliderControls.Maximum) - camView.Slider_Get(CamView2.ControlsE.ExposureS, SliderControls.Minimum)) / 10); camView.Add_event(CamView2.ControlsE.ExposureS, ExposureSlider_ValueChanged); if (vCDProp.AutoAvailable(VCDIDs.VCDID_Gain)) { vCDProp.Automation[VCDIDs.VCDID_Gain] = false; } if (vCDProp.AutoAvailable(VCDIDs.VCDID_Exposure)) { vCDProp.Automation[VCDIDs.VCDID_Exposure] = false; } } else { camView.Set_Enabled(CamView2.ControlsE.GainS, false); camView.Remove_Event(CamView2.ControlsE.GainS, GainSlider_ValueChanged); camView.Set_Enabled(CamView2.ControlsE.ExposureS, false); camView.Remove_Event(CamView2.ControlsE.ExposureS, ExposureSlider_ValueChanged); } }