/// <summary> /// 用于向Hik相机句柄注册的回调函数,必须 /// </summary> /// <param name="pData"></param> /// <param name="pFrameInfo"></param> /// <param name="pUser"></param> static void HikFrameCallback(IntPtr pData, ref MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pUser) { GCHandle hd = GCHandle.FromIntPtr(pUser); JFCamera_HikGige cmr = hd.Target as JFCamera_HikGige; cmr._HikFrameCallback(pData, ref pFrameInfo); }
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); } }