Esempio n. 1
0
        /// <summary>实时抓拍一张图片</summary>
        public int GrabOne(out IJFImage img, int timeoutMilSeconds = -1)
        {
            img = null;
            if (!IsDeviceOpen)
            {
                return((int)ErrorDef.NotOpen);
            }
            if (!IsGrabbing)
            {
                return((int)ErrorDef.NotGrabbing);
            }
            JFCmrTrigMode currTM = JFCmrTrigMode.disable;

            GetTrigMode(out currTM);
            if (currTM != JFCmrTrigMode.disable)
            {
                return((int)ErrorDef.TrigModeUnMatch);
            }

            int err = 0;

            if (_payloadSize <= 0)
            {
                MyCamera.MVCC_INTVALUE stVal = new MyCamera.MVCC_INTVALUE();
                err = _hikCmr.MV_CC_GetIntValue_NET("PayloadSize", ref stVal);
                if (MyCamera.MV_OK != err)
                {
                    return((int)ErrorDef.InvokeFailed);
                }
                else
                {
                    _payloadSize = (int)stVal.nCurValue;
                }
            }

            byte[] dataBytes = new byte[_payloadSize];
            IntPtr ptr       = Marshal.UnsafeAddrOfPinnedArrayElement(dataBytes, 0);

            MyCamera.MV_FRAME_OUT_INFO_EX frameInfo = new MyCamera.MV_FRAME_OUT_INFO_EX();
            err = _hikCmr.MV_CC_GetOneFrameTimeout_NET(ptr, (uint)_payloadSize, ref frameInfo, timeoutMilSeconds);
            if (err != MyCamera.MV_OK)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            img = new JFImage_Hik(dataBytes, frameInfo, _hikCmr);
            return((int)ErrorDef.Success);
        }
Esempio n. 2
0
        void _HikFrameCallback(IntPtr pData, ref MV_FRAME_OUT_INFO_EX pFrameInfo)
        {
            MVCC_INTVALUE stVal = new MVCC_INTVALUE();
            int           err   = _hikCmr.MV_CC_GetIntValue_NET("PayloadSize", ref stVal);

            if (MyCamera.MV_OK != err)
            {
                throw new Exception("HikFrameCallback failed bt MV_CC_GetIntValue_NET(\"PayloadSize\") return errorCode = " + err);
            }
            _payloadSize = (int)stVal.nCurValue;
            byte[] bytes = new byte[_payloadSize];
            Marshal.Copy(pData, bytes, 0, _payloadSize);
            JFImage_Hik img = new JFImage_Hik(bytes, pFrameInfo, _hikCmr);

            if (null != AcqFrameEvent)
            {
                AcqFrameEvent(this, img);
            }
        }