// Shown here for demonstration purposes only to illustrate the effect of this configuration. static void DisableAllTriggers(object sender, EventArgs e) { ICamera camera = sender as ICamera; // Disable all trigger types. //------------------------------------------------------------------------------ // Get required enumerations. IEnumParameter triggerSelector = camera.Parameters [PLCamera.TriggerSelector]; IEnumParameter triggerMode = camera.Parameters [PLCamera.TriggerMode]; // Remember previous selector value. string oldSelectorValue = triggerSelector.IsReadable ? triggerSelector.GetValue() : null; try { // Turn trigger mode off for all trigger selector entries. foreach (string trigger in triggerSelector) { triggerSelector.SetValue(trigger); triggerMode.SetValue(PLCamera.TriggerMode.Off); } } finally { // Restore previous selector. if (oldSelectorValue != null) { triggerSelector.SetValue(oldSelectorValue); } } // Set acquisition mode to Continuous. camera.Parameters [PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame); }
// Shown here for demonstration purposes only to illustrate the effect of this configuration. public static void SoftwareTrigger(object sender, EventArgs e) { ICamera camera = sender as ICamera; // Get required Enumerations. IEnumParameter triggerSelector = camera.Parameters [PLCamera.TriggerSelector]; IEnumParameter triggerMode = camera.Parameters [PLCamera.TriggerMode]; IEnumParameter triggerSource = camera.Parameters [PLCamera.TriggerSource]; // Check the available camera trigger mode(s) to select the appropriate one: acquisition start trigger mode // (used by older cameras, i.e. for cameras supporting only the legacy image acquisition control mode; // do not confuse with acquisition start command) or frame start trigger mode // (used by newer cameras, i.e. for cameras using the standard image acquisition control mode; // equivalent to the acquisition start trigger mode in the legacy image acquisition control mode). string triggerName = "FrameStart"; if (!triggerSelector.CanSetValue(triggerName)) { triggerName = "AcquisitionStart"; if (!triggerSelector.CanSetValue(triggerName)) { throw new NotSupportedException("Could not select trigger. Neither FrameStart nor AcquisitionStart is available."); } } try { foreach (string trigger in triggerSelector) { triggerSelector.SetValue(trigger); if (triggerName == trigger) { // Activate trigger. triggerMode.SetValue(PLCamera.TriggerMode.On); // Set the trigger source to software. triggerSource.SetValue(PLCamera.TriggerSource.Software); } else { // Turn trigger mode off. triggerMode.SetValue(PLCamera.TriggerMode.Off); } } } finally { // Set selector for software trigger. triggerSelector.SetValue(triggerName); } // Set acquisition mode to Continuous camera.Parameters [PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous); }
/// <summary> /// 设置相机配参 /// </summary> private void SetParameters() { if (_Camera == null) { return; } // 关闭触发模式 _Camera.TriggerSet.Close(); // 设置帧格式 using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { ep.SetValue("Mono8"); } // 获取图像宽度 using (IIntegraParameter ip = _Camera.ParameterCollection[ParametrizeNameSet.ImageWidth]) { this.MaxWidth = Convert.ToInt32(ip.GetMaximum()); this.Width = Convert.ToInt32(ip.GetValue()); } // 获取图像高度 using (IIntegraParameter ip = _Camera.ParameterCollection[ParametrizeNameSet.ImageHeight]) { this.MaxHeight = Convert.ToInt32(ip.GetMaximum()); this.Height = Convert.ToInt32(ip.GetValue()); } }
public override bool SetTriggerMode(string triggerMode) { using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.TriggerMode]) { return(p.SetValue(triggerMode)); } }
public void Setting(byte Mode) //Mode 0:Live 1:Hard 2:Soft { for (byte i = 0; i < app.MaxCameraCount; i++) { if (SelectCameraCompany == 0 && selectCameraHandle[i] != (IntPtr)0) { m_Camera[i] = new StCamera(selectCameraHandle[i]); m_Camera[i].StopTransfer(); if (Mode == 0) { m_Camera[i].TriggerMode = StTrg.STCAM_TRIGGER_MODE_OFF; } else if (Mode == 1) { m_Camera[i].TriggerMode = StTrg.STCAM_TRIGGER_MODE_ON; m_Camera[i].TriggerSource = StTrg.STCAM_TRIGGER_SOURCE_HARDWARE; m_Camera[i].IOPinMode[0] = 16; m_Camera[i].IOPinPolarity[0] = 0; } else if (Mode == 2) { m_Camera[i].TriggerMode = StTrg.STCAM_TRIGGER_MODE_ON; m_Camera[i].TriggerSource = StTrg.STCAM_TRIGGER_SOURCE_SOFTWARE; } m_Camera[i].SetDisplayImageCallback(new StCamera.DisplayImageCallback(Receiver)); m_Camera[i].StopTransfer(); } else if (SelectCameraCompany == 1 && selectDevHandle[i] != -1) { m_dev[i].Open(); if (Mode == 0) { m_dev[i].TriggerSet.Close(); } else if (Mode == 1) { m_dev[i].TriggerSet.Open(TriggerSourceEnum.Line2); } else if (Mode == 2) { m_dev[i].TriggerSet.Open(TriggerSourceEnum.Software); } using (IEnumParameter p = m_dev[i].ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } m_dev[i].StreamGrabber.SetBufferCount(8); if (m_dev[i].StreamGrabber != null) { m_dev[i].StreamGrabber.ImageGrabbed += Receiver; } } } }
public override bool SetImageFormat(string value) { using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { return(p.SetValue(value)); } }
/// <summary> /// 输出相机开关量 /// </summary> /// <param name="millSeconds">高电平持续毫秒数</param> /// <param name="num">单号</param> public void IoOutput(int millSeconds, string num) { // 保证每次只允许一个信号输出 if (Interlocked.CompareExchange(ref _bIoOutFlag, 1, 0) == 0) { // 异步输出脉冲信号 new TaskFactory().StartNew(() => { try { if (_Camera != null) { //选择输出信号 using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.IOLineSelector]) { ep.SetValue("Line0"); } // 选择用户输出 using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputSelector]) { ep.SetValue("UserOutPut0"); } // 输出信号脉冲 using (IBooleanParameter bp = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputValue]) { bp.SetValue(false); } Thread.Sleep(millSeconds); // 停止输出脉冲 using (IBooleanParameter bp = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputValue]) { bp.SetValue(true); } // 允许输出 Interlocked.CompareExchange(ref _bIoOutFlag, 0, 1); } } catch (Exception e) { MvBarCodeGlobalVar.Log.Error(e); } }); } }
// Shown here for demonstration purposes only to illustrate the effect of this configuration. static void DisableCompression(object sender, EventArgs e) { ICamera camera = sender as ICamera; // Disable compression mode. //------------------------------------------------------------------------------ // Get required enumeration. IEnumParameter compressionMode = camera.Parameters [(EnumName)"ImageCompressionMode"]; if (compressionMode.IsWritable) { // Turn off compression mode. compressionMode.SetValue("Off"); } }
public override void Open() { objDev = Enumerator.GetDeviceByKey(strName); // 注册链接事件 objDev.CameraOpened += OnCameraOpen; objDev.ConnectionLost += OnConnectLoss; objDev.CameraClosed += OnCameraClose; // 打开设备 // open device if (!objDev.Open()) { MessageBox.Show("Open camera failed"); return; } // 打开Software Trigger objDev.TriggerSet.Open(TriggerSourceEnum.Software); // 设置图像格式 // set PixelFormat using (IEnumParameter p = objDev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } // 开启图像采集函数线程 renderThread = new Thread(new ThreadStart(ShowThread)); renderThread.IsBackground = true; renderThread.Start(); // 设置缓存个数为8(默认值为16) objDev.StreamGrabber.SetBufferCount(8); // 注册码流回调事件 objDev.StreamGrabber.ImageGrabbed += OnImageGrabbed; // 开启码流 // start grabbing if (!objDev.GrabUsingGrabLoopThread()) { MessageBox.Show(@"Start grabbing failed"); return; } }
public override bool InitialCamera(string _serialNumber) // 初始化相机 { string name = "Machine Vision:" + _serialNumber; this.userID = name; /* 设备搜索 */ if (li.Count > 0) { for (int i = 0; i < li.Count; i++) { if (li[i].Key == userID) { m_dev = Enumerator.GetDeviceByKey(userID); try { if (m_dev.Open()) { using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } /* 开启相机线程 */ renderThread = new Thread(new ThreadStart(ShowThread)); renderThread.IsBackground = true; renderThread.Start(); /* 设置缓存个数为8(默认值为16) */ m_dev.StreamGrabber.SetBufferCount(8); /* 注册码流回调事件 图像回调函数 */ m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed; /* 相机短线回调 */ m_dev.ConnectionLost += OnConnectLoss; ConnectState = true; } } catch (Exception) { return(false); } } } } return(true); }
/* 打开相机按钮事件 */ private void btnOpen_Click(object sender, EventArgs e) { try { /* 设备搜索 */ List <IDeviceInfo> li = Enumerator.EnumerateDevices(); if (li.Count > 0) { /* 获取搜索到的第一个设备 */ m_dev = Enumerator.GetDeviceByIndex(0); /* 注册链接时间 */ m_dev.CameraOpened += OnCameraOpen; m_dev.ConnectionLost += OnConnectLoss; m_dev.CameraClosed += OnCameraClose; /* 打开设备 */ if (!m_dev.Open()) { MessageBox.Show(@"连接相机失败"); return; } /* 打开Software Trigger */ if (bVideoMode) { m_dev.TriggerSet.Close(); } else { m_dev.TriggerSet.Open(TriggerSourceEnum.Software); } /* 设置图像格式 */ using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } /* 设置曝光 */ using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ExposureTime]) { p.SetValue(nExpTime); } /* 设置增益 */ using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.GainRaw]) { p.SetValue(fCamGain); } /* 设置缓存个数为8(默认值为16) */ m_dev.StreamGrabber.SetBufferCount(8); /* 注册码流回调事件 */ m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed; /* 开启码流 */ if (!m_dev.GrabUsingGrabLoopThread()) { MessageBox.Show(@"开启码流失败"); return; } } } catch (Exception exception) { Catcher.Show(exception); } }
// 打开相机 private void btnOpen_Click(object sender, EventArgs e) { try { // 设备搜索 List <IDeviceInfo> li = Enumerator.EnumerateDevices(); if (li.Count > 0) { // 获取搜索到的第一个设备 m_dev = Enumerator.GetDeviceByIndex(0); // 注册链接时间 m_dev.CameraOpened += OnCameraOpen; m_dev.ConnectionLost += OnConnectLoss; m_dev.CameraClosed += OnCameraClose; // 打开设备 if (!m_dev.Open()) { MessageBox.Show(@"连接相机失败"); return; } // 打开Software Trigger m_dev.TriggerSet.Open(TriggerSourceEnum.Software); // 设置图像格式 using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("BayerRG12Packed"); } // 设置图片亮度 using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.Brightness]) { p.SetValue(100); } //设置曝光时间 using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ExposureTime]) { p.SetValue(50000); } /* * // 设置图片高度 * using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImageHeight]) * { * p.SetValue(600); * } * // 设置图片宽度 * using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImageWidth]) * { * p.SetValue(600); * } */ // 注册码流回调事件 m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed; // 开启码流 if (!m_dev.GrabUsingGrabLoopThread()) { MessageBox.Show(@"开启码流失败"); return; } m_dev.ExecuteSoftwareTrigger(); } } catch (Exception exception) { Catcher.Show(exception); } }
/// <summary> /// 打开一个相机驱动, /// </summary> /// <param name="IDa"></param> /// <param name="camer_number"></param> /// <param name="CameraOpened"></param> /// <param name="CameraClosed"></param> /// <param name="event_OnConnectLoss"></param> /// <param name="event_OnImageGrabbed"></param> /// <param name="result"></param> public void open_camer(IDaHua IDa, int camer_number, EventHandler <EventArgs> CameraOpened, EventHandler <EventArgs> CameraClosed, delegate_OnConnectLoss event_OnConnectLoss , ref string result) { try { int number = 0; get_camer_number(ref number); if (number > 0) { if (camer_number < number) { #region 检测打开的相机是否有配置的数据 #region 无用代码 //string filename="Camer" + camer_number.ToString(); //Config.IniFile.IniFiles inifiles = new Config.IniFile.IniFiles(ref filename,"DaHua", null); //if (File.Exists(inifiles.FileName_Path1)) //{ // IDa.CamerIndx1 = Convert.ToInt16(inifiles.ReadString(IDa.ToString(), "CamerIndx1", IDa.CamerIndx1.ToString())); // IDa.TriggerSourceenum= inifiles.ReadString(IDa.ToString(), "TriggerSourceenum", IDa.TriggerSourceenum); // IDa.Exposuretime=Convert.ToDouble(inifiles.ReadString(IDa.ToString(), "Exposuretime", IDa.Exposuretime.ToString())); // IDa.Gainraw=Convert.ToDouble(inifiles.ReadString(IDa.ToString(), "Gainraw", IDa.Gainraw.ToString())); //} //else //{ // inifiles.WriteString(IDa.ToString(), "CamerIndx1", camer_number.ToString()); // inifiles.WriteString(IDa.ToString(), "TriggerSourceenum", IDa.TriggerSourceenum); // inifiles.WriteString(IDa.ToString(), "Exposuretime", IDa.Exposuretime.ToString()); // inifiles.WriteString(IDa.ToString(), "Gainraw", IDa.Gainraw.ToString()); //} #endregion load_DaHua_ShuJu(IDa, camer_number); #endregion IDa.Dev = Enumerator.GetDeviceByIndex(camer_number); // 注册链接时间 if (CameraOpened != null) { IDa.Dev.CameraOpened += CameraOpened; } IDa.Dev.ConnectionLost += IDa.OnConnectLoss;; if (CameraClosed != null) { IDa.Dev.CameraClosed += CameraClosed; } if (event_OnConnectLoss != null) { IDa.event_OnConnectLoss += event_OnConnectLoss; } //if (event_OnImageGrabbed != null) //{ // IDa.event_OnImageGrabbed += event_OnImageGrabbed; //} // 打开设备 if (!IDa.Dev.Open()) { result = "设备打开失败"; return; } // 打开Software Trigger // IDa.Dev.TriggerSet.Open(TriggerSourceEnum.Line1); IDa.Dev.TriggerSet.Open(IDa.TriggerSourceenum); /* 设置图像格式 */ using (IEnumParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } /* 设置曝光 */ using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.ExposureTime]) { p.SetValue(IDa.Exposuretime); } /* 设置增益 */ using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.GainRaw]) { p.SetValue(IDa.Gainraw); } /* 设置缓存个数为8(默认值为16) */ IDa.Dev.StreamGrabber.SetBufferCount(8); // 注册码流回调事件 // IDa.Dev.StreamGrabber.ImageGrabbed +=IDa.OnImageGrabbed; /* 开启码流 */ if (!IDa.Dev.GrabUsingGrabLoopThread()) { MessageBox.Show(@"开启码流失败"); return; } } else { result = "绑定相机number大于相机实际个数"; } } else { result = "相机驱动个数为零"; } } catch (Exception ex) { MessageBox.Show("打开相机报错:" + ex.Message, this.ToString()); } }
private void LoadFormInfo() { try { halconHelper = new HalconHelper(hWindowControl1.HalconWindow); List <IDeviceInfo> li = Enumerator.EnumerateDevices(); //if (Convert.ToInt32(this.Tag) != -1) if (li.Count > 0) { m_dev = Enumerator.GetDeviceByIndex(0); //m_dev = Enumerator.GetDeviceByIndex(Convert.ToInt32(this.Tag)); // 注册链接时间 m_dev.CameraOpened += OnCameraOpen; m_dev.ConnectionLost += OnConnectLoss; m_dev.CameraClosed += OnCameraClose; // 打开设备 if (!m_dev.Open()) { MessageBox.Show(@"连接相机失败"); return; } // 关闭Trigger //m_dev.TriggerSet.Close(); // 打开Software Trigger m_dev.TriggerSet.Open(TriggerSourceEnum.Software); // 设置图像格式 using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { p.SetValue("Mono8"); } // 注册码流回调事件 m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed; // 开启码流 if (!m_dev.GrabUsingGrabLoopThread()) { MessageBox.Show(@"开启码流失败"); return; } else { m_dev.ExecuteSoftwareTrigger(); } } else { } //注册一维码识别完成事件 halconHelper.Complete += OnComplete; halconHelper.Error += OnError; //注册串口接收事件 serialComm.DateReceived += new Comm.EventHandle(OnDataReceived); weightComm.DateReceived += new Comm.EventHandle(OnWeightDataReceived); } catch (Exception ex) { Catcher.Show(ex); } }