/// <summary> /// 设置相机曝光 /// </summary> /// <param name="IDa"></param> /// <param name="exposuretime"></param> /// <param name="gainraw"></param> /// <returns></returns> public bool set_exposuretime_gainraw(IDaHua IDa, double exposuretime, double gainraw) { bool ok = false; if (exposuretime != 0) { /* 设置曝光 */ using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.ExposureTime]) { p.SetValue(exposuretime); } } if (gainraw != 0) { /* 设置增益 */ using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.GainRaw]) { p.SetValue(1.0); } } Save_DaHua_ShuJu(IDa); ok = true; return(ok); }
/// <summary> /// 设置相机触发模式 /// </summary> /// <param name="IDa"></param> /// <param name="trigger"></param> /// <returns></returns> public bool set_trigger(IDaHua IDa, string TriggerSource /*TriggerSourceEnum trigger*/) { bool ok = false; /* 打开Software Trigger */ // IDa.Dev.TriggerSet.Open(TriggerSourceEnum.Software); IDa.Dev.TriggerSet.Open(TriggerSource); Save_DaHua_ShuJu(IDa); ok = true; return(ok); }
/// <summary> /// 保存驱动数据 /// </summary> /// <param name="IDaHua">数据</param> /// <returns></returns> public bool Save_DaHua_ShuJu(IDaHua IDaHua) { bool ok = false; string filename = "Camer" + IDaHua.CamerIndx1.ToString(); IniLibrary.IniTool inifiles = new IniLibrary.IniTool(ref filename, "DaHua", null); inifiles.WriteString(IDaHua.ToString(), "CamerIndx1", IDaHua.CamerIndx1.ToString()); inifiles.WriteString(IDaHua.ToString(), "TriggerSourceenum", IDaHua.TriggerSourceenum); inifiles.WriteString(IDaHua.ToString(), "Exposuretime", IDaHua.Exposuretime.ToString()); inifiles.WriteString(IDaHua.ToString(), "Gainraw", IDaHua.Gainraw.ToString()); ok = true; return(ok); }
/// <summary> /// 显示数据 /// </summary> /// <param name="IDaHua">数据接口</param> /// <param name="control">控件</param> /// <returns></returns> public bool show_DaHua_ShuJu(IDaHua IDaHua, Control.ControlCollection control) { bool ok = false; try { foreach (Control con in control) { string name = con.Name; if ((con is ComboBox) || (con is TextBox)) { switch (name) { case "TriggerSourceenum": con.Text = IDaHua.TriggerSourceenum; break; case "Gainraw": con.Text = IDaHua.Gainraw.ToString(); break; case "CamerIndx1": con.Text = IDaHua.CamerIndx1.ToString(); break; case "Exposuretime": con.Text = IDaHua.Exposuretime.ToString(); break; default: break; } } if (con.Controls.Count > 0) { show_DaHua_ShuJu(IDaHua, con.Controls); } } } catch (Exception ex) { MessageBox.Show(ex.Message, this.ToString()); } ok = true; return(ok); }
/// <summary> /// 加载相机配置 /// </summary> /// <param name="IDa">相机参数</param> /// <param name="camer_number">加载第几个相机配置</param> void load_DaHua_ShuJu(IDaHua IDa, int camer_number) { string filename = "Camer" + camer_number.ToString(); IniLibrary.IniTool inifiles = new IniLibrary.IniTool(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()); } }
/// <summary> /// 关闭相机 /// </summary> /// <param name="IDa"></param> /// <returns></returns> public bool close_camer(IDaHua IDa) { bool ok = false; try { if (IDa.Dev == null) { throw new InvalidOperationException("Device is invalid"); } IDa.Dev.ShutdownGrab(); IDa.Dev.Close(); ok = true; } catch (Exception exception) { Catcher.Show(exception); } ok = true; return(ok); }
/// <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()); } }