国标GB28181/Ehone协议视频人脸识别/车牌识别平台EasyCVR新版本支持大华SDK接入开发记录

我们一直都说EasyCVR开发上线以来,算是市面上兼容性较为优秀的视频能力平台,能够兼容国标GB28181、RTSP、海康SDK、Ehome协议的设备,其他主流厂家的私有协议也会不断开拓。

微信截图_20201127101659.png

继EasyCVR支持海康SDK设备接入后,EasyCVR 1.1.3版本也已经支持大华私有协议SDK设备的接入。

如下为大华SDK调用的基本方法:

  1. 完成 SDK 初始化流程。
  2. 调用 CLIENT_GetSDKVersion,获取 SDK 版本信息(可选)。
  3. 调用 CLIENT_SetAutoReconnect,设置断线重连回调函数(可选,建议调用),
    设置后 SDK 内部断线自动重连。
  4. 调用 CLIENT_SetConnectTime,设置连接设备超时时间和尝试次数(可选)。
  5. 调用 CLIENT_SetNetworkParam,设置网络登录参数,参数中包含登录设备超时时间和尝试次数(可选)。
    6.SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源。

初始化调用示意图:

32.png

此处我们把调用代码列出来给大家参考一下:

#include <windows.h>
#include <stdio.h>
#include "dhnetsdk.h"
 4
 5
#pragma comment(lib , "dhnetsdk.lib")
static BOOL g_bNetSDKInitFlag = FALSE;
//*************************************************************************
********
// 常用回调集合声明
// 设备断线回调函数
// 不建议在 SDK 的回调函数中调用 SDK 接口
// 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
void CALLBACK DisConnectFunc(LONG lLoginID, char *pchDVRIP, LONG nDVRPort, 
DWORD dwUser);
// 断线重连成功回调函数
// 不建议在该回调函数中调用 SDK 接口
// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK 会调用该函数
void CALLBACK HaveReConnect(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, 
LDWORD dwUser);
//*************************************************************************
********
void InitTest()
{
 // 初始化 SDK
 g_bNetSDKInitFlag = CLIENT_Init(DisConnectFunc, 0);
if (FALSE == g_bNetSDKInitFlag)
 {
 printf("Initialize client SDK fail; \n");
 return;
 }
 else
 {
 printf("Initialize client SDK done; \n");
 }
 
// 此操作为可选操作
// 获取 SDK 版本信息
 DWORD dwNetSdkVersion = CLIENT_GetSDKVersion();
 printf("NetSDK version is [%d]", dwNetSdkVersion);
 // 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作。
 6
 // 此操作为可选操作,但建议用户进行设置。
 CLIENT_SetAutoReconnect(&HaveReConnect, 0);
 // 设置登录超时时间和尝试次数
 // 此操作为可选操作
 int nWaitTime = 5000; // 登录请求响应超时时间设置为 5s
 int nTryTimes = 3; // 登录时尝试建立链接 3 次
 CLIENT_SetConnectTime(nWaitTime, nTryTimes);
 
// 设置更多网络参数,NET_PARAM 的 nWaittime,nConnectTryNum 成员与
CLIENT_SetConnectTime 接口设置的登录设备超时时间和尝试次数意义相同
 // 此操作为可选操作
NET_PARAM stuNetParm = {0};
stuNetParm.nConnectTime = 3000; // 登录时尝试建立链接的超时时间
 CLIENT_SetNetworkParam(&stuNetParm);
 // 用户初次登录设备,需要初始化一些数据才能正常实现业务功能,所以建议登录后等待
一小段时间,具体等待时间因设备而异。
 Sleep(1000);
 printf("\n");
}
void RunTest()
{
 if (FALSE == g_bNetSDKInitFlag)
 {
 return;
 }
 // 功能业务实现处
 
}
void EndTest()
{
 printf("input any key to quit!\n");
 getchar();
// 此处可实现退出设备操作
 7
// 清理初始化资源
 if (TRUE == g_bNetSDKInitFlag)
 {
 CLIENT_Cleanup();
 g_bNetSDKInitFlag = FALSE;
 }
 return;
}
int main()
{
InitTest();
RunTest();
EndTest();
return 0;
} 
//*************************************************************************
********
// 常用回调集合定义
void CALLBACK DisConnectFunc(LONG lLoginID, char *pchDVRIP, LONG nDVRPort, 
DWORD dwUser)
{
 printf("Call DisConnectFunc\n");
 printf("lLoginID[0x%x]", lLoginID);
 if (NULL != pchDVRIP)
 {
 printf("pchDVRIP[%s]\n", pchDVRIP);
 }
 printf("nDVRPort[%d]\n", nDVRPort);
 printf("dwUser[%p]\n", dwUser);
 printf("\n");
}
void CALLBACK HaveReConnect(LLONG lLoginID, char *pchDVRIP, LONG nDVRPort, 
LDWORD dwUser)
{
 printf("Call HaveReConnect\n");
 printf("lLoginID[0x%x]", lLoginID);
 if (NULL != pchDVRIP)
 {
 printf("pchDVRIP[%s]\n", pchDVRIP);
 }
 printf("nDVRPort[%d]\n", nDVRPort);
 printf("dwUser[%p]\n", dwUser);
 printf("\n");
 8
}

猜你喜欢

转载自blog.csdn.net/EasyNVS/article/details/112365349