JAVA对接海康门禁实现门的开关、常开、常关

前言

此功能开发是基于基础环境搭建完之后的功能代码,如果没有搭建基础环境还需看下网上的教程自己搭建一下。

实战代码

1、实体类

//远程开门实体类
@Data
public class RemoteControlRequest {

	/**
	 * [in] 命令值:0- 关闭(对于梯控,表示受控),1- 打开(对于梯控,表示开门),2- 常开(对于梯控,表示自由、通道状态),3- 常关(对于梯控,表示禁用),4- 恢复(梯控,普通状态),5- 访客呼梯(梯控),6- 住户呼梯(梯控)
	 */
	private int dwStaic;
	/**
	 * IP地址
	 */
	String ipadress;

	/**
	 * 用户
	 */
	String user;

	/**
	 * 密码
	 */
	String psw;

	/**
	 * 端口
	 */
	short port;

}

 2、业务层核心代码

我这个是在项目启动的时候,自行加载动态库、初始化sdk,登录门禁设备将lUserID赋值给静态变量,下面的lUserID是门禁登录后返回的用户手柄,应替换为自己的,ClientUtil.hCNetSDK这个也是替换为自己。其实就是根据dwStaic这个属性传入的数字去控制门禁的开关门。

    /**
     * 远程控门
     * @param request
     * @return
     */
    @Override
    public R<Object> remoteControlGate(RemoteControlRequest request) {
        System.out.println("用户id:" + UserManageService.lUserID);
        if (UserManageService.lUserID < 0) {
            UserManageService.login_V40(request.getIpadress(), request.getUser(), request.getPsw(), request.getPort());    //登陆设备
        }
        boolean b_gate = ClientUtil.hCNetSDK.NET_DVR_ControlGateway(UserManageService.lUserID, 1, request.getDwStaic());
        if (!b_gate) {
            System.out.println("远程控门失败,err=" + ClientUtil.hCNetSDK.NET_DVR_GetLastError());
            return R.fail("远程控门失败,err=" + ClientUtil.hCNetSDK.NET_DVR_GetLastError());
        }
        System.out.println("远程控门成功");
        return R.success("远程控门成功");
    }

3、设备登录方法

/**
     * 设备登录
     *
     * @param ipadress IP地址
     * @param user     用户名
     * @param psw      密码
     * @param port     端口,默认8000
     */
    public static void login_V40(String ipadress, String user, String psw, short port) {
        //注册
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
        String m_sDeviceIP = ipadress;//设备ip地址
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
        String m_sUsername = user;//设备用户名
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
        String m_sPassword = psw;//设备密码
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
        m_strLoginInfo.wPort = port; //sdk端口
        m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
        m_strLoginInfo.write();
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
        lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (lUserID == -1) {
            System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
            return;
        } else {
            System.out.println("登录成功!");
            m_strDeviceInfo.read();
            iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
            return;

        }
    }

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
实现Java集成海康门获取开记录,首先需要了解海康门设备集成的相关接口和协议。一般而言,海康门设备可以通过接收和解析控制器的数据包来获取开记录。 首先,需要使用Java网络编程技术与设备建立TCP/IP网络连接,并发送相应的控制命令。可以使用Java提供的Socket类或者第三方网络库来实现网络通信功能。 接下来,在已经建立好连接的基础上,通过向设备发送获取开记录的指令,如查询指定时间范围内的开记录。具体的指令格式和协议要参考海康门设备的接口文档或者开发手册。可以使用Java的输入输出流来向设备发送指令,并接收设备返回的数据。 在接收设备返回的数据时,需要根据设备的协议进行数据包的解析。可以根据设备协议中的数据结构,使用Java的字节流操作或者第三方数据解析库来解析数据包,提取开记录等相关信息。 最后,将解析后的数据进行封装和处理,可以使用Java自带的数据结构,如List、Map等来保存和管理开记录信息。根据需求,将获取到的开记录存储到数据库中或者通过网络传输给其他系统进行处理。 需要注意的是,集成海康门获取开记录需要与海康门设备进行兼容性和通信协议的适配,具体实现方式可能因设备型号和版本不同而有所差异。因此,开发前需要详细了解设备的接口文档和开发手册,并按照相应的规范进行开发和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2024暴富

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值