Dahua Device Network SDK_C# 開発 (1): デバイスログイン

プロジェクトのニーズにより、Dahua のネットワーク ハードディスク ビデオ レコーダー (NVR) に接続して、レコーダー内のすべてのチャネル デバイスの情報とステータスを取得する必要があります。Dahua の公式 SDK と Dahua の 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 で任意のデモを開き、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