ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在海康SDK中创建自己的接口和方法

2019-05-08 14:52:29  阅读:457  来源: 互联网

标签:HCNetSDK pLoginInfo byte 接口 海康 NET SDK public DVR


步骤:
在HCNetSDK.java中定义一个方法,并且一定要继承Structure
在这里插入图片描述
public static class NET_DVR_USER_LOGIN_INFO extends Structure {
public byte[] sDeviceAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN];
public byte byRes1;
public short wPort;
public byte[] sUserName = new byte[NET_DVR_LOGIN_USERNAME_MAX_LEN];
public byte[] sPassword = new byte[NET_DVR_LOGIN_PASSWD_MAX_LEN];
public FLoginResultCallBack cbLoginResult;
public Pointer pUser;
public boolean bUseAsynLogin;
public byte[] byRes2 = new byte[128];
}
蓝线和红线的部分是我们用到的回调函数和设备类型,肯定也是没有的,也要创建,同样在HCNetSDK.java这个文件中
//回调函数代码如下
public static interface FLoginResultCallBack extends StdCallCallback {
public void invoke(NativeLong lUserID, int dwResult, Pointer pUser);
}

//下面自己设备类型是我们自己定义的 用于测试登录的回调函数
public static final int NET_DVR_DEV_ADDRESS_MAX_LEN = 178;
public static final int NET_DVR_LOGIN_USERNAME_MAX_LEN = 179;
public static final int NET_DVR_LOGIN_PASSWD_MAX_LEN = 180;
数字要不能跟上面的重复,如下图
在这里插入图片描述
在完成自己方法中我们还需要功能V40,也要在这个文件中自己定义,他只有V30
//NET_DVR_Login_V40()参数结构
public static class NET_DVR_DEVICEINFO_V40 extends Structure
{

}

NativeLong NET_DVR_Login_V40(NET_DVR_USER_LOGIN_INFO pLoginInfo,NET_DVR_DEVICEINFO_V40 lpDeviceInfo);
这个文件中的东西中终于结束了,
我们自己创建一个类FLoginResultCallBack去实现HCNetSDK.FLoginResultCallBack(我们在那里面定义的功能接口)
//实现了海康的消息回调接口
public class FLoginResultCallBack implements HCNetSDK.FLoginResultCallBack {

//实例化海康的接口 HCNetSDK
static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
//实例化回调函数
HCNetSDK.NET_DVR_USER_LOGIN_INFO pLoginInfo=new HCNetSDK.NET_DVR_USER_LOGIN_INFO();

@Override
public void invoke(NativeLong lUserID, int dwResult, Pointer pUser) {
    //这里要自己写具体的实现

    //初始化海康的接口
    boolean initSuc = hCNetSDK.NET_DVR_Init();
    if(!initSuc){

        System.out.println("海康接口初始化失败........");
        }
    //设置IP地址
    String sDeviceIP = "192.168.134.100";
    for (int i = 0; i < sDeviceIP.length(); i++) {
        pLoginInfo.sDeviceAddress[i] = (byte) sDeviceIP.charAt(i);
    }
    //设置账号、密码、端口号
    String name = "admin";
    for (int i = 0; i < name.length(); i++) {
        pLoginInfo.sUserName[i] = (byte) name.charAt(i);
    }
    String password = "kggx12345";
    for (int i = 0; i < password.length(); i++) {
        pLoginInfo.sPassword[i] = (byte) password.charAt(i);
    }
    pLoginInfo.wPort= (short)8000;
    pLoginInfo.bUseAsynLogin = false;


    //回调函数赋值
    FLoginResultCallBack fLoginResultCallBack= new FLoginResultCallBack();
    pLoginInfo.cbLoginResult = fLoginResultCallBack;
    HCNetSDK.NET_DVR_DEVICEINFO_V40 lpDeviceInfo=new HCNetSDK.NET_DVR_DEVICEINFO_V40();
    NativeLong IuserID = hCNetSDK.NET_DVR_Login_V40(pLoginInfo, lpDeviceInfo);

}

}
这样就完成了,你要在那个类中使用就创建这个类调用他的invoke
方法就行。自己给他传参数
在这里插入图片描述

标签:HCNetSDK,pLoginInfo,byte,接口,海康,NET,SDK,public,DVR
来源: https://blog.csdn.net/qiaodaima0/article/details/89951904

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有