示例#1
0
        public override bool Open()
        {
            try
            {
                int nRet;


                //Util.Notify("相机开始打开");

                uint pixelFormat = 0;
                nRet = m_pOperator.GetEnumValue("PixelFormat", ref pixelFormat);
                if (MyCamera.MV_OK != nRet)
                {
                    throw new Exception("图像格式获取错误");
                }
                MyCamera.MvGvspPixelType imgType = (MyCamera.MvGvspPixelType)pixelFormat;
                if (imgType == MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV411_Packed ||
                    imgType == MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_Packed ||
                    imgType == MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_YUYV_Packed ||
                    imgType == MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV444_Packed)
                {
                    int result = m_pOperator.SetEnumValue("PixelFormat", (uint)MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed);
                    if (MyCamera.MV_OK != result)
                    {
                        throw new Exception("图像格式设置错误");
                    }
                }

                ////设置采集连续模式
                //nRet = m_pOperator.SetEnumValue("AcquisitionMode", 2);
                //if (MyCamera.MV_OK != nRet)
                //{
                //    throw new Exception("采集模式设置失败");

                //}

                //nRet = m_pOperator.SetEnumValue("TriggerMode", 0);
                //if (MyCamera.MV_OK != nRet)
                //{
                //    throw new Exception("触发模式设置失败");

                //}
                ImageCallback = new MyCamera.cbOutputdelegate(SaveImage);
                nRet          = m_pOperator.RegisterImageCallBack(ImageCallback, IntPtr.Zero);
                if (MyCamera.MV_OK != nRet)
                {
                    throw new Exception("回调函数注册失败");
                }


                ContinuousShotStop();
                //开始采集
                nRet = m_pOperator.StartGrabbing();
                if (MyCamera.MV_OK != nRet)
                {
                    throw new Exception("开始采集失败");
                }



                // Reset the stopwatch used to reduce the amount of displayed images. The camera may acquire images faster than the images can be displayed
                //stopWatch.Reset();

                GetCameraSettingData();

                IsLink = true;
            }
            catch (Exception ex)
            {
                Util.WriteLog(this.GetType(), ex);
                Util.Notify("相机打开出现异常:" + ex.Message);
                throw ex;
            }
            return(true);
        }