大华设备网络SDK_C#开发(一):设备登录

因项目需要,对接大华的网络硬盘录像机(NVR),获取录像机下所有通道设备的信息及状态,直接使用大华官方的SDK,大华的NETSDKCS库最低只支持.NET Framework 4.0。具体使用步骤如下:

1.SDK下载

SDK下载地址:https://support.dahuatech.com/tools/sdkExploit,注意区别32位与64位
SDK

2.dll引入

将文件夹libs内dll按需复制到自己项目中(因为这些都是C++库,所以只能复制无法在vs中引入),比如我只需要登录设备获取设备信息功能就只需要引入dhnetsdk.dll,当然你也可以全部复制。
库文件
用VS打开任意demo,找到NetSDKCS工程,编译后将NetSDKCS.dll引入到自己的项目中。
NetSDKCS

3.NetSDK初始化

注意同一个进程内,只有第一次初始化有效,所以放在程序入口执行一次就可以,使用完毕后需要调用清理接口以释放资源

//初始化接口
NETClient.Init(null, IntPtr.Zero, null);
//清理接口
NETClient.Cleanup();

初始化时可以设置断线回调、重连回调等各种回调函数,有需要的可以自行参阅官方指导手册。

4.登录设备

传入设备IP、端口、用户名密码登录,登录会返回当前登录设备的信息,每次使用完需要登出设备。

/// <summary>
/// 登录ID
/// </summary>
private static IntPtr m_loginID = IntPtr.Zero;
/// <summary>
/// 登录设备信息
/// </summary>
private static NET_DEVICEINFO_Ex m_DeviceInfo;

/// <summary>
/// 登录/登出设备
/// </summary>
/// <param name="ip">设备IP</param>
/// <param name="portStr">设备端口,默认37777</param>
/// <param name="userName">用户名</param>
/// <param name="pswd">密码</param>
/// <returns></returns>
public static bool LoginOrLogout(string ip, string portStr, string userName, string pswd)
{
    
    
    if (m_loginID == IntPtr.Zero)
    {
    
    
        if (string.IsNullOrEmpty(ip) || string.IsNullOrEmpty(portStr) || string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(pswd)) return false;
        ushort port = 0;
        try
        {
    
    
            port = Convert.ToUInt16(portStr.Trim());
        }
        catch
        {
    
    
            return false;
        }
        m_DeviceInfo = new NET_DEVICEINFO_Ex();
        m_loginID = NETClient.LoginWithHighLevelSecurity(ip.Trim(), port, userName.Trim(), pswd.Trim(), EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref m_DeviceInfo);
        if (m_loginID == IntPtr.Zero)
        {
    
    
            return false;
        }
        else
            return true;
    }
    else
    {
    
    
        bool result = NETClient.Logout(m_loginID);
        if (!result)
        {
    
    
            return false;
        }
        m_loginID = IntPtr.Zero;
        m_DeviceInfo = new NET_DEVICEINFO_Ex();
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_29242649/article/details/123048173