private void button_Open_Click(object sender, RoutedEventArgs e)
        {
            if (m_pDeviceList.nDeviceNum == 0 || m_CameraDeviceList.SelectedIndex == -1)
            {
                MessageBox.Show("无设备,请选择");
                return;
            }

            //获取选择的设备信息
            MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[m_CameraDeviceList.SelectedIndex], typeof(MyCamera.MV_CC_DEVICE_INFO));
            int nRet = m_pOperator.Open(ref device);   //打开设备

            if (MyCamera.MV_OK != nRet)
            {
                MessageBox.Show("设备打开失败!");
                return;
            }


            ImageCallback = new MyCamera.cbOutputdelegate(SaveImageCallBack);
            nRet          = m_pOperator.RegisterImageCallBack(ImageCallback, IntPtr.Zero);
            if (CameraOperator.CO_OK != nRet)
            {
                MessageBox.Show("注册回调失败!");
            }
            button_Open.IsEnabled = false;
        }
Exemple #2
0
        public override bool Init(int index = 0)
        {
            bool   ret          = false;
            string serialNumber = null;

            MyCamera.MV_CC_DEVICE_INFO device;
            try
            {
                CameraOperator.EnumDevices(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList);
                if (m_pDeviceList.nDeviceNum == 0)
                {
                    throw new Exception("相机未连接");
                }

                serialNumber = GetCameraSerialNumber(index);
                if (!cameraIDList.Contains(serialNumber))
                {
                    cameraIDList.Add(serialNumber);
                }

                device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[0], typeof(MyCamera.MV_CC_DEVICE_INFO));
                //打开设备
                int nRet = -1;
                nRet = m_pOperator.Open(ref device);
                if (MyCamera.MV_OK != nRet)
                {
                    throw new Exception("初始化失败");
                    //return;
                }

                //设置采集连续模式
                m_pOperator.SetEnumValue("AcquisitionMode", 2);
                m_pOperator.SetEnumValue("TriggerMode", 1);
                //m_pOperator.SetPixelFormatValue(0);

                ImageCallback = new MyCamera.cbOutputdelegate(ImageOut);
                m_pOperator.RegisterImageCallBack(ImageCallback, IntPtr.Zero);

                ret = true;
            }
            catch (Exception ex)
            {
                throw new Exception(serialNumber + "初始化失败:" + ex.Message);
            }
            return(ret);
        }
Exemple #3
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);
        }