예제 #1
0
        /// <summary>设置相机增益参数</summary>
        public int SetGain(double value)
        {
            if (!IsDeviceOpen)
            {
                return((int)ErrorDef.NotOpen);
            }
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = _hikCmr.MV_CC_GetFloatValue_NET("Gain", ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            if (value < stParam.fMin || value > stParam.fMax)
            {
                return((int)ErrorDef.ParamError);
            }
            int err = _hikCmr.MV_CC_SetFloatValue_NET("Gain", (float)value);

            if (MyCamera.MV_OK != err)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            return((int)ErrorDef.Success);
        }
예제 #2
0
        public short GetGainRange(out int minValue, out int maxValue)
        {
            minValue = 0;
            maxValue = 1000;
            try
            {
                MyCamera.MVCC_FLOATVALUE fValue = new MyCamera.MVCC_FLOATVALUE();
                int nRet = this.camera.MV_CC_GetFloatValue_NET("AutoGainLowerLimit", ref fValue);
                if (nRet != MyCamera.MV_OK)
                {
                    return(-1);
                }
                minValue = (int)fValue.fMin;
                maxValue = (int)fValue.fMax;
                if (maxValue > 10000)
                {
                    maxValue = 10000;
                }

                return(0);
            }
            catch
            {
                return(-1);
            }
        }
예제 #3
0
        private IDictionary <ECameraParameter, CameraParameter> GetParameterDictionary()
        {
            var dictionary   = new Dictionary <ECameraParameter, CameraParameter>();
            var width        = new MyCamera.MVCC_INTVALUE();
            var height       = new MyCamera.MVCC_INTVALUE();
            var offsetX      = new MyCamera.MVCC_INTVALUE();
            var offsetY      = new MyCamera.MVCC_INTVALUE();
            var exposure     = new MyCamera.MVCC_FLOATVALUE();
            var gain         = new MyCamera.MVCC_FLOATVALUE();
            var frameRate    = new MyCamera.MVCC_FLOATVALUE();
            var triggerDelay = new MyCamera.MVCC_FLOATVALUE();

            _device.MV_CC_GetWidth_NET(ref width);
            _device.MV_CC_GetHeight_NET(ref height);
            _device.MV_CC_GetAOIoffsetX_NET(ref offsetX);
            _device.MV_CC_GetAOIoffsetY_NET(ref offsetY);
            _device.MV_CC_GetExposureTime_NET(ref exposure);
            _device.MV_CC_GetGain_NET(ref gain);
            _device.MV_CC_GetFrameRate_NET(ref frameRate);
            _device.MV_CC_GetTriggerDelay_NET(ref triggerDelay);

            dictionary[ECameraParameter.Width]        = new CameraParameter(width.nCurValue, width.nMin, width.nMax);
            dictionary[ECameraParameter.Height]       = new CameraParameter(height.nCurValue, height.nMin, height.nMax);
            dictionary[ECameraParameter.OffsetX]      = new CameraParameter(offsetX.nCurValue, offsetX.nMin, offsetX.nMax);
            dictionary[ECameraParameter.OffsetY]      = new CameraParameter(offsetY.nCurValue, offsetY.nMin, offsetY.nMax);
            dictionary[ECameraParameter.Exposure]     = new CameraParameter(exposure.fCurValue, exposure.fMin, exposure.fMax);
            dictionary[ECameraParameter.Gain]         = new CameraParameter(gain.fCurValue, gain.fMin, gain.fMax);
            dictionary[ECameraParameter.FrameRate]    = new CameraParameter(frameRate.fCurValue, frameRate.fMin, frameRate.fMax);
            dictionary[ECameraParameter.TriggerDelay] = new CameraParameter(triggerDelay.fCurValue, triggerDelay.fMin, triggerDelay.fMax);

            return(dictionary);
        }
예제 #4
0
        public static bool GetCameraExposureTime(string camName, out float exposureTime, out float minLimit, out float maxLimit)
        {
            MyCamera.MVCC_FLOATVALUE ExposureTime = new MyCamera.MVCC_FLOATVALUE();
            MyCamera cam = cameraCltr.DicMyCamera(camName);

            if (cam is null)
            {
                StrErrorMsg  = "相机" + camName + "连接失败";
                exposureTime = -1;
                minLimit     = -1;
                maxLimit     = -1;
                return(false);
            }
            int nRet = cam.MV_CC_GetExposureTime_NET(ref ExposureTime);

            if (MyCamera.MV_OK != nRet)
            {
                StrErrorMsg  = "相机曝光值参数获取失败";
                exposureTime = -1;
                minLimit     = -1;
                maxLimit     = -1;
                return(false);
            }
            exposureTime = ExposureTime.fCurValue;
            minLimit     = ExposureTime.fMin;
            maxLimit     = ExposureTime.fMax;
            return(true);
        }
예제 #5
0
        public short Init()
        {
            try
            {
                MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
                camera.MV_CC_GetFloatValue_NET("ResultingFrameRate", ref stParam);
                this.FrameRate = stParam.fCurValue;

                MyCamera.MVCC_INTVALUE nValue = new MyCamera.MVCC_INTVALUE();
                camera.MV_CC_GetIntValue_NET("Width", ref nValue);
                this.ImageWidth = (int)nValue.nCurValue;

                camera.MV_CC_GetIntValue_NET("Height", ref nValue);
                this.ImageHeight = (int)nValue.nCurValue;

                if (this.ImageWidth <= 0)
                {
                    this.ImageWidth = 1280;
                }
                if (this.ImageHeight <= 0)
                {
                    this.ImageHeight = 960;
                }

                return(0);
            }
            catch
            {
                return(-1);
            }
        }
예제 #6
0
        /// <summary>设置相机曝光时间 </summary>
        public int SetExposure(double microSeconds)
        {
            if (!IsDeviceOpen)
            {
                return((int)ErrorDef.NotOpen);
            }
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = _hikCmr.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            if (microSeconds < stParam.fMin || microSeconds > stParam.fMax)
            {
                return((int)ErrorDef.ParamError);
            }
            int err = _hikCmr.MV_CC_SetFloatValue_NET("ExposureTime", (float)microSeconds);

            if (MyCamera.MV_OK != err)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            return((int)ErrorDef.Success);
        }
예제 #7
0
 public override double GetTriggerDelayTimeMin()
 {
     MyCamera.MVCC_FLOATVALUE floatParam = new MyCamera.MVCC_FLOATVALUE();
     if (hikvisionCamera.MV_CC_GetFloatValue_NET("TriggerDelay", ref floatParam) == MyCamera.MV_OK)
     {
         return(floatParam.fMin);
     }
     return(0d);
 }
예제 #8
0
 public override double GetMinGain()
 {
     MyCamera.MVCC_FLOATVALUE floatParam = new MyCamera.MVCC_FLOATVALUE();
     if (hikvisionCamera.MV_CC_GetFloatValue_NET("AutoGainLowerLimit", ref floatParam) != MyCamera.MV_OK)
     {
         return(floatParam.fCurValue);
     }
     return(0d);
 }
예제 #9
0
 public override double GetExposureTime()
 {
     MyCamera.MVCC_FLOATVALUE floatParam = new MyCamera.MVCC_FLOATVALUE();
     if (hikvisionCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref floatParam) == MyCamera.MV_OK)
     {
         return(floatParam.fCurValue);
     }
     return(0d);
 }
예제 #10
0
        public float GetExposureTime()
        {
            MyCamera.MVCC_FLOATVALUE ExposureValue = new MyCamera.MVCC_FLOATVALUE();
            int nRet = pCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref ExposureValue);

            if (MyCamera.MV_OK == nRet)
            {
                return(ExposureValue.fCurValue);
            }
            return(HIK_ER);
        }
예제 #11
0
 public override double GetGain()
 {
     MyCamera.MVCC_FLOATVALUE floatParam = new MyCamera.MVCC_FLOATVALUE();
     if (hikvisionCamera.MV_CC_GetFloatValue_NET("Gain", ref floatParam) != MyCamera.MV_OK)
     {
         return(0d);
     }
     else
     {
         return(floatParam.fCurValue);
     }
 }
예제 #12
0
        // 设置参数
        public void SetParam(float gain, float exposure, ref string gainString, ref string exposureString, MyCamera cam)
        {
            // 增益
            // 获取当前Gain、最大Gain、最小Gain
            MyCamera.MVCC_FLOATVALUE gainValue = new MyCamera.MVCC_FLOATVALUE();
            cam.MV_CC_GetGain_NET(ref gainValue);
            //float gain = gainValue.fCurValue;
            float maxGain = gainValue.fMax;
            float minGain = gainValue.fMin;

            // 判断是否处于最小到最大值之间
            if (gain < minGain)
            {
                MessageBox.Show("小于最小值,已修改为最小增益值!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                gain = minGain;
            }
            else if (gain > maxGain)
            {
                MessageBox.Show("大于最大值,已修改为最大增益值!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                gain = maxGain;
            }
            // 关闭自动设置
            cam.MV_CC_SetEnumValue_NET("GainAuto", 0);
            // 设置Gain
            cam.MV_CC_SetFloatValue_NET("Gain", gain);
            gainString = gain.ToString("F0");

            // 曝光时间
            // 获取当前Exposure、最大Exposure、最小Exposure
            MyCamera.MVCC_FLOATVALUE exposureValue = new MyCamera.MVCC_FLOATVALUE();
            cam.MV_CC_GetExposureTime_NET(ref exposureValue);
            //float exposure = exposureValue.fCurValue;
            float maxExposure = exposureValue.fMax;
            float minExposure = exposureValue.fMin;

            // 判断是否处于最小到最大值之间
            if (exposure < minExposure)
            {
                MessageBox.Show("小于最小值,已修改为最小曝光时间值!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                exposure = minExposure;
            }
            else if (exposure > maxExposure)
            {
                MessageBox.Show("大于最大值,已修改为最大曝光时间值!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                exposure = maxExposure;
            }

            // 关闭自动设置
            cam.MV_CC_SetEnumValue_NET("ExposureAuto", 0);
            // 设置ExposureTime
            cam.MV_CC_SetFloatValue_NET("ExposureTime", exposure);
            exposureString = exposure.ToString("F0");
        }
예제 #13
0
 public override double GetMaxExposureTime()
 {
     MyCamera.MVCC_FLOATVALUE floatParam = new MyCamera.MVCC_FLOATVALUE();
     if (hikvisionCamera.MV_CC_GetFloatValue_NET("AutoExposureTimeupperLimit", ref floatParam) != MyCamera.MV_OK)
     {
         return(0d);
     }
     else
     {
         return(floatParam.fCurValue);
     }
 }
예제 #14
0
        public override uint GetExpourseTime()
        {
            uint _expoursetime = 0;

            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = m_pMyCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);

            if (MyCamera.MV_OK == nRet)
            {
                _expoursetime = (uint)stParam.fCurValue;
            }
            return(_expoursetime);
        }
예제 #15
0
        /// <summary>
        /// 通用函数
        /// </summary>
        /// /// <param name="strKey" >读取项目</param>
        /// <param name="dblValue">读取值</param>        
        /// <returns></returns>
        public bool GetFloatValue(string strKey, ref float pfValue)
        {
#if(SDK)
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = g_MyCamera.MV_CC_GetFloatValue_NET(strKey, ref stParam);
            if (MyCamera.MV_OK != nRet)
            {
                return false;
            }

            pfValue = stParam.fCurValue;
#endif
            return true;
        }
예제 #16
0
        /****************************************************************************
        * @fn           GetFloatValue
        * @brief        获取Float型参数值
        * @param        strKey                IN        参数键值,具体键值名称参考HikCameraNode.xls文档
        * @param        pValue                OUT       返回值
        * @return       成功:0;错误:-1
        ****************************************************************************/
        public int GetFloatValue(string strKey, ref float pfValue)
        {
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = m_pCSI.MV_CC_GetFloatValue_NET(strKey, ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                return(CO_FAIL);
            }

            pfValue = stParam.fCurValue;

            return(CO_OK);
        }
예제 #17
0
 public override string GetMaxGain()
 {
     try
     {
         MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
         int nRet = camera.MV_CC_GetFloatValue_NET("Gain", ref stParam);
         this.Info.MaxExposureTime = Convert.ToInt64(stParam.fMax);
     }
     catch (Exception ex)
     {
         WriteErrorLog($"{this.Info.UserID}" + ex.ToString());
         bConnectOk = false;
     }
     return(base.GetMaxGain());
 }
예제 #18
0
        // 获取参数
        public void GetParam(ref string gain, ref string exposure, MyCamera cam)
        {
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            // 获取曝光值
            int nRet = cam.MV_CC_GetFloatValue_NET("Gain", ref stParam);

            if (MyCamera.MV_OK == nRet)
            {
                gain = stParam.fCurValue.ToString("F0");
            }
            // 获取增益
            nRet = cam.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);
            if (MyCamera.MV_OK == nRet)
            {
                exposure = stParam.fCurValue.ToString("F0");
            }
        }
예제 #19
0
        /// <summary>获取相机增益参数</summary>
        public int GetGain(out double value)
        {
            value = 0;
            if (!IsDeviceOpen)
            {
                return((int)ErrorDef.NotOpen);
            }
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = _hikCmr.MV_CC_GetFloatValue_NET("Gain", ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            value = (double)stParam.fCurValue;
            return((int)ErrorDef.Success);
        }
예제 #20
0
        /// <summary>获取相机曝光时间</summary>
        public int GetExposure(out double microSeconds)
        {
            microSeconds = 0;
            if (!IsDeviceOpen)
            {
                return((int)ErrorDef.NotOpen);
            }
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = _hikCmr.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            microSeconds = (double)stParam.fCurValue;
            return((int)ErrorDef.Success);
        }
예제 #21
0
        private void bnGetParam_Click(object sender, EventArgs e)
        {
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            int nRet = m_MyCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);

            if (MyCamera.MV_OK == nRet)
            {
                tbExposure.Text = stParam.fCurValue.ToString("F1");
            }

            nRet = m_MyCamera.MV_CC_GetFloatValue_NET("Gain", ref stParam);
            if (MyCamera.MV_OK == nRet)
            {
                tbGain.Text = stParam.fCurValue.ToString("F1");
            }

            nRet = m_MyCamera.MV_CC_GetFloatValue_NET("ResultingFrameRate", ref stParam);
            if (MyCamera.MV_OK == nRet)
            {
                tbFrameRate.Text = stParam.fCurValue.ToString("F1");
            }
        }
예제 #22
0
        public void SetExposureTime()
        {
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();

            nRet = getonecamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);
            if (nRet == MyCamera.MV_OK)
            {
                // something is wrong,the param can not set
                nRet = getonecamera.MV_CC_SetEnumValue_NET("ExposureAuto", 0);
                if (nRet != MyCamera.MV_OK)
                {
                    Console.WriteLine("Set ExposureAuto failed!");
                }
            }

            nRet = getonecamera.MV_CC_SetEnumValueByString_NET("ExposureMode", "Timed");
            if (nRet != MyCamera.MV_OK)
            {
                Console.WriteLine("Set ExposureMode failed!");
            }

            nRet = getonecamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);

            if ((float)ExposureTime > stParam.fMin && (float)ExposureTime < stParam.fMax)
            {
                nRet = getonecamera.MV_CC_SetFloatValue_NET("ExposureTime", (float)ExposureTime);
                if (nRet != MyCamera.MV_OK)
                {
                    Console.WriteLine("Set ExposureTime failed!");
                }
            }

            nRet = getonecamera.MV_CC_SetEnumValue_NET("GainAuto", 0);
            if (nRet != MyCamera.MV_OK)
            {
                Console.WriteLine("Set GainAuto failed!");
            }
        }
예제 #23
0
파일: Recording.cs 프로젝트: HUT-17/HUT
        static void Main(string[] args)
        {
            int      nRet   = MyCamera.MV_OK;
            MyCamera device = new MyCamera();

            do
            {
                // ch:枚举设备 | en:Enum device
                MyCamera.MV_CC_DEVICE_INFO_LIST stDevList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
                nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref stDevList);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Enum device failed:{0:x8}", nRet);
                    break;
                }
                Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum));
                if (0 == stDevList.nDeviceNum)
                {
                    break;
                }

                MyCamera.MV_CC_DEVICE_INFO stDevInfo;                            // 通用设备信息

                // ch:打印设备信息 en:Print device info
                for (Int32 i = 0; i < stDevList.nDeviceNum; i++)
                {
                    stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO));

                    if (MyCamera.MV_GIGE_DEVICE == stDevInfo.nTLayerType)
                    {
                        MyCamera.MV_GIGE_DEVICE_INFO stGigEDeviceInfo = (MyCamera.MV_GIGE_DEVICE_INFO)MyCamera.ByteToStruct(stDevInfo.SpecialInfo.stGigEInfo, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
                        uint nIp1 = ((stGigEDeviceInfo.nCurrentIp & 0xff000000) >> 24);
                        uint nIp2 = ((stGigEDeviceInfo.nCurrentIp & 0x00ff0000) >> 16);
                        uint nIp3 = ((stGigEDeviceInfo.nCurrentIp & 0x0000ff00) >> 8);
                        uint nIp4 = (stGigEDeviceInfo.nCurrentIp & 0x000000ff);
                        Console.WriteLine("\n" + i.ToString() + ": [GigE] User Define Name : " + stGigEDeviceInfo.chUserDefinedName);
                        Console.WriteLine("device IP :" + nIp1 + "." + nIp2 + "." + nIp3 + "." + nIp4);
                    }
                    else if (MyCamera.MV_USB_DEVICE == stDevInfo.nTLayerType)
                    {
                        MyCamera.MV_USB3_DEVICE_INFO stUsb3DeviceInfo = (MyCamera.MV_USB3_DEVICE_INFO)MyCamera.ByteToStruct(stDevInfo.SpecialInfo.stUsb3VInfo, typeof(MyCamera.MV_USB3_DEVICE_INFO));
                        Console.WriteLine("\n" + i.ToString() + ": [U3V] User Define Name : " + stUsb3DeviceInfo.chUserDefinedName);
                        Console.WriteLine("\n Serial Number : " + stUsb3DeviceInfo.chSerialNumber);
                        Console.WriteLine("\n Device Number : " + stUsb3DeviceInfo.nDeviceNumber);
                    }
                }

                Int32 nDevIndex = 0;
                Console.Write("\nPlease input index (0 -- {0:d}) : ", stDevList.nDeviceNum - 1);
                try
                {
                    nDevIndex = Convert.ToInt32(Console.ReadLine());
                }
                catch
                {
                    Console.Write("Invalid Input!\n");
                    break;
                }

                if (nDevIndex > stDevList.nDeviceNum - 1 || nDevIndex < 0)
                {
                    Console.Write("Input Error!\n");
                    break;
                }
                stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MyCamera.MV_CC_DEVICE_INFO));

                // ch:创建设备 | en:Create device
                nRet = device.MV_CC_CreateDevice_NET(ref stDevInfo);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Create device failed:{0:x8}", nRet);
                    break;
                }

                // ch:打开设备 | en:Open device
                nRet = device.MV_CC_OpenDevice_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Open device failed:{0:x8}", nRet);
                    break;
                }

                // ch:探测网络最佳包大小(只对GigE相机有效) | en:Detection network optimal package size(It only works for the GigE camera)
                if (stDevInfo.nTLayerType == MyCamera.MV_GIGE_DEVICE)
                {
                    int nPacketSize = device.MV_CC_GetOptimalPacketSize_NET();
                    if (nPacketSize > 0)
                    {
                        nRet = device.MV_CC_SetIntValue_NET("GevSCPSPacketSize", (uint)nPacketSize);
                        if (nRet != MyCamera.MV_OK)
                        {
                            Console.WriteLine("Warning: Set Packet Size failed {0:x8}", nRet);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Warning: Get Packet Size failed {0:x8}", nPacketSize);
                    }
                }

                // ch:设置触发模式为off || en:set trigger mode as off
                if (MyCamera.MV_OK != device.MV_CC_SetEnumValue_NET("TriggerMode", 0))
                {
                    Console.WriteLine("Set TriggerMode failed!");
                    break;
                }

                // ch:获取包大小 || en: Get Payload Size
                MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE();
                nRet = device.MV_CC_GetIntValue_NET("PayloadSize", ref stParam);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Get PayloadSize failed:{0:x8}", nRet);
                    break;
                }
                g_nPayloadSize = stParam.nCurValue;

                MyCamera.MV_CC_RECORD_PARAM stRecordPar = new MyCamera.MV_CC_RECORD_PARAM();
                nRet = device.MV_CC_GetIntValue_NET("Width", ref stParam);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Get Width failed: nRet {0:x8}", nRet);
                    break;
                }
                stRecordPar.nWidth = (ushort)stParam.nCurValue;

                nRet = device.MV_CC_GetIntValue_NET("Height", ref stParam);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Get Height failed: nRet {0:x8}", nRet);
                    break;
                }
                stRecordPar.nHeight = (ushort)stParam.nCurValue;

                MyCamera.MVCC_ENUMVALUE stEnumValue = new MyCamera.MVCC_ENUMVALUE();
                nRet = device.MV_CC_GetEnumValue_NET("PixelFormat", ref stEnumValue);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Get Width failed: nRet {0:x8}", nRet);
                    break;
                }
                stRecordPar.enPixelType = (MyCamera.MvGvspPixelType)stEnumValue.nCurValue;

                MyCamera.MVCC_FLOATVALUE stFloatValue = new MyCamera.MVCC_FLOATVALUE();
                nRet = device.MV_CC_GetFloatValue_NET("ResultingFrameRate", ref stFloatValue);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Get Float value failed: nRet {0:x8}", nRet);
                    break;
                }
                // ch:帧率(大于1/16)fps | en:Frame Rate (>1/16)fps
                stRecordPar.fFrameRate = stFloatValue.fCurValue;
                // ch:码率kbps(128kbps-16Mbps) | en:Bitrate kbps(128kbps-16Mbps)
                stRecordPar.nBitRate = 1000;
                // ch:录像格式(仅支持AVI) | en:Record Format(AVI is only supported)
                stRecordPar.enRecordFmtType = MyCamera.MV_RECORD_FORMAT_TYPE.MV_FormatType_AVI;
                stRecordPar.strFilePath     = "./Recording.avi";
                nRet = device.MV_CC_StartRecord_NET(ref stRecordPar);
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Start Record failed: nRet {0:x8}", nRet);
                    break;
                }

                // ch:开启抓图 | en:start grab
                nRet = device.MV_CC_StartGrabbing_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
                    break;
                }

                Thread hReceiveImageThreadHandle = new Thread(ReceiveImageWorkThread);
                hReceiveImageThreadHandle.Start(device);

                Console.WriteLine("Press enter to exit");
                Console.ReadKey();

                g_bExit = true;
                hReceiveImageThreadHandle.Join();

                // ch:停止抓图 | en:Stop grab image
                nRet = device.MV_CC_StopGrabbing_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Stop grabbing failed{0:x8}", nRet);
                    break;
                }

                // ch:停止录像 | en:Stop record
                nRet = device.MV_CC_StopRecord_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Stop Record failed{0:x8}", nRet);
                    break;
                }

                // ch:关闭设备 | en:Close device
                nRet = device.MV_CC_CloseDevice_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Close device failed{0:x8}", nRet);
                    break;
                }

                // ch:销毁设备 | en:Destroy device
                nRet = device.MV_CC_DestroyDevice_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Destroy device failed:{0:x8}", nRet);
                    break;
                }
            } while (false);

            if (MyCamera.MV_OK != nRet)
            {
                // ch:销毁设备 | en:Destroy device
                nRet = device.MV_CC_DestroyDevice_NET();
                if (MyCamera.MV_OK != nRet)
                {
                    Console.WriteLine("Destroy device failed:{0:x8}", nRet);
                }
            }

            Console.WriteLine("Press enter to exit");
            Console.ReadKey();
        }
예제 #24
0
        // Get the value of various feature nodes
        static int GetParameters(ref MyCamera device)
        {
            if (null == device)
            {
                return(MyCamera.MV_E_PARAMETER);
            }

            int nRet = MyCamera.MV_OK;

            // Get value of Integer nodes. Such as, 'width' etc.
            MyCamera.MVCC_INTVALUE stIntVal = new MyCamera.MVCC_INTVALUE();
            nRet = device.MV_CC_GetIntValue_NET("Width", ref stIntVal);
            if (MyCamera.MV_OK != nRet)
            {
                Console.WriteLine("Get width failed:{0:x8}", nRet);
                return(nRet);
            }
            Console.WriteLine("Current Width:{0:d}", stIntVal.nCurValue);

            // Get value of Enum nodes. Such as, 'TriggerMode' etc.
            MyCamera.MVCC_ENUMVALUE stEnumVal = new MyCamera.MVCC_ENUMVALUE();
            nRet = device.MV_CC_GetEnumValue_NET("TriggerMode", ref stEnumVal);
            if (MyCamera.MV_OK != nRet)
            {
                Console.WriteLine("Get Trigger Mode failed:{0:x8}", nRet);
                return(nRet);
            }
            Console.WriteLine("Current TriggerMode:{0:d}", stEnumVal.nCurValue);

            // Get value of float nodes. Such as, 'AcquisitionFrameRate' etc.
            MyCamera.MVCC_FLOATVALUE stFloatVal = new MyCamera.MVCC_FLOATVALUE();
            nRet = device.MV_CC_GetFloatValue_NET("AcquisitionFrameRate", ref stFloatVal);
            if (MyCamera.MV_OK != nRet)
            {
                Console.WriteLine("Get AcquisitionFrameRate failed:{0:x8}", nRet);
                return(nRet);
            }
            Console.WriteLine("Current AcquisitionFrameRate:{0:f}Fps", stFloatVal.fCurValue);

            // Get value of bool nodes. Such as, 'AcquisitionFrameRateEnable' etc.
            bool bBoolVal = false;

            nRet = device.MV_CC_GetBoolValue_NET("AcquisitionFrameRateEnable", ref bBoolVal);
            if (MyCamera.MV_OK != nRet)
            {
                Console.WriteLine("Get AcquisitionFrameRateEnable failed:{0:x8}", nRet);
                return(nRet);
            }
            Console.WriteLine("Current AcquisitionFrameRateEnable:{0:d}", bBoolVal);

            // Get value of String nodes. Such as, 'DeviceUserID' etc.
            MyCamera.MVCC_STRINGVALUE stStrVal = new MyCamera.MVCC_STRINGVALUE();
            nRet = device.MV_CC_GetStringValue_NET("DeviceUserID", ref stStrVal);
            if (MyCamera.MV_OK != nRet)
            {
                Console.WriteLine("Get DeviceUserID failed:{0:x8}", nRet);
                return(nRet);
            }
            Console.WriteLine("Current DeviceUserID:{0:s}", stStrVal.chCurValue);

            return(MyCamera.MV_OK);
        }