听雨烹茶 2024-08-19 10:28 采纳率: 33.3%
浏览 19
已结题

海康设备网络SDK使用报错,NET_DVR_NETWORK_FAIL_CONNECT,连接设备失败,如何解决?

海康设备网络SDK使用报错,NET_DVR_NETWORK_FAIL_CONNECT,连接设备失败。设备不在线或网络原因引起的连接超时等。使用海康提供的设备网络搜索可以成功配置,但代码测试就失败了。
我的源代码,问题出在login_v40

        hCNetSDK.NET_DVR_Init();
        if (fExceptionCallBack == null) {
            fExceptionCallBack = new FExceptionCallBack_Imp();
        }
        Pointer pUser = null;
        if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, pUser)) {
            return;
        }
        System.out.println("设置异常消息回调成功");
        //启用SDK写日志
        hCNetSDK.NET_DVR_SetLogToFile(3, "./sdkLog", false);
        //登录设备,每一台设备只需要登录一次
        int lUserID = login_V40("192.168.88.3", (short) 8000, "admin", "Cqjkycpyfs12345");
        GBT28181.set281Cfg(lUserID,hCNetSDK);
        GBT28181.get281Cfg(lUserID,hCNetSDK);
        Thread.sleep(2000);
        //程序退出的时候调用注销登录接口,每一台设备分别调用一次
        if (hCNetSDK.NET_DVR_Logout(lUserID)) {
            System.out.println("注销成功");
        }
        //释放SDK资源,程序退出时调用,只需要调用一次
        hCNetSDK.NET_DVR_Cleanup();

login_v40代码

/**
     * 设备登录V40 与V30功能一致
     *
     * @param ip   设备IP
     * @param port SDK端口,默认设备的8000端口
     * @param user 设备用户名
     * @param psw  设备密码
     */
    public static int login_V40(String ip, short port, String user, String psw) {
        //注册
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息

        m_strLoginInfo.sDeviceAddress = ip.getBytes();

        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(user.getBytes(), 0, m_strLoginInfo.sUserName, 0, user.length());

        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(psw.getBytes(), 0, m_strLoginInfo.sPassword, 0, psw.length());

        m_strLoginInfo.wPort = port;
        m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
//        m_strLoginInfo.byLoginMode=1;  //ISAPI登录
        m_strLoginInfo.write();

        int iUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (iUserID == -1) {
            System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
            return iUserID;
        } else {
            System.out.println(ip + ":设备登录成功!");
            return iUserID;
        }
    }

运行结果:

img


#尝试
更换路由,false

  • 写回答

2条回答 默认 最新

  • IT工程师_二师兄 2024-08-19 10:30
    关注

    你的设备型号告诉我

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月29日
  • 修改了问题 8月19日
  • 修改了问题 8月19日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件