Пример #1
0
        public void ReceiveThreadProcess()
        {
            MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE();
            int nRet = m_MyCamera.MV_CC_GetIntValue_NET("PayloadSize", ref stParam);

            if (MyCamera.MV_OK != nRet)
            {
                ShowErrorMsg("Get PayloadSize failed", nRet);
                return;
            }

            UInt32 nPayloadSize = stParam.nCurValue;

            if (nPayloadSize > m_nGrabBufSize)
            {
                m_nGrabBufSize = nPayloadSize;
                m_pGrabBuf     = Marshal.AllocHGlobal((Int32)m_nGrabBufSize);
            }

            if (m_pGrabBuf == IntPtr.Zero)
            {
                return;
            }

            MyCamera.MV_FRAME_OUT_INFO_EX  stFrameInfo   = new MyCamera.MV_FRAME_OUT_INFO_EX();
            MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();

            while (m_bGrabbing)
            {
                nRet = m_MyCamera.MV_CC_GetOneFrameTimeout_NET(m_pGrabBuf, nPayloadSize, ref stFrameInfo, 1000);
                if (nRet == MyCamera.MV_OK)
                {
                    stDisplayInfo.hWnd        = pictureBox1.Handle;
                    stDisplayInfo.pData       = m_pGrabBuf;
                    stDisplayInfo.nDataLen    = stFrameInfo.nFrameLen;
                    stDisplayInfo.nWidth      = stFrameInfo.nWidth;
                    stDisplayInfo.nHeight     = stFrameInfo.nHeight;
                    stDisplayInfo.enPixelType = stFrameInfo.enPixelType;
                    m_MyCamera.MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);
                }
                else
                {
                    if (bnTriggerMode.Checked)
                    {
                        Thread.Sleep(5);
                    }
                }
            }
        }
Пример #2
0
        public int DisplayTo(IntPtr pWnd)
        {
            if (IntPtr.Zero == pWnd)
            {
                return((int)ErrorDef.ParamError);
            }
            MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();
            stDisplayInfo.hWnd        = pWnd;
            stDisplayInfo.pData       = Marshal.UnsafeAddrOfPinnedArrayElement(_dataBytes, 0);
            stDisplayInfo.nDataLen    = _frameInfo.nFrameLen;
            stDisplayInfo.nWidth      = _frameInfo.nWidth;
            stDisplayInfo.nHeight     = _frameInfo.nHeight;
            stDisplayInfo.enPixelType = _frameInfo.enPixelType;
            int err = _cmr.MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);

            if (err != MyCamera.MV_OK)
            {
                return((int)ErrorDef.InvokeFailed);
            }
            return((int)ErrorDef.Success);
        }
Пример #3
0
        // ch:取流回调函数 | en:Aquisition Callback Function
        private void ImageCallBack(IntPtr pData, ref MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pUser)
        {
            int nIndex = (int)pUser;

            // ch:抓取的帧数 | en:Aquired Frame Number
            ++m_nFrames[nIndex];

            //ch:判断是否需要保存图片 | en:Determine whether to save image
            if (m_bSaveImg[nIndex])
            {
                SaveImage(pData, pFrameInfo, nIndex);
                m_bSaveImg[nIndex] = false;
            }

            MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();
            stDisplayInfo.hWnd        = m_hDisplayHandle[nIndex];
            stDisplayInfo.pData       = pData;
            stDisplayInfo.nDataLen    = pFrameInfo.nFrameLen;
            stDisplayInfo.nWidth      = pFrameInfo.nWidth;
            stDisplayInfo.nHeight     = pFrameInfo.nHeight;
            stDisplayInfo.enPixelType = pFrameInfo.enPixelType;

            m_pMyCamera[nIndex].MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);
        }
Пример #4
0
        public void ReceiveThreadProcess()
        {
            MyCamera.MV_FRAME_OUT          stFrameInfo   = new MyCamera.MV_FRAME_OUT();
            MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();

            while (m_bGrabbing)
            {
                int nRet = m_MyCamera.MV_CC_GetImageBuffer_NET(ref stFrameInfo, 1000);
                if (nRet == MyCamera.MV_OK)
                {
                    stDisplayInfo.hWnd        = pictureBox1.Handle;
                    stDisplayInfo.pData       = stFrameInfo.pBufAddr;
                    stDisplayInfo.nDataLen    = stFrameInfo.stFrameInfo.nFrameLen;
                    stDisplayInfo.nWidth      = stFrameInfo.stFrameInfo.nWidth;
                    stDisplayInfo.nHeight     = stFrameInfo.stFrameInfo.nHeight;
                    stDisplayInfo.enPixelType = stFrameInfo.stFrameInfo.enPixelType;
                    if (RemoveCustomPixelFormats(stFrameInfo.stFrameInfo.enPixelType))
                    {
                        m_MyCamera.MV_CC_FreeImageBuffer_NET(ref stFrameInfo);
                        continue;
                    }
                    else
                    {
                        m_MyCamera.MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);
                        m_MyCamera.MV_CC_FreeImageBuffer_NET(ref stFrameInfo);
                    }
                }
                else
                {
                    if (bnTriggerMode.Checked)
                    {
                        Thread.Sleep(5);
                    }
                }
            }
        }