Beispiel #1
0
        /// <summary>
        /// 方法:设置采集模式
        /// </summary>
        /// <param name="acqmode"></param>
        /// <param name="lineIdx"></param>
        /// <returns></returns>
        public override bool DoSetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint lineIdx)
        {
            ////ErrorMessage.Clear();
            try
            {
                if (m_objIGXDevice == null)
                {
                    ////ErrorMessage.Append("还没有打开设备。");
                    return(false);
                }
                IGXFeatureControl fc = m_objIGXDevice.GetRemoteFeatureControl();
                if (fc == null)
                {
                    ////ErrorMessage.Append("设置设备异常。");
                    return(false);
                }
                switch (acqmode)
                {
                case ProCommon.Communal.AcquisitionMode.Continue:
                    //设置采集模式连续采集
                    fc.GetEnumFeature("AcquisitionMode").SetValue("Continuous");
                    //设置触发模式为关
                    fc.GetEnumFeature("TriggerMode").SetValue("Off");
                    break;

                case ProCommon.Communal.AcquisitionMode.ExternalTrigger:
                    //设置采集模式连续采集
                    fc.GetEnumFeature("AcquisitionMode").SetValue("Continuous");
                    //设置触发模式为开
                    fc.GetEnumFeature("TriggerMode").SetValue("On");
                    //选择触发源为软触发
                    string strLine = string.Format("Line{0}", 0);
                    fc.GetEnumFeature("TriggerSource").SetValue(strLine);
                    break;

                case ProCommon.Communal.AcquisitionMode.SoftTrigger:
                    //设置采集模式连续采集
                    fc.GetEnumFeature("AcquisitionMode").SetValue("Continuous");
                    //设置触发模式为开
                    fc.GetEnumFeature("TriggerMode").SetValue("On");
                    //选择触发源为软触发
                    fc.GetEnumFeature("TriggerSource").SetValue("Software");
                    break;

                default:
                {
                    return(false);
                }
                }
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Beispiel #2
0
        public bool SetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum)
        {
            bool rt = false;

            if (ICameraDriverable != null)
            {
                rt = ICameraDriverable.SetAcquisitionMode(acqmode, frameNum);
            }
            return(rt);
        }
Beispiel #3
0
        /// <summary>
        /// 方法:设置采集模式
        /// </summary>
        /// <param name="acqmode"></param>
        /// <param name="frameNum"></param>
        /// <returns></returns>
        protected override bool DoSetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum)
        {
            bool rt   = false;
            int  nRet = MvCamCtrl.NET.MyCamera.MV_E_UNKNOW;

            try
            {
                if (_deviceRef != null)
                {
                    switch (acqmode)
                    {
                    case ProCommon.Communal.AcquisitionMode.Continue:
                        if (SetFreeRun())
                        {
                            rt = SetContinueRun();
                        }
                        break;

                    case ProCommon.Communal.AcquisitionMode.ExternalTrigger:
                        if (SetExternalTrigger(1, 1, 50))
                        {
                            rt = SetFrameNumber(frameNum);
                        }
                        break;

                    case ProCommon.Communal.AcquisitionMode.SoftTrigger:
                        if (SetInternalTrigger())
                        {
                            rt = SetFrameNumber(frameNum);
                        }
                        break;

                    default: break;
                    }

                    if (!rt)
                    {
                        if (DriverExceptionDel != null)
                        {
                            DriverExceptionDel(string.Format("错误:大华相机采集模式设置失败!\n错误代码:{0:X8}", nRet));
                        }
                    }
                }
            }
            catch
            {
            }
            finally
            {
            }
            return(rt);
        }
Beispiel #4
0
        /// <summary>
        /// 方法:设置采集模式
        /// </summary>
        /// <param name="acqmode"></param>
        /// 0-连续模式,触发采集[1-单帧模式,2-多帧模式]
        /// <param name="frameNum">
        /// 多帧模式下的帧数</param>
        /// <returns></returns>
        protected override bool DoSetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum)
        {
            bool rt = false;

            try
            {
                if (!AcqHandle.TupleEqual(new HalconDotNet.HTuple()))
                {
                    string v = "false";
                    switch (acqmode)
                    {
                    case ProCommon.Communal.AcquisitionMode.Continue:
                        v = "true";
                        break;

                    case ProCommon.Communal.AcquisitionMode.SoftTrigger:
                    case ProCommon.Communal.AcquisitionMode.ExternalTrigger:
                        v = "false";
                        break;

                    default:
                        break;
                    }
                    HalconDotNet.HOperatorSet.SetFramegrabberParam(AcqHandle, new HalconDotNet.HTuple("continuous_grabbing"), new HalconDotNet.HTuple(v));
                    rt = true;
                }
            }
            catch (HalconDotNet.HalconException hex)
            {
                if (DriverExceptionDel != null)
                {
                    DriverExceptionDel(string.Format("错误:Halcon模拟相机设置采集模式失败!\n错误代码:{0}", hex.GetErrorCode()));
                }
            }
            finally
            {
            }
            return(rt);
        }
Beispiel #5
0
        /// <summary>
        /// 方法:设置采集模式
        /// </summary>
        /// <param name="acqmode"></param>
        /// <param name="frameNum"></param>
        /// <returns></returns>
        public override bool DoSetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum)
        {
            bool rt = false;

            MVSDK.CameraSdkStatus status = MVSDK.CameraSdkStatus.CAMERA_STATUS_FAILED;
            try
            {
                if (_deviceRef > 0)
                {
                    switch (acqmode)
                    {
                    case ProCommon.Communal.AcquisitionMode.Continue:
                        status = MVSDK.MvApi.CameraSetTriggerMode(_deviceRef, 0);    //官方驱动:0表示连续模式,1是软触发,2是硬触发
                        break;

                    case ProCommon.Communal.AcquisitionMode.SoftTrigger:
                        status = MVSDK.MvApi.CameraSetTriggerMode(_deviceRef, 1);    //官方驱动:0表示连续模式,1是软触发,2是硬触发
                        rt     = (MVSDK.CameraSdkStatus.CAMERA_STATUS_SUCCESS == status) ? true : false;
                        if (rt)
                        {
                            status = MVSDK.MvApi.CameraSetTriggerCount(_deviceRef, (int)frameNum);
                        }
                        break;

                    case ProCommon.Communal.AcquisitionMode.ExternalTrigger:
                        status = MVSDK.MvApi.CameraSetTriggerMode(_deviceRef, 2);    //官方驱动:0表示连续模式,1是软触发,2是硬触发
                        rt     = (MVSDK.CameraSdkStatus.CAMERA_STATUS_SUCCESS == status) ? true : false;
                        if (rt)
                        {
                            status = MVSDK.MvApi.CameraSetTriggerCount(_deviceRef, (int)frameNum);
                        }
                        break;

                    default: break;
                    }
                    rt = (MVSDK.CameraSdkStatus.CAMERA_STATUS_SUCCESS == status) ? true : false;
                    if (!rt)
                    {
                        if (DriverExceptionDel != null)
                        {
                            DriverExceptionDel(string.Format("错误:迈德威视相机设置采集模式失败!\n错误代码:{0:X8}", System.Convert.ToInt32(status)));
                        }
                    }
                }
                else
                {
                    if (DriverExceptionDel != null)
                    {
                        DriverExceptionDel(string.Format("错误:迈德威视相机设置设备采集模式失败!\n错误描述:{0}", "设备未连接"));
                    }
                }
            }
            catch
            {
            }
            finally
            {
            }

            return(rt);
        }
Beispiel #6
0
 public abstract bool DoSetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum);
Beispiel #7
0
 public bool SetAcquisitionMode(ProCommon.Communal.AcquisitionMode acqmode, uint frameNum)
 {
     return(DoSetAcquisitionMode(acqmode, frameNum));
 }