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); } } } }
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); }
// 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); }
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); } } } }