LabVIEW论坛
直播中

xiang liu

8年用户 54经验值
擅长:测量仪表 嵌入式技术
私信 关注
[问答]

LabVIEW控制海康威视的摄像头,能拍照但不能实时预览

感谢嘻嘻哈哈的:https://bbs.elecfans.com/jishu_1621302_1_1.html


通过这个VI能获取海康的拍照功能,但怎么不能实时预览图像,请各位大神们帮忙解答一下。。
   关于海康摄像头的DLL,实时预览是这个函数:NET_DVR_RealPlay_V40
具体说明如下:

NET_DVR_RealPlay_V40

实时预览(支持多码流)。
LONG NET_DVR_RealPlay_V40(  LONG                     lUserID,  LPNET_DVR_PREVIEWINFO    lpPreviewInfo,  REALDATACALLBACK         fRealDataCallBack_V30,  void                     *pUser);ParameterslUserID [in] NET_DVR_Login_V40等登录接口的返回值 lpPreviewInfo [in] 预览参数 fRealDataCallBack_V30 [in] 码流数据回调函数 pUser [in] 用户数据 Callback Functiontypedef void(CALLBACK *REALDATACALLBACK)(  LONG      lRealHandle,  DWORD     dwDataType,  BYTE      *pBuffer,  DWORD     dwBufSize,  void      *pUser);Callback Function ParameterslRealHandle [out] 当前的预览句柄,NET_DVR_RealPlay_V40的返回值 dwDataType [out] 数据类型
宏定义
宏定义值
含义
NET_DVR_SYSHEAD1系统头数据
NET_DVR_STREAMDATA2流数据(包括复合流或音视频分开的视频流数据)
NET_DVR_AUDIOSTREAMDATA3音频数据
NET_DVR_PRIVATE_DATA112私有数据,包括智能信息
pBuffer [out] 存放数据的缓冲区指针 dwBufSize [out] 缓冲区大小 pUser [out] 用户数据
在C#中这样子写没问题,能预览:[td] IntPtr pUser = new IntPtr();//用户数据             //打开预览 Start live view m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser);

labview中调用DLL是这样的,不能预览:

int32_t NET_DVR_RealPlay_V40(int32_t lUserID, void *lpPreviewInfo, uint32_t fRealDataCallBack_V30, uint16_t pUser);


请问问题出在哪里?  请多多指教,积分不足,实非刻薄,表述不全,还望海涵。
  • 360截图20181225165710468.png
  • 2.png
  • 1.png

回帖(8)

李维嘉

2018-12-25 17:06:14

最佳答案

会不会是函数名的问题,我在SO上看到有类似的问题
https://stackoverflow.com/questi ... ocated-in-the-dynam
举报

xiang liu

2018-12-25 18:08:52
感谢zhouxk,原因找到了,是参数设置错误了。
dwStreamType
码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
这里弄错了。
    粗心惹得祸。
1 1 举报

xiang liu

2018-12-25 18:21:25
哎,实时性太差,而且有时候又预览不了,真无语
1 举报

xiang liu

2018-12-25 18:35:55
具体原因找还是找到了,在修改NET_DVR_PREVIEWINFO后最好重启一下海康的摄像头。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分