vb.net 2012 使用大华sdk 编程视屏历史录像下载或回放
旺财的爸爸 2015-10-18 01:40:30
See Also 网络SDK开发手册
CLIENT_PlayBackByTimeEx
带数据回调的按时间回放扩展接口。
LLONG CLIENT_PlayBackByTimeEx(
LLONG lLoginID,
int nChannelID,
LPNET_TIME lpStartTime,
LPNET_TIME lpStopTime,
HWND hWnd,
fDownLoadPosCallBack cbDownLoadPos,
LDWORD dwPosUser,
fDataCallBack fDownLoadDataCallBack,
LDWORD dwDataUser
);
Parameters
[in]lLoginID
CLIENT_Login的返回值
[in]nChannelID
图像通道号,必须指定
[in]lpStartTime
开始时间
[in]lpStopTime
结束时间
[in]hWnd
回放窗口
cbDownLoadPos
进度回调用户参数,说明参见:CLIENT_PlayBackByRecordFile
dwPosUser
用户自定义数据,cbDownLoadPos中使用
fDownLoadDataCallBack
数据回调函数,说明参见:CLIENT_PlayBackByRecordFileEx
dwDataUser
用户自定义数据,fDownLoadDataCallBack中使用
Return Values
成功返回网络回放ID,失败返回0。
Remarks
参数hWnd和fDownLoadDataCallBack不能同时为NULL,否则接口调用会返回失败
See Also
CLIENT_Login,CLIENT_PausePlayBack,CLIENT_SeekPlayBack,CLIENT_StopPlayBack,CLIENT_GetPlayBackOsdTime,CLIENT_StepPlayBack,CLIENT_GetFramePlayBack,CLIENT_SetFramePlayBack,CLIENT_SlowPlayBack,CLIENT_FastPlayBack。
See Also
CLIENT_Login,CLIENT_PausePlayBack,CLIENT_SeekPlayBack,CLIENT_StopPlayBack,CLIENT_GetPlayBackOsdTime,CLIENT_StepPlayBack,CLIENT_GetFramePlayBack,CLIENT_SetFramePlayBack,CLIENT_SlowPlayBack,CLIENT_FastPlayBack。
#define_WIN32_WINNT 0x500
#include<stdio.h>
#include<iostream>
#include<Windows.h>
#include"dhnetsdk.h"
usingnamespacestd;
#include<winCon.h>
#pragmacomment( lib, "dhnetsdk.lib")
//////////////////////////////////////////////////////////////////////////
void __stdcall DisConnectFunc(LONG lLoginID, char *pchDVRIP, LONG nDVRPort, DWORD dwUser)
{
printf("Device disconn, IP=%s+++++++++++++++++++++++\n", pchDVRIP);
}
void __stdcall DownLoadPosCallBackFunc(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser)
{
if (dwDownLoadSize == -1)
{
printf("PlayBackPosCallBack: 100\n");
}
elseif (dwTotalSize != 0)
{
// printf("PlayBackPosCallBack: %d%\n", dwDownLoadSize*100/dwTotalSize);
}
}
int __stdcall DataCallBackFunc(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser)
{
FILE *file =(FILE *)dwUser;
if (file)
{
fwrite(pBuffer, 1, dwBufSize, file);
}
printf("PlayBack: data++++, len=%d+++++++++++++++\n", dwBufSize);
return 1;
}
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
CLIENT_Init(DisConnectFunc, 0);
cout<<"Initialize client SDK done;"<<endl;
char szDevIp[64] = {0};
NET_DEVICEINFO stDevInfo = {0};
int nError = 0;
LLONG lLoginHandle = 0;
int nPort = 37777;
int nChannelID = 0; // 通道号
LLONG hPlayBack = 0;
//HWND hWnd = GetConsoleWindow(); //获取窗口句柄
cout<<endl<<"IP:";
cin>>szDevIp;
cout<<endl<<"Port:";
cin>>nPort;
lLoginHandle = CLIENT_Login(szDevIp, nPort, "admin", "admin", &stDevInfo, &nError);
if (lLoginHandle != 0)
{
NET_TIME tartTime = {0};
NET_TIME StopTime = {0};
StartTime.dwYear = 2012;
StartTime.dwMonth = 9;
StartTime.dwDay = 20;
StartTime.dwHour = 0;
StartTime.dwMinute = 0;
StopTime.dwYear = 2012;
StopTime.dwMonth = 9;
StopTime.dwDay = 21;
StopTime.dwHour = 15;
FILE *file = fopen("./PlayBack.dav", "wb");
hPlayBack = CLIENT_PlayBackByTimeEx(lLoginHandle, 0, &StartTime, &StopTime, NULL/*hWnd*/, DownLoadPosCallBackFunc, 0, DataCallBackFunc, (DWORD)file);
printf("CLIENT_PlayBackByTimeEx: %d\n", hPlayBack);
}
else
{
printf("CLIENT_LoginEx: %s failed! error = %d\n", szDevIp, nError);
}
//停止回放
if (hPlayBack != 0)
{
CLIENT_StopPlayBack(hPlayBack);
}
//注销用户
CLIENT_Logout(lLoginHandle);
//释放SDK资源
CLIENT_Cleanup();
return 0;
}
谁用VB.NET 开发过给个实例,我对回调函数不熟尤其是 这句 FILE *file = fopen("./PlayBack.dav", "wb");