示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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());
            }
        }
示例#6
0
        /// <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);
        }
示例#7
0
        /// <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());
            }
        }