Beispiel #1
0
        public event Action Trigger_event;//触发模式事件
        #endregion 定义

        #region 打开相机
        /// <summary>
        /// 打开相机,并传入相机参数
        /// </summary>
        public override bool OpenCamera(BaseParCamera baseParCamera)
        {
            try
            {
                g_BaseParCamera = baseParCamera;
                //连接相机
                if (!ConnectCamera(baseParCamera.Serial_Camera))
                {
                    BlOpen = false;
                    return(false);
                }
                //彩色相机格式判断
                if (!ColorCamera())
                {
                    BlOpen = false;
                    return(false);
                }
                //抓取图像
                if (!StartCapture())
                {
                    BlOpen = false;
                    return(false);
                }
                BlOpen = true;
            }
            catch (Exception ex)
            {
                BlOpen = false;
                Log.L_I.WriteError(NameClass, ex);
            }
            return(BlOpen);
        }
Beispiel #2
0
 public void Init(BaseParCamera varCamera)
 {
     try
     {
         //图像处理
         g_ParCamera = varCamera;
         ShowPar_Invoke();
     }
     catch (Exception ex)
     {
         Log.L_I.WriteError(NameClass, ex);
     }
 }
Beispiel #3
0
        /// <summary>
        /// 打开相机,并传入相机参数
        /// </summary>
        public override bool OpenCamera(BaseParCamera baseParCamera)
        {
            try
            {
                g_BaseParCamera = baseParCamera;

                //连接相机
                if (!ConnectCamera( baseParCamera.Serial_Camera))
                {
                    BlOpen = false;
                    return false;
                }
                BlOpen = true;
                return true;
            }
            catch (Exception ex)
            {
                BlOpen = false;
                Log.L_I.WriteError(NameClass + NameClass, ex);
                return false;
            }
        }
Beispiel #4
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="baseParCamera"></param>
        public void Init(BaseParCamera baseParCamera)
        {
            try
            {
                g_ParCamera = baseParCamera;
                //选择是何型号的相机,以及采用的打开方式
                //switch (baseParCamera.TypeCamera_e)
                //{
                //    case TypeCamera_enum.PGSDK:
                //        g_CameraAbstract = new Camera_PGSDK();
                //        break;

                //    case TypeCamera_enum.BSLSDK:
                //        g_CameraAbstract = new Camera_BSLSDK();
                //        break;

                //    case TypeCamera_enum.HIKSDK:
                //        g_CameraAbstract = new Camera_HIKSDK();
                //        break;

                //    default:
                //        g_CameraAbstract = new Camera_HIKSDK();
                //        break;
                //}
                //使用反射来进行处理
                string nameClass = "Camera_" + baseParCamera.TypeCamera_e.ToString();                                          //类名称

                g_CameraAbstract           = Activator.CreateInstance(null, "Camera." + nameClass).Unwrap() as CameraAbstract; //null表示当前程序集
                g_CameraAbstract.NameClass = NameClass;

                //事件注册
                LoginEvent();
            }
            catch (Exception ex)
            {
                Log.L_I.WriteError(NameClass, ex);
            }
        }
Beispiel #5
0
        public event Action Trigger_event;//触发模式事件
        #endregion 定义

        /// <summary>
        /// 打开相机,并传入相机设置参数
        //public abstract bool OpenCamera(string SerialNumber, ParCameraSetting parCameraSetting);

        public abstract bool OpenCamera(BaseParCamera baseParCamera);
Beispiel #6
0
        /// <summary>
        /// 打开相机,并传入相机参数
        /// </summary>
        public override bool OpenCamera(BaseParCamera baseParCamera)
        {
            try
            {
                g_BaseParCamera = baseParCamera;
                g_SerialNumber  = baseParCamera.Serial_Camera;//序列号
#if (SDK)
                g_Camera = new Basler.Pylon.Camera(g_SerialNumber);
                g_Camera.Open();

                // 设置触发模式
                if (g_BaseParCamera.BlUsingTrigger)
                {
                    g_Camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous);
                    g_Camera.StreamGrabber.Start(GrabStrategy.OneByOne, GrabLoop.ProvidedByStreamGrabber);
                    SetTrigger();
                }
                else
                {
                    g_Camera.Parameters[PLCamera.TriggerMode].TrySetValue("Off");
                    g_Camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame);
                    SetContinue();
                }

                //通过像素格式来判断是否彩色相机
                g_PixelFormat = g_Camera.Parameters[PLCamera.PixelFormat].GetValue();
                if (g_PixelFormat.Contains("Mono"))
                {
                    BlColor = false;
                }
                else
                {
                    BlColor = true;
                }
                //触发模式
                if (g_BaseParCamera.BlUsingTrigger)
                {
                    g_Camera.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed;
                }

                string path = new DirectoryInfo("../").FullName;
                if (path.Contains("bin"))//调试状态
                {
                    //设置60000ms检测不到心跳,那么相机自动断开,防止相机需要断电处理
                    g_Camera.Parameters[PLTransportLayer.HeartbeatTimeout].TrySetToMaximum();
                    double heartbeatValue = g_Camera.Parameters[PLTransportLayer.HeartbeatTimeout].GetValue();
                }
                else
                {
                    //设置4000ms检测不到心跳,那么相机自动断开,防止相机需要断电处理
                    g_Camera.Parameters[PLTransportLayer.HeartbeatTimeout].TrySetValue(4000, IntegerValueCorrection.Nearest);
                }
                try
                {
                    if (g_Camera.Parameters[PLCamera.PixelFormat].TrySetValue(PLCamera.PixelFormat.BayerBG8))
                    {
                    }
                }
                catch (Exception ex)
                {
                }
#endif
                //相机打开成功的标志位
                BlOpen = true;
            }
            catch (Exception ex)
            {
                BlOpen = false;
                Log.L_I.WriteError(NameClass, ex);
            }
            return(BlOpen);
        }