|
|
@@ -1,77 +1,192 @@
|
|
|
package com.usoftchina.ss.dahua.lib;
|
|
|
|
|
|
-import com.sun.jna.*;
|
|
|
+import com.sun.jna.Library;
|
|
|
+import com.sun.jna.NativeLong;
|
|
|
+import com.sun.jna.Pointer;
|
|
|
+import com.sun.jna.Structure;
|
|
|
import com.sun.jna.ptr.IntByReference;
|
|
|
-import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
|
|
|
+import com.sun.jna.win32.StdCallLibrary;
|
|
|
+import com.usoftchina.ss.dahua.common.MessageBundle;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author yingp
|
|
|
- * @date 2019/2/14
|
|
|
+ * @date 2019/2/28
|
|
|
*/
|
|
|
public interface NetSdkLib extends Library {
|
|
|
-
|
|
|
- /*******************常量*******************/
|
|
|
-
|
|
|
/**
|
|
|
- * 设备序列号字符长度
|
|
|
+ * 通用字符串长度4
|
|
|
*/
|
|
|
- int NET_SERIALNO_LEN = 48;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_4 = 4;
|
|
|
/**
|
|
|
- * 通用名字字符串长度
|
|
|
+ * 通用字符串长度8
|
|
|
*/
|
|
|
- int DH_MAX_NAME_LEN = 16;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_8 = 8;
|
|
|
/**
|
|
|
- * 人员id最大长度
|
|
|
+ * 通用字符串长度16
|
|
|
*/
|
|
|
- int DH_MAX_PERSON_ID_LEN = 32;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_16 = 16;
|
|
|
/**
|
|
|
- * 每个人员对应的最大人脸图片数
|
|
|
+ * 通用字符串长度32
|
|
|
*/
|
|
|
- int DH_MAX_PERSON_IMAGE_NUM = 48;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_32 = 32;
|
|
|
/**
|
|
|
- * 省份名称最大长度
|
|
|
+ * 通用字符串长度64
|
|
|
*/
|
|
|
- int DH_MAX_PROVINCE_NAME_LEN = 64;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_64 = 64;
|
|
|
/**
|
|
|
- * 城市名称最大长度
|
|
|
+ * 通用字符串长度128
|
|
|
*/
|
|
|
- int DH_MAX_CITY_NAME_LEN = 64;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_128 = 128;
|
|
|
/**
|
|
|
- * 人员名字最大长度
|
|
|
+ * 通用字符串长度256
|
|
|
*/
|
|
|
- int DH_MAX_PERSON_NAME_LEN = 64;
|
|
|
-
|
|
|
- int MAX_PATH = 260;
|
|
|
-
|
|
|
- int MAX_FIND_COUNT = 20;
|
|
|
-
|
|
|
+ int DH_COMMON_STRING_256 = 256;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度512
|
|
|
+ */
|
|
|
+ int DH_COMMON_STRING_512 = 512;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度1024
|
|
|
+ */
|
|
|
+ int DH_COMMON_STRING_1024 = 1024;
|
|
|
/**
|
|
|
- * 最大人脸区域个数
|
|
|
+ * 通用字符串长度2048
|
|
|
*/
|
|
|
- int MAX_FACE_AREA_NUM = 8;
|
|
|
+ int DH_COMMON_STRING_2048 = 2048;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度8
|
|
|
+ */
|
|
|
+ int MAX_COMMON_STRING_8 = 8;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度16
|
|
|
+ */
|
|
|
+ int MAX_COMMON_STRING_16 = 16;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度32
|
|
|
+ */
|
|
|
+ int MAX_COMMON_STRING_32 = 32;
|
|
|
+ /**
|
|
|
+ * 通用字符串长度64
|
|
|
+ */
|
|
|
+ int MAX_COMMON_STRING_64 = 64;
|
|
|
|
|
|
/**
|
|
|
- * 最大人脸数据库个数
|
|
|
+ * 时间
|
|
|
*/
|
|
|
- int MAX_FACE_DB_NUM = 8;
|
|
|
+ @Structure.FieldOrder({"dwYear", "dwMonth", "dwDay", "dwHour", "dwMinute", "dwSecond"})
|
|
|
+ class NET_TIME extends Structure {
|
|
|
+ /**
|
|
|
+ * 年
|
|
|
+ */
|
|
|
+ public int dwYear;
|
|
|
+ /**
|
|
|
+ * 月
|
|
|
+ */
|
|
|
+ public int dwMonth;
|
|
|
+ /**
|
|
|
+ * 日
|
|
|
+ */
|
|
|
+ public int dwDay;
|
|
|
+ /**
|
|
|
+ * 时
|
|
|
+ */
|
|
|
+ public int dwHour;
|
|
|
+ /**
|
|
|
+ * 分
|
|
|
+ */
|
|
|
+ public int dwMinute;
|
|
|
+ /**
|
|
|
+ * 秒
|
|
|
+ */
|
|
|
+ public int dwSecond;
|
|
|
+
|
|
|
+ public NET_TIME() {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return String.format("%02d-%02d-%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date toDate() {
|
|
|
+ return Date.from(LocalDateTime.of(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond)
|
|
|
+ .atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 最大硬盘个数
|
|
|
+ * 时间
|
|
|
*/
|
|
|
- int DH_MAX_DISKNUM = 256;
|
|
|
+ @Structure.FieldOrder({"dwYear", "dwMonth", "dwDay", "dwHour", "dwMinute", "dwSecond", "dwMillisecond", "dwReserved"})
|
|
|
+ class NET_TIME_EX extends Structure {
|
|
|
+ /**
|
|
|
+ * 年
|
|
|
+ */
|
|
|
+ public int dwYear;
|
|
|
+ /**
|
|
|
+ * 月
|
|
|
+ */
|
|
|
+ public int dwMonth;
|
|
|
+ /**
|
|
|
+ * 日
|
|
|
+ */
|
|
|
+ public int dwDay;
|
|
|
+ /**
|
|
|
+ * 时
|
|
|
+ */
|
|
|
+ public int dwHour;
|
|
|
+ /**
|
|
|
+ * 分
|
|
|
+ */
|
|
|
+ public int dwMinute;
|
|
|
+ /**
|
|
|
+ * 秒
|
|
|
+ */
|
|
|
+ public int dwSecond;
|
|
|
+ /**
|
|
|
+ * 毫秒
|
|
|
+ */
|
|
|
+ public int dwMillisecond;
|
|
|
+
|
|
|
+ public byte[] dwReserved = new byte[2];
|
|
|
+
|
|
|
+ public NET_TIME_EX() {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return String.format("%02d-%02d-%02d %02d:%02d:%02d:%d", dwYear, dwMonth, dwDay, dwHour, dwMinute,
|
|
|
+ dwSecond, dwMillisecond);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date toDate() {
|
|
|
+ return Date.from(LocalDateTime.of(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond, dwMillisecond)
|
|
|
+ .atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/*******************SDK初始化*******************/
|
|
|
|
|
|
+ /**
|
|
|
+ * 断线回调
|
|
|
+ */
|
|
|
+ interface fDisConnect extends StdCallLibrary.StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param nDVRPort 设备端口
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 初始化SDK, 在调用SDK另外函数之前调用
|
|
|
*
|
|
|
@@ -79,12 +194,28 @@ public interface NetSdkLib extends Library {
|
|
|
* @param dwUser 用户数据
|
|
|
* @return
|
|
|
*/
|
|
|
- boolean CLIENT_Init(StdCallCallback cbDisConnect, NativeLong dwUser);
|
|
|
+ boolean CLIENT_Init(fDisConnect cbDisConnect, NativeLong dwUser);
|
|
|
|
|
|
/**
|
|
|
- * 清空SDK, 释放占用的资源,在所有的SDK函数之后调用
|
|
|
+ * 初始化参数
|
|
|
*/
|
|
|
- void CLIENT_Cleanup();
|
|
|
+ class NETSDK_INIT_PARAM extends Structure {
|
|
|
+ /**
|
|
|
+ * 指定NetSDK常规网络处理线程数, 当值为0时, 使用内部默认值
|
|
|
+ */
|
|
|
+ public int nThreadNum;
|
|
|
+ public byte[] bReserved = new byte[1024];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * SDK初始化, 通过NETSDK_INIT_PARAM指定初始化参数, 如定制NetSDK启用的常规网络处理线程数
|
|
|
+ *
|
|
|
+ * @param cbDisConnect 断线回调函数,通知用户当前断开网络的设备,如果调用SDK的ClIENT_Logout函数主动断开的设备不作断线回调,设置为NULL时不回调
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ * @param lpInitParam 初始化参数
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_InitEx(fDisConnect cbDisConnect, NativeLong dwUser, NETSDK_INIT_PARAM lpInitParam);
|
|
|
|
|
|
/**
|
|
|
* 获取SDK的版本号
|
|
|
@@ -101,13 +232,26 @@ public interface NetSdkLib extends Library {
|
|
|
*/
|
|
|
int CLIENT_GetLastError();
|
|
|
|
|
|
+ /**
|
|
|
+ * 断线后重连回调
|
|
|
+ */
|
|
|
+ interface fHaveReConnect extends StdCallLibrary.StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param nDVRPort 设备端口
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设置断线重连回调函数,在设备断线时自动重连设备
|
|
|
*
|
|
|
* @param cbAutoConnect 断线重连成功的回调函数,通知用户当前断线重连成功的设备
|
|
|
* @param dwUser 用户自定义数据,在回调中可以使用
|
|
|
*/
|
|
|
- void CLIENT_SetAutoReconnect(StdCallCallback cbAutoConnect, NativeLong dwUser);
|
|
|
+ void CLIENT_SetAutoReconnect(fHaveReConnect cbAutoConnect, NativeLong dwUser);
|
|
|
|
|
|
/**
|
|
|
* 设置连接设备等待时间
|
|
|
@@ -117,13 +261,6 @@ public interface NetSdkLib extends Library {
|
|
|
*/
|
|
|
void CLIENT_SetConnectTime(int nWaitTime, int nTryTimes);
|
|
|
|
|
|
- /**
|
|
|
- * 设置网络参数
|
|
|
- *
|
|
|
- * @param pNetParam
|
|
|
- */
|
|
|
- void CLIENT_SetNetworkParam(NET_PARAM pNetParam);
|
|
|
-
|
|
|
/**
|
|
|
* 登陆网络环境设置
|
|
|
*/
|
|
|
@@ -194,31 +331,106 @@ public interface NetSdkLib extends Library {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*******************登录设备*******************/
|
|
|
/**
|
|
|
- * 登录设备
|
|
|
+ * 设置网络参数
|
|
|
*
|
|
|
- * @param pchDVRIP 设备IP
|
|
|
- * @param wDVRPort 设备端口
|
|
|
- * @param pchUserName 用户名
|
|
|
- * @param pchPassword 用户密码
|
|
|
- * @param emSpecCap 设备支持的能力,值为2表示主动侦听模式下的用户登陆(车载dvr登录)
|
|
|
- * @param pCapParam 对emSpecCap 的补充参数,emSpecCap = 2时,pCapParam填充设备序列号字串(车载dvr登录)
|
|
|
- * @param lpDeviceInfo 设备信息,属于输出参数,填NULL效果类似emSpecCap=10
|
|
|
- * @param error (当函数返回成功时,该参数的值无意义),返回登录错误码
|
|
|
- * @return
|
|
|
- * @see LoginSpecCapType
|
|
|
+ * @param pNetParam
|
|
|
*/
|
|
|
- NativeLong CLIENT_LoginEx2(String pchDVRIP, int wDVRPort, String pchUserName, String pchPassword, int emSpecCap,
|
|
|
- Pointer pCapParam, NET_DEVICEINFO_Ex lpDeviceInfo, IntByReference error);
|
|
|
+ void CLIENT_SetNetworkParam(NetSdkLib.NET_PARAM pNetParam);
|
|
|
|
|
|
/**
|
|
|
- * 登出设备
|
|
|
- *
|
|
|
- * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
- * @return 成功返回TRUE,失败返回FALSE
|
|
|
+ * 清空SDK, 释放占用的资源,在所有的SDK函数之后调用
|
|
|
*/
|
|
|
- boolean CLIENT_Logout(NativeLong lLoginID);
|
|
|
+ void CLIENT_Cleanup();
|
|
|
+
|
|
|
+ /*******************登录设备*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登录类型
|
|
|
+ */
|
|
|
+ class EM_LOGIN_SPAC_CAP_TYPE {
|
|
|
+ /**
|
|
|
+ * TCP登录, 默认方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_TCP = 0;
|
|
|
+ /**
|
|
|
+ * 无条件登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_ANY = 1;
|
|
|
+ /**
|
|
|
+ * 主动注册的登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_SERVER_CONN = 2;
|
|
|
+ /**
|
|
|
+ * 组播登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_MULTICAST = 3;
|
|
|
+ /**
|
|
|
+ * UDP方式下的登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_UDP = 4;
|
|
|
+ /**
|
|
|
+ * 只建主连接下的登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_MAIN_CONN_ONLY = 6;
|
|
|
+ /**
|
|
|
+ * SSL加密方式登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_SSL = 7;
|
|
|
+ /**
|
|
|
+ * 登录智能盒远程设备
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_INTELLIGENT_BOX = 9;
|
|
|
+ /**
|
|
|
+ * 登录设备后不做取配置操作
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_NO_CONFIG = 10;
|
|
|
+ /**
|
|
|
+ * 用U盾设备的登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_U_LOGIN = 11;
|
|
|
+ /**
|
|
|
+ * LDAP方式登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_LDAP = 12;
|
|
|
+ /**
|
|
|
+ * AD(ActiveDirectory)登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_AD = 13;
|
|
|
+ /**
|
|
|
+ * Radius登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_RADIUS = 14;
|
|
|
+ /**
|
|
|
+ * Socks5登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_SOCKET_5 = 15;
|
|
|
+ /**
|
|
|
+ * 云登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_CLOUD = 16;
|
|
|
+ /**
|
|
|
+ * 二次鉴权登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_AUTH_TWICE = 17;
|
|
|
+ /**
|
|
|
+ * TS码流客户端登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_TS = 18;
|
|
|
+ /**
|
|
|
+ * 为P2P登录方式
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_P2P = 19;
|
|
|
+ /**
|
|
|
+ * 手机客户端登录
|
|
|
+ */
|
|
|
+ public static final int EM_LOGIN_SPEC_CAP_MOBILE = 20;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设备序列号字符长度
|
|
|
+ */
|
|
|
+ int DH_SERIALNO_LEN = 48;
|
|
|
|
|
|
/**
|
|
|
* 设备信息
|
|
|
@@ -269,7 +481,7 @@ public interface NetSdkLib extends Library {
|
|
|
/**
|
|
|
* 序列号
|
|
|
*/
|
|
|
- public byte[] sSerialNumber = new byte[NET_SERIALNO_LEN];
|
|
|
+ public byte[] sSerialNumber = new byte[DH_SERIALNO_LEN];
|
|
|
|
|
|
@Override
|
|
|
protected List<String> getFieldOrder() {
|
|
|
@@ -279,768 +491,3611 @@ public interface NetSdkLib extends Library {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*******************查询设备状态*******************/
|
|
|
+ /**
|
|
|
+ * 登录设备
|
|
|
+ *
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param wDVRPort 设备端口
|
|
|
+ * @param pchUserName 用户名
|
|
|
+ * @param pchPassword 用户密码
|
|
|
+ * @param emSpecCap 设备支持的能力,值为2表示主动侦听模式下的用户登陆(车载dvr登录)
|
|
|
+ * @param pCapParam 对emSpecCap 的补充参数,emSpecCap = 2时,pCapParam填充设备序列号字串(车载dvr登录)
|
|
|
+ * @param lpDeviceInfo 设备信息,属于输出参数,填NULL效果类似emSpecCap=10
|
|
|
+ * @param error (当函数返回成功时,该参数的值无意义),返回登录错误码
|
|
|
+ * @return
|
|
|
+ * @see EM_LOGIN_SPAC_CAP_TYPE
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_LoginEx2(String pchDVRIP, int wDVRPort, String pchUserName, String pchPassword, int emSpecCap,
|
|
|
+ Pointer pCapParam, NET_DEVICEINFO_Ex lpDeviceInfo, IntByReference error);
|
|
|
|
|
|
/**
|
|
|
- * 获取前端设备的当前工作状态
|
|
|
+ * 登出设备
|
|
|
*
|
|
|
- * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
- * @param nType 查询信息类型
|
|
|
- * @param pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同,返回数据的数据结构也不同
|
|
|
- * @param nBufLen 缓存长度,单位字节
|
|
|
- * @param pRetLen 输出参数,实际返回的数据长度,单位字节
|
|
|
- * @param waittime 查询状态等待时间,默认1000ms
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
* @return 成功返回TRUE,失败返回FALSE
|
|
|
- * @see DeviceStateType
|
|
|
*/
|
|
|
- boolean CLIENT_QueryDevState(NativeLong lLoginID, int nType, Pointer pBuf, int nBufLen, IntByReference pRetLen,
|
|
|
- int waittime);
|
|
|
+ boolean CLIENT_Logout(NativeLong lLoginID);
|
|
|
|
|
|
- /*******************查询远程设备状态*******************/
|
|
|
+ /*******************人脸识别*******************/
|
|
|
|
|
|
/**
|
|
|
- * 获取前端设备的当前工作状态
|
|
|
- *
|
|
|
- * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
- * @param nType 查询信息类型
|
|
|
- * @param nChannelID 通道号,对于单通道设备,填写为0,多通道设备填写为具体通道值,0 - n
|
|
|
- * @param pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同,返回数据的数据结构也不同
|
|
|
- * @param nBufLen 缓存长度,单位字节
|
|
|
- * @param pRetLen 输出参数,实际返回的数据长度,单位字节
|
|
|
- * @param waittime 查询状态等待时间,默认1000ms
|
|
|
- * @return 成功返回TRUE,失败返回FALSE
|
|
|
- * @see DeviceStateType
|
|
|
+ * 最大用户名长度
|
|
|
+ */
|
|
|
+ int MAX_USER_NAME_LEN = 128;
|
|
|
+ /**
|
|
|
+ * 房间最大个数
|
|
|
*/
|
|
|
- boolean CLIENT_QueryRemotDevState(NativeLong lLoginID, int nType, int nChannelID, Pointer pBuf, int nBufLen,
|
|
|
- IntByReference pRetLen, int waittime);
|
|
|
+ int MAX_ROOMNUM_COUNT = 32;
|
|
|
+ /**
|
|
|
+ * 人脸模板数据最大个数
|
|
|
+ */
|
|
|
+ int MAX_FACE_COUNT = 20;
|
|
|
|
|
|
/**
|
|
|
- * 普通报警信息扩展结构体
|
|
|
+ * 人脸信息
|
|
|
*/
|
|
|
- class NET_CLIENT_STATE_EX extends Structure {
|
|
|
+ class NET_FACE_RECORD_INFO extends Structure {
|
|
|
/**
|
|
|
- * 通道数
|
|
|
+ * 用户名
|
|
|
*/
|
|
|
- public int channelcount;
|
|
|
+ public byte[] szUserName = new byte[MAX_USER_NAME_LEN];
|
|
|
/**
|
|
|
- * 报警输入口数
|
|
|
+ * 房间个数
|
|
|
*/
|
|
|
- public int alarminputcount;
|
|
|
+ public int nRoom;
|
|
|
/**
|
|
|
- * 外部报警
|
|
|
+ * 房间号列表
|
|
|
*/
|
|
|
- public byte[] alarm = new byte[32];
|
|
|
+ public byte[] szRoomNo = new byte[MAX_ROOMNUM_COUNT * DH_COMMON_STRING_16];
|
|
|
/**
|
|
|
- * 动态检测
|
|
|
+ * 人脸模板数据个数
|
|
|
*/
|
|
|
- public byte[] motiondection = new byte[32];
|
|
|
+ public int nFaceData;
|
|
|
/**
|
|
|
- * 视频丢失
|
|
|
+ * 人脸模板数据
|
|
|
*/
|
|
|
- public byte[] videolost = new byte[32];
|
|
|
+ public byte[] szFaceData = new byte[MAX_FACE_COUNT * MAX_FACE_DATA_LEN];
|
|
|
/**
|
|
|
- * 扩展字段
|
|
|
+ * 人脸模版数据大小
|
|
|
*/
|
|
|
- public byte[] bReserved = new byte[32];
|
|
|
-
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("alarm", "alarminputcount", "bReserved", "channelcount",
|
|
|
- "motiondection", "videolost"));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String toString() {
|
|
|
- return "NET_CLIENT_STATE_EX{" +
|
|
|
- "channelcount=" + channelcount +
|
|
|
- ", alarminputcount=" + alarminputcount +
|
|
|
- ", alarm=" + Arrays.toString(alarm) +
|
|
|
- ", motiondection=" + Arrays.toString(motiondection) +
|
|
|
- ", videolost=" + Arrays.toString(videolost) +
|
|
|
- ", bReserved=" + Arrays.toString(bReserved) +
|
|
|
- '}';
|
|
|
- }
|
|
|
- }
|
|
|
+ public int[] nFaceDataLen = new int[MAX_FACE_COUNT];
|
|
|
+ /**
|
|
|
+ * 人脸照片个数
|
|
|
+ */
|
|
|
+ public int nFacePhoto;
|
|
|
+ /**
|
|
|
+ * 每张图片的大小
|
|
|
+ */
|
|
|
+ public int[] nFacePhotoLen = new int[MAX_PHOTO_COUNT];
|
|
|
+ /**
|
|
|
+ * 人脸照片数据,大小不超过120K
|
|
|
+ */
|
|
|
+ public byte[] pszFacePhoto = new byte[MAX_PHOTO_COUNT];
|
|
|
+ /**
|
|
|
+ * 是否设置人脸有效时间
|
|
|
+ */
|
|
|
+ public boolean bValidDate;
|
|
|
+ /**
|
|
|
+ * 人脸有效开始时间
|
|
|
+ */
|
|
|
+ public NET_TIME stuValidDateStart;
|
|
|
+ /**
|
|
|
+ * 人脸有效结束时间
|
|
|
+ */
|
|
|
+ public NET_TIME stuValidDateEnd;
|
|
|
+ /**
|
|
|
+ * 保留字节
|
|
|
+ */
|
|
|
+ public byte[] byReserved = new byte[332];
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 硬盘信息
|
|
|
+ * 添加人脸记录信息输入参数
|
|
|
*/
|
|
|
- class NET_DEV_DISKSTATE extends Structure {
|
|
|
+ class NET_IN_ADD_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
/**
|
|
|
- * 硬盘的容量
|
|
|
+ * 人脸数据
|
|
|
*/
|
|
|
- public int dwVolume;
|
|
|
+ public NET_FACE_RECORD_INFO stuFaceInfo;
|
|
|
+
|
|
|
+ public NET_IN_ADD_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加人脸记录信息输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_ADD_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ADD_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取人脸记录信息输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_GET_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 硬盘的剩余空间
|
|
|
+ * 用户ID
|
|
|
*/
|
|
|
- public int dwFreeSpace;
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_GET_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取人脸记录信息输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_GET_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 高四位的值表示硬盘类型,具体见表说明;低四位的值表示硬盘的状态,0-休眠,1-活动,2-故障等;将DWORD拆成四个BYTE
|
|
|
- * @see DiskType
|
|
|
+ * 人脸模板数据个数
|
|
|
*/
|
|
|
- public byte dwStatus;
|
|
|
+ public int nFaceData;
|
|
|
/**
|
|
|
- * 硬盘号
|
|
|
+ * 人脸模板数据
|
|
|
*/
|
|
|
- public byte bDiskNum;
|
|
|
+ public byte[] szFaceData = new byte[MAX_FACE_COUNT * MAX_FACE_DATA_LEN];
|
|
|
+
|
|
|
+ public NET_OUT_GET_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新人脸记录信息输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_UPDATE_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 分区号
|
|
|
+ * 用户ID
|
|
|
*/
|
|
|
- public byte bSubareaNum;
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
/**
|
|
|
- * 标识,0为本地 1为远程
|
|
|
+ * 人脸数据
|
|
|
*/
|
|
|
- public byte bSignal;
|
|
|
+ public NET_FACE_RECORD_INFO stuFaceInfo;
|
|
|
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("bDiskNum", "bSignal", "bSubareaNum", "dwFreeSpace",
|
|
|
- "dwStatus", "dwVolume"));
|
|
|
+ public NET_IN_UPDATE_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public String toString() {
|
|
|
- return "NET_DEV_DISKSTATE{" +
|
|
|
- "dwVolume=" + dwVolume +
|
|
|
- ", dwFreeSpace=" + dwFreeSpace +
|
|
|
- ", dwStatus=" + dwStatus +
|
|
|
- ", bDiskNum=" + bDiskNum +
|
|
|
- ", bSubareaNum=" + bSubareaNum +
|
|
|
- ", bSignal=" + bSignal +
|
|
|
- '}';
|
|
|
+ /**
|
|
|
+ * 更新人脸记录信息输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_UPDATE_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_UPDATE_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除人脸记录信息输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_REMOVE_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_REMOVE_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除人脸记录信息输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_REMOVE_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_REMOVE_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清除人脸记录信息输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_CLEAR_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_IN_CLEAR_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清除人脸记录信息输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_CLEAR_FACE_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_CLEAR_FACE_INFO() {
|
|
|
+ this.dwSize = this.size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 设备硬盘信息
|
|
|
+ * 人脸信息记录操作类型
|
|
|
*/
|
|
|
- class DH_HARDDISK_STATE extends Structure {
|
|
|
+ class EM_FACEINFO_OPREATE_TYPE {
|
|
|
+ /**
|
|
|
+ * 添加
|
|
|
+ */
|
|
|
+ public static final int EM_FACEINFO_OPREATE_ADD = 0;
|
|
|
+ /**
|
|
|
+ * 获取
|
|
|
+ */
|
|
|
+ public static final int EM_FACEINFO_OPREATE_GET = 1;
|
|
|
+ /**
|
|
|
+ * 更新
|
|
|
+ */
|
|
|
+ public static final int EM_FACEINFO_OPREATE_UPDATE = 2;
|
|
|
/**
|
|
|
- * 硬盘或者分区个数个数
|
|
|
+ * 删除
|
|
|
*/
|
|
|
- public int dwDiskNum;
|
|
|
+ public static final int EM_FACEINFO_OPREATE_REMOVE = 3;
|
|
|
/**
|
|
|
- * 硬盘或分区信息
|
|
|
+ * 清除
|
|
|
*/
|
|
|
- public NET_DEV_DISKSTATE[] stDisks = (NET_DEV_DISKSTATE[]) new NET_DEV_DISKSTATE().toArray(DH_MAX_DISKNUM);
|
|
|
+ public static final int EM_FACEINFO_OPREATE_CLEAR = 4;
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("dwDiskNum", "stDisks"));
|
|
|
+ /**
|
|
|
+ * 人脸信息记录操作函数
|
|
|
+ *
|
|
|
+ * @param lLoginID 登陆句柄
|
|
|
+ * @param emType 操作类型
|
|
|
+ * @param pInParam 接口输入参数, 资源由用户维护
|
|
|
+ * @param pOutParam 接口输出参数, 资源由用户维护
|
|
|
+ * @param nWaitTime 等待超时时间
|
|
|
+ * @return
|
|
|
+ * @see EM_FACEINFO_OPREATE_TYPE
|
|
|
+ */
|
|
|
+ boolean CLIENT_FaceInfoOpreate(NativeLong lLoginID, int emType, Pointer pInParam, Pointer pOutParam,
|
|
|
+ int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindFaceInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_FACEINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_FACEINFO_START_FIND() {
|
|
|
+ this.dwSize = this.size();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public String toString() {
|
|
|
- return "DH_HARDDISK_STATE{" +
|
|
|
- "dwDiskNum=" + dwDiskNum +
|
|
|
- ", stDisks=" + Arrays.toString(stDisks) +
|
|
|
- '}';
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindFaceInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_FACEINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 符合查询条件的总数
|
|
|
+ */
|
|
|
+ public int nTotalCount;
|
|
|
+
|
|
|
+ public NET_OUT_FACEINFO_START_FIND() {
|
|
|
+ this.dwSize = this.size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*******************人脸识别*******************/
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindFaceInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_FACEINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 起始序号
|
|
|
+ */
|
|
|
+ public int nStartNo;
|
|
|
+ /**
|
|
|
+ * 本次查询的条数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+
|
|
|
+ public NET_IN_FACEINFO_DO_FIND() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 人脸识别数据库信息操作(包括添加和删除)
|
|
|
- *
|
|
|
- * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
- * @param pstInParam
|
|
|
- * @param pstOutParam
|
|
|
- * @param nWaitTime 等待时间,默认1000ms
|
|
|
- * @return 失败返回FALSE,成功返回TRUE
|
|
|
- * @see NET_IN_OPERATE_FACERECONGNITIONDB
|
|
|
+ * 人脸信息
|
|
|
*/
|
|
|
- boolean CLIENT_OperateFaceRecognitionDB(NativeLong lLoginID, NET_IN_OPERATE_FACERECONGNITIONDB pstInParam,
|
|
|
- NET_OUT_OPERATE_FACERECONGNITIONDB pstOutParam, int nWaitTime);
|
|
|
+ class NET_FACEINFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 有效的MD5编码数量
|
|
|
+ */
|
|
|
+ public int nMD5;
|
|
|
+ /**
|
|
|
+ * 图片对应的32字节MD5编码加密
|
|
|
+ */
|
|
|
+ public byte[] szMD5 = new byte[5 * DH_COMMON_STRING_64];
|
|
|
+ public byte[] byReserved = new byte[512];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindFaceInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_FACEINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 本次查询到的个数
|
|
|
+ */
|
|
|
+ public int nRetNum;
|
|
|
+ /**
|
|
|
+ * 查询结果, 用户分配内存,大小为sizeof(NET_FACEINFO)*nMaxNum
|
|
|
+ */
|
|
|
+ public NET_FACEINFO pstuInfo;
|
|
|
+ /**
|
|
|
+ * 用户分配内存的个数
|
|
|
+ */
|
|
|
+ public int nMaxNum;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_FACEINFO_DO_FIND() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 查找人脸识别结果
|
|
|
+ * 开始查询人脸信息
|
|
|
*
|
|
|
- * @param pstInParam 输入参数 NET_IN_DOFIND_FACERECONGNITION
|
|
|
- * @param pstOutParam 输出参数 NET_OUT_DOFIND_FACERECONGNITION
|
|
|
- * @param nWaitTime 等待时间
|
|
|
- * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ * @param lLoginID 登陆句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_FACEINFO_START_FIND
|
|
|
+ * @see NET_OUT_FACEINFO_START_FIND
|
|
|
*/
|
|
|
- boolean CLIENT_DoFindFaceRecognition(final NET_IN_DOFIND_FACERECONGNITION pstInParam,
|
|
|
- NET_OUT_DOFIND_FACERECONGNITION pstOutParam, int nWaitTime);
|
|
|
+ NativeLong CLIENT_StartFindFaceInfo(NativeLong lLoginID, NET_IN_FACEINFO_START_FIND pstIn,
|
|
|
+ NET_OUT_FACEINFO_START_FIND pstOut, int nWaitTime);
|
|
|
|
|
|
/**
|
|
|
- * 按条件查询人脸识别结果
|
|
|
+ * 获取人脸信息
|
|
|
*
|
|
|
- * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
- * @param pstInParam 输入参数 NET_IN_STARTFIND_FACERECONGNITION
|
|
|
- * @param pstOutParam 输出参数 NET_OUT_STARTFIND_FACERECONGNITION
|
|
|
+ * @param lFindHandle 查询句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
* @param nWaitTime 等待时间
|
|
|
- * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_FACEINFO_DO_FIND
|
|
|
+ * @see NET_OUT_FACEINFO_DO_FIND
|
|
|
*/
|
|
|
- boolean CLIENT_StartFindFaceRecognition(NativeLong lLoginID, NET_IN_STARTFIND_FACERECONGNITION pstInParam,
|
|
|
- NET_OUT_STARTFIND_FACERECONGNITION pstOutParam, int nWaitTime);
|
|
|
+ boolean CLIENT_DoFindFaceInfo(NativeLong lFindHandle, NET_IN_FACEINFO_DO_FIND pstIn,
|
|
|
+ NET_OUT_FACEINFO_DO_FIND pstOut, int nWaitTime);
|
|
|
|
|
|
/**
|
|
|
- * 结束人脸识别查询
|
|
|
+ * 停止查询人脸信息
|
|
|
*
|
|
|
- * @param lFindHandle CLIENT_StartFindFaceRecognition的输出参数中获取
|
|
|
+ * @param lFindHandle 查询句柄
|
|
|
* @return
|
|
|
*/
|
|
|
- boolean CLIENT_StopFindFaceRecognition(NativeLong lFindHandle);
|
|
|
+ boolean CLIENT_StopFindFaceInfo(NativeLong lFindHandle);
|
|
|
|
|
|
/**
|
|
|
- * 检测人脸(输入一张大图,输出大图中被检测出来的人脸图片)
|
|
|
- *
|
|
|
- * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
- * @param pstInParam 输入参数 NET_IN_DETECT_FACE
|
|
|
- * @param pstOutParam 输出参数 NET_OUT_DETECT_FACE
|
|
|
- * @param nWaitTime 等待时间
|
|
|
- * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ * 用户类型
|
|
|
+ */
|
|
|
+ class NET_ENUM_USER_TYPE {
|
|
|
+ /**
|
|
|
+ * 未知用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_UNKNOWN = -1;
|
|
|
+ /**
|
|
|
+ * 普通用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_NORMAL = 0;
|
|
|
+ /**
|
|
|
+ * 黑名单用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_BLACKLIST = 1;
|
|
|
+ /**
|
|
|
+ * 来宾账户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_GUEST = 2;
|
|
|
+ /**
|
|
|
+ * 巡逻用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_PATROL = 3;
|
|
|
+ /**
|
|
|
+ * VIP用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_VIP = 4;
|
|
|
+ /**
|
|
|
+ * 残疾用户
|
|
|
+ */
|
|
|
+ public static final int NET_ENUM_USER_TYPE_HANDICAP = 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户权限
|
|
|
+ */
|
|
|
+ class NET_ATTENDANCE_AUTHORITY {
|
|
|
+ public static final int NET_ATTENDANCE_AUTHORITY_UNKNOWN = -1;
|
|
|
+ /**
|
|
|
+ * 普通用户
|
|
|
+ */
|
|
|
+ public static final int NET_ATTENDANCE_AUTHORITY_CUSTOMER = 0;
|
|
|
+ /**
|
|
|
+ * 管理员
|
|
|
+ */
|
|
|
+ public static final int NET_ATTENDANCE_AUTHORITY_ADMINISTRATORS = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户信息
|
|
|
*/
|
|
|
- boolean CLIENT_DetectFace(NativeLong lLoginID, NET_IN_DETECT_FACE pstInParam, NET_OUT_DETECT_FACE pstOutParam,
|
|
|
- int nWaitTime);
|
|
|
+ class NET_ACCESS_USER_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 人员名称
|
|
|
+ */
|
|
|
+ public byte[] szName = new byte[MAX_COMMON_STRING_32];
|
|
|
+ /**
|
|
|
+ * 用户类型
|
|
|
+ *
|
|
|
+ * @see NET_ENUM_USER_TYPE
|
|
|
+ */
|
|
|
+ public int emUserType;
|
|
|
+ /**
|
|
|
+ * 用户状态, 0 正常, 1 冻结
|
|
|
+ */
|
|
|
+ public int nUserStatus;
|
|
|
+ /**
|
|
|
+ * 来宾卡的通行次数
|
|
|
+ */
|
|
|
+ public int nUserTime;
|
|
|
+ /**
|
|
|
+ * 身份证号码
|
|
|
+ */
|
|
|
+ public byte[] szCitizenIDNo = new byte[MAX_COMMON_STRING_32];
|
|
|
+ /**
|
|
|
+ * UserID+密码开门时密码
|
|
|
+ */
|
|
|
+ public byte[] szPsw = new byte[DH_MAX_CARDPWD_LEN];
|
|
|
+ /**
|
|
|
+ * 有效的门数目
|
|
|
+ */
|
|
|
+ public int nDoorNum;
|
|
|
+ /**
|
|
|
+ * 有权限的门序号,即 CFG_CMD_ACCESS_EVENT 配置的数组下标
|
|
|
+ */
|
|
|
+ public int[] nDoors = new int[DH_MAX_DOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 有效的的开门时间段数目
|
|
|
+ */
|
|
|
+ public int nTimeSectionNum;
|
|
|
+ /**
|
|
|
+ * 开门时间段索引,即 CFG_ACCESS_TIMESCHEDULE_INFO 的数组下标
|
|
|
+ */
|
|
|
+ public int[] nTimeSectionNo = new int[DH_MAX_TIMESECTION_NUM];
|
|
|
+ /**
|
|
|
+ * 假日计划表示数量
|
|
|
+ */
|
|
|
+ public int nSpecialDaysScheduleNum;
|
|
|
+ /**
|
|
|
+ * 假日计划标识, 即 NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE 配置的下标
|
|
|
+ */
|
|
|
+ public int[] nSpecialDaysSchedule = new int[MAX_ACCESSDOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 开始有效期
|
|
|
+ */
|
|
|
+ public NET_TIME stuValidBeginTime;
|
|
|
+ /**
|
|
|
+ * 结束有效期
|
|
|
+ */
|
|
|
+ public NET_TIME stuValidEndTime;
|
|
|
+ /**
|
|
|
+ * 是否拥有首卡权限
|
|
|
+ */
|
|
|
+ public boolean bFirstEnter;
|
|
|
+ /**
|
|
|
+ * 拥有首用户权限的门数量
|
|
|
+ */
|
|
|
+ public int nFirstEnterDoorsNum;
|
|
|
+ /**
|
|
|
+ * 拥有首用户权限的门序号,bFirstEnter为TRUE时有效,-1表示全通道
|
|
|
+ */
|
|
|
+ public int[] nFirstEnterDoors = new int[DH_MAX_DOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 用户权限,可选
|
|
|
+ *
|
|
|
+ * @see NET_ATTENDANCE_AUTHORITY
|
|
|
+ */
|
|
|
+ public int emAuthority;
|
|
|
+ /**
|
|
|
+ * 反潜超时时间
|
|
|
+ */
|
|
|
+ public int nRepeatEnterRouteTimeout;
|
|
|
+ /**
|
|
|
+ * 有效的楼层数量
|
|
|
+ */
|
|
|
+ public int nFloorNum;
|
|
|
+ /**
|
|
|
+ * 楼层号
|
|
|
+ */
|
|
|
+ public byte[] szFloorNo = new byte[MAX_ACCESS_FLOOR_NUM * DH_COMMON_STRING_16];
|
|
|
+ /**
|
|
|
+ * 房间个数
|
|
|
+ */
|
|
|
+ public int nRoom;
|
|
|
+ /**
|
|
|
+ * 房间号列表
|
|
|
+ */
|
|
|
+ public byte[] szRoomNo = new byte[MAX_ROOMNUM_COUNT * DH_COMMON_STRING_16];
|
|
|
+ /**
|
|
|
+ * 保留字节
|
|
|
+ */
|
|
|
+ public byte[] byReserved = new byte[4096];
|
|
|
+
|
|
|
+ public NET_ACCESS_USER_INFO() {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected List<String> getFieldOrder() {
|
|
|
+ return Collections.unmodifiableList(Arrays.asList("bFirstEnter", "byReserved", "emAuthority", "emUserType",
|
|
|
+ "nDoorNum", "nDoors", "nFirstEnterDoors", "nFirstEnterDoorsNum", "nFloorNum",
|
|
|
+ "nRepeatEnterRouteTimeout", "nRoom", "nSpecialDaysSchedule", "nSpecialDaysScheduleNum",
|
|
|
+ "nTimeSectionNo", "nTimeSectionNum", "nUserStatus", "nUserTime", "stuValidBeginTime",
|
|
|
+ "stuValidEndTime", "szCitizenIDNo", "szFloorNo", "szName", "szPsw", "szRoomNo", "szUserID"));
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_OperateFaceRecognitionDB接口输入参数
|
|
|
+ * 新增或更新用户信息入参
|
|
|
*/
|
|
|
- class NET_IN_OPERATE_FACERECONGNITIONDB extends Structure {
|
|
|
+ class NET_IN_ACCESS_USER_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户信息数量
|
|
|
+ */
|
|
|
+ public int nInfoNum;
|
|
|
+ /**
|
|
|
+ * 用户信息,内存由用户申请释放,申请大小不小于nInfoNum*sizeof(NET_ACCESS_USER_INFO);
|
|
|
+ *
|
|
|
+ * @see NET_ACCESS_USER_INFO
|
|
|
+ */
|
|
|
+ public NET_ACCESS_USER_INFO pUserInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_USER_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 操作错误码
|
|
|
+ */
|
|
|
+ enum NET_EM_FAILCODE {
|
|
|
+ /**
|
|
|
+ * 没有错误
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_NOERROR(0),
|
|
|
+ /**
|
|
|
+ * 未知错误
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_UNKNOWN(1),
|
|
|
+ /**
|
|
|
+ * 参数错误
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_PARAM(2),
|
|
|
+ /**
|
|
|
+ * 无效密码
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_PASSWORD(3),
|
|
|
+ /**
|
|
|
+ * 无效指纹数据
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_FP(4),
|
|
|
+ /**
|
|
|
+ * 无效人脸数据
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_FACE(5),
|
|
|
+ /**
|
|
|
+ * 无效卡数据
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_CARD(6),
|
|
|
+ /**
|
|
|
+ * 无效人数据
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_INVALID_USER(7),
|
|
|
+ /**
|
|
|
+ * 能力集子服务获取失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_GET_SUBSERVICE(8),
|
|
|
+ /**
|
|
|
+ * 获取组件的方法集失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_GET_METHOD(9),
|
|
|
+ /**
|
|
|
+ * 获取资源实体能力集失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_GET_SUBCAPS(10),
|
|
|
+ /**
|
|
|
+ * 已达插入上限
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_ERROR_INSERT_LIMIT(11),
|
|
|
+ /**
|
|
|
+ * 已达最大插入速度
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_ERROR_MAX_INSERT_RATE(12),
|
|
|
+ /**
|
|
|
+ * 清除指纹数据失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_ERASE_FP(13),
|
|
|
+ /**
|
|
|
+ * 清除人脸数据失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_ERASE_FACE(14),
|
|
|
+ /**
|
|
|
+ * 清除卡数据失败
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_FAILED_ERASE_CARD(15),
|
|
|
+ /**
|
|
|
+ * 没有记录
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_NO_RECORD(16),
|
|
|
+ /**
|
|
|
+ * 查找到最后,没有更多记录
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_NOMORE_RECORD(17),
|
|
|
+ /**
|
|
|
+ * 下发卡或指纹时,数据重复
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_RECORD_ALREADY_EXISTS(18),
|
|
|
+ /**
|
|
|
+ * 超过个人最大指纹记录数
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_MAX_FP_PERUSER(19),
|
|
|
+ /**
|
|
|
+ * 超过个人最大卡片记录数
|
|
|
+ */
|
|
|
+ NET_EM_FAILCODE_MAX_CARD_PERUSER(20);
|
|
|
+
|
|
|
+ final int code;
|
|
|
+
|
|
|
+ NET_EM_FAILCODE(int code) {
|
|
|
+ this.code = code;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static NET_EM_FAILCODE of(int code) {
|
|
|
+ for (NET_EM_FAILCODE err : values()) {
|
|
|
+ if (err.code == code) {
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return NET_EM_FAILCODE_UNKNOWN;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getCode() {
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getMessage() {
|
|
|
+ return MessageBundle.instance().getString(name());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "[" + name() + ']' + getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增或更新用户信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_USER_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 申请的最大返回的错误信息数量,不小于NET_IN_ACCESS_USER_SERVICE_INSERT中nInfoNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_INSERT中nInfoNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_USER_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_USER_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 查询的数量
|
|
|
+ */
|
|
|
+ public int nUserNum;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[100 * DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_USER_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected List<String> getFieldOrder() {
|
|
|
+ return Collections.unmodifiableList(Arrays.asList("dwSize", "nUserNum", "szUserID"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_USER_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 查询返回的最大数量
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户信息,内存由用户申请释放,申请大小不小于 nUserNum*sizeof(NET_ACCESS_USER_INFO)
|
|
|
+ * 返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
|
|
|
+ */
|
|
|
+ public NET_ACCESS_USER_INFO pUserInfo;
|
|
|
+ /**
|
|
|
+ * 查询失败时,内存由用户申请释放,对应查询的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_USER_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected List<String> getFieldOrder() {
|
|
|
+ return Collections.unmodifiableList(Arrays.asList("dwSize", "nMaxRetNum", "pUserInfo", "pFailCode"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除指定ID人员信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_USER_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 删除的数量
|
|
|
+ */
|
|
|
+ public int nUserNum;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[100 * DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_USER_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除指定ID人员信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_USER_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 返回的最大数量,不小于 NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 删除失败时,内存由用户申请释放,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_USER_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除所有人员信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_USER_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_USER_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除所有人员信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_USER_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_USER_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人员信息操作类型
|
|
|
+ */
|
|
|
+ class NET_EM_ACCESS_CTL_USER_SERVICE {
|
|
|
+ /**
|
|
|
+ * 添加人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_INSERT ,
|
|
|
+ * pstOutParam = NET_OUT_ACCESS_USER_SERVICE_INSERT
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_USER_SERVICE_INSERT = 0;
|
|
|
+ /**
|
|
|
+ * 获取人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_GET , pstOutParam = NET_OUT_ACCESS_USER_SERVICE_GET
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_USER_SERVICE_GET = 1;
|
|
|
+ /**
|
|
|
+ * 删除人员信息,包含所有授权信息 pstInParam = NET_IN_ACCESS_USER_SERVICE_REMOVE ,
|
|
|
+ * pstOutParam = NET_OUT_ACCESS_USER_SERVICE_REMOVE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_USER_SERVICE_REMOVE = 2;
|
|
|
+ /**
|
|
|
+ * 清空所有人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_CLEAR ,
|
|
|
+ * pstOutParam = NET_OUT_ACCESS_USER_SERVICE_CLEAR
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_USER_SERVICE_CLEAR = 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁人员信息管理接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param ctlType 操作类型
|
|
|
+ * @param pstInParam 输入参数
|
|
|
+ * @param pstOutParam 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateAccessUserService(NativeLong lLoginID, int ctlType, Pointer pstInParam,
|
|
|
+ Pointer pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindUserInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_USERINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[MAX_COMMON_STRING_32];
|
|
|
+
|
|
|
+ public NET_IN_USERINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindUserInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_USERINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 符合查询条件的总数
|
|
|
+ */
|
|
|
+ public int nTotalCount;
|
|
|
+ /**
|
|
|
+ * doFind一次查询的最大数量
|
|
|
+ */
|
|
|
+ public int nCapNum;
|
|
|
+
|
|
|
+ public NET_OUT_USERINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindUserInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_USERINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 起始序号
|
|
|
+ */
|
|
|
+ public int nStartNo;
|
|
|
+ /**
|
|
|
+ * 本次查询的条数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+
|
|
|
+ public NET_IN_USERINFO_DO_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindUserInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_USERINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 本次查询到的个数
|
|
|
+ */
|
|
|
+ public int nRetNum;
|
|
|
+ /**
|
|
|
+ * 查询结果, 用户分配释放内存,大小为sizeof(NET_ACCESS_USER_INFO)*nMaxNum
|
|
|
+ */
|
|
|
+ public NET_ACCESS_USER_INFO pstuInfo;
|
|
|
+ /**
|
|
|
+ * 用户分配内存的个数
|
|
|
+ */
|
|
|
+ public int nMaxNum;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_USERINFO_DO_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始查询人员信息
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_USERINFO_START_FIND
|
|
|
+ * @see NET_OUT_USERINFO_START_FIND
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_StartFindUserInfo(NativeLong lLoginID, NET_IN_USERINFO_START_FIND pstIn,
|
|
|
+ NET_OUT_USERINFO_START_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取人员信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_StartFindUserInfo返回的查询句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_USERINFO_DO_FIND
|
|
|
+ * @see NET_OUT_USERINFO_DO_FIND
|
|
|
+ */
|
|
|
+ boolean CLIENT_DoFindUserInfo(NativeLong lFindHandle, NET_IN_USERINFO_DO_FIND pstIn,
|
|
|
+ NET_OUT_USERINFO_DO_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止查询人员信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_StartFindUserInfo返回的查询句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_StopFindUserInfo(NativeLong lFindHandle);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 卡类型
|
|
|
+ */
|
|
|
+ class NET_ACCESSCTLCARD_TYPE {
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_UNKNOWN = -1;
|
|
|
+ /**
|
|
|
+ * 一般卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_GENERAL = 0;
|
|
|
+ /**
|
|
|
+ * VIP卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_VIP = 1;
|
|
|
+ /**
|
|
|
+ * 来宾卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_GUEST = 2;
|
|
|
+ /**
|
|
|
+ * 巡逻卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_PATROL = 3;
|
|
|
+ /**
|
|
|
+ * 黑名单卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_BLACKLIST = 4;
|
|
|
+ /**
|
|
|
+ * 胁迫卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_CORCE = 5;
|
|
|
+ /**
|
|
|
+ * 巡检卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_POLLING = 6;
|
|
|
+ /**
|
|
|
+ * 母卡
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_TYPE_MOTHERCARD = 0xff;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 卡片信息
|
|
|
+ */
|
|
|
+ class NET_ACCESS_CARD_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[DH_MAX_CARDNO_LEN];
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 卡类型,只支持一般卡、胁迫卡和母卡
|
|
|
+ *
|
|
|
+ * @see NET_ACCESSCTLCARD_TYPE
|
|
|
+ */
|
|
|
+ public int emType;
|
|
|
+ /**
|
|
|
+ * 动态校验码
|
|
|
+ */
|
|
|
+ public byte[] szDynamicCheckCode = new byte[MAX_COMMON_STRING_16];
|
|
|
+ public byte[] byReserved = new byte[4096];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增卡片信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_CARD_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户信息数量
|
|
|
+ */
|
|
|
+ public int nInfoNum;
|
|
|
+ /**
|
|
|
+ * 卡片信息,用户分配释放内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
|
|
|
+ */
|
|
|
+ public NET_ACCESS_CARD_INFO pCardInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_CARD_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增卡片信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_CARD_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_CARD_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取卡片信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_CARD_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 查询的数量
|
|
|
+ */
|
|
|
+ public int nCardNum;
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[100 * DH_MAX_CARDNO_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_CARD_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取卡片信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_CARD_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 查询返回的最大数量
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 卡片信息,内存由用户申请释放,申请大小不小于nCardNum*sizeof(NET_ACCESS_CARD_INFO);
|
|
|
+ * 返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
|
|
|
+ *
|
|
|
+ * @see NET_ACCESS_CARD_INFO
|
|
|
+ */
|
|
|
+ public NET_ACCESS_CARD_INFO pCardInfo;
|
|
|
+ /**
|
|
|
+ * 查询失败时,对应查询的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_CARD_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新卡片信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_CARD_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户信息数量
|
|
|
+ */
|
|
|
+ public int nInfoNum;
|
|
|
+ /**
|
|
|
+ * 卡片信息,用户分配释放内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
|
|
|
+ */
|
|
|
+ public NET_ACCESS_CARD_INFO pCardInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_CARD_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新卡片信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_CARD_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_CARD_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除指定卡号信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_CARD_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 删除的数量
|
|
|
+ */
|
|
|
+ public int nCardNum;
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[100 * DH_MAX_CARDNO_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_CARD_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除指定卡号信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_CARD_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回信息数量,不小于 NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,插入失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_CARD_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除所有卡片信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_CARD_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_CARD_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除所有卡片信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_CARD_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_CARD_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 卡片信息操作类型
|
|
|
+ */
|
|
|
+ class NET_EM_ACCESS_CTL_CARD_SERVICE {
|
|
|
+ /**
|
|
|
+ * 添加, pstInParam = NET_IN_ACCESS_CARD_SERVICE_INSERT , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_INSERT
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_INSERT = 0;
|
|
|
+ /**
|
|
|
+ * 获取, pstInParam = NET_IN_ACCESS_CARD_SERVICE_GET , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_GET
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_GET = 1;
|
|
|
+ /**
|
|
|
+ * 更新, pstInParam = NET_IN_ACCESS_CARD_SERVICE_UPDATE , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_UPDATE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_UPDATE = 2;
|
|
|
+ /**
|
|
|
+ * 删除, pstInParam = NET_IN_ACCESS_CARD_SERVICE_REMOVE , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_REMOVE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_REMOVE = 3;
|
|
|
+ /**
|
|
|
+ * 清空, pstInParam = NET_IN_ACCESS_CARD_SERVICE_CLEAR , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_CLEAR
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_CLEAR = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡片信息管理接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param ctlType 操作类型
|
|
|
+ * @param pstInParam 输入参数
|
|
|
+ * @param pstOutParam 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_EM_ACCESS_CTL_CARD_SERVICE
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateAccessCardService(NativeLong lLoginID, int ctlType, Pointer pstInParam,
|
|
|
+ Pointer pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindCardInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_CARDINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[DH_MAX_CARDNO_LEN];
|
|
|
+ /**
|
|
|
+ * 卡类型,只支持一般卡、胁迫卡和母卡
|
|
|
+ *
|
|
|
+ * @see NET_ACCESSCTLCARD_TYPE
|
|
|
+ */
|
|
|
+ public int emType;
|
|
|
+
|
|
|
+ public NET_IN_CARDINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindCardInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_CARDINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 符合查询条件的总数
|
|
|
+ */
|
|
|
+ public int nTotalCount;
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindCardInfo接口一次查询的最大数量
|
|
|
+ */
|
|
|
+ public int nCapNum;
|
|
|
+
|
|
|
+ public NET_OUT_CARDINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindCardInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_CARDINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 起始序号
|
|
|
+ */
|
|
|
+ public int nStartNo;
|
|
|
+ /**
|
|
|
+ * 本次查询的条数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+
|
|
|
+ public NET_IN_CARDINFO_DO_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindCardInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_CARDINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 本次查询到的个数
|
|
|
+ */
|
|
|
+ public int nRetNum;
|
|
|
+ /**
|
|
|
+ * 查询结果, 用户分配释放内存,大小为sizeof(NET_FACEINFO)*nMaxNum
|
|
|
+ */
|
|
|
+ public NET_ACCESS_CARD_INFO pstuInfo;
|
|
|
+ /**
|
|
|
+ * 用户分配内存的个数
|
|
|
+ */
|
|
|
+ public int nMaxNum;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+
|
|
|
+ public NET_OUT_CARDINFO_DO_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始查询卡片信息
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_CARDINFO_START_FIND
|
|
|
+ * @see NET_OUT_CARDINFO_START_FIND
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_StartFindCardInfo(NativeLong lLoginID, NET_IN_CARDINFO_START_FIND pstIn,
|
|
|
+ NET_OUT_CARDINFO_START_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取卡片信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_StartFindCardInfo返回的查询句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_CARDINFO_DO_FIND
|
|
|
+ * @see NET_OUT_CARDINFO_DO_FIND
|
|
|
+ */
|
|
|
+ boolean CLIENT_DoFindCardInfo(NativeLong lFindHandle, NET_IN_CARDINFO_DO_FIND pstIn,
|
|
|
+ NET_OUT_CARDINFO_DO_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止查询卡片信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_StartFindCardInfo返回的查询句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_StopFindCardInfo(NativeLong lFindHandle);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 指纹信息
|
|
|
+ */
|
|
|
+ class NET_ACCESS_FINGERPRINT_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 单个指纹数据包长度
|
|
|
+ */
|
|
|
+ public int nPacketLen;
|
|
|
+ /**
|
|
|
+ * 指纹数据包个数
|
|
|
+ */
|
|
|
+ public int nPacketNum;
|
|
|
+ /**
|
|
|
+ * 指纹数据(数据总长度即nPacketLen*nPacketNum),用户分配释放内存
|
|
|
+ */
|
|
|
+ public byte[] szFingerPrintInfo;
|
|
|
+ /**
|
|
|
+ * 胁迫指纹序号,取值范围[1,nPacketNum] 非法取值的话,该字段无效
|
|
|
+ */
|
|
|
+ public int nDuressIndex;
|
|
|
+ public byte[] byReserved = new byte[4096];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 插入指纹信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 指纹信息的数量
|
|
|
+ */
|
|
|
+ public int nFpNum;
|
|
|
+ /**
|
|
|
+ * 指纹信息,用户分配释放内存
|
|
|
+ */
|
|
|
+ public NET_ACCESS_FINGERPRINT_INFO pFingerPrintInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 插入指纹信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 返回信息数量,不小于NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中 nFpNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中nFpNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新指纹信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 指纹信息的数量
|
|
|
+ */
|
|
|
+ public int nFpNum;
|
|
|
+ /**
|
|
|
+ * 指纹信息,用户分配释放内存
|
|
|
+ */
|
|
|
+ public NET_ACCESS_FINGERPRINT_INFO pFingerPrintInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新指纹信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 返回信息数量,不小于NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE 中 nFpNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,更新失败时,对应更新的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE 中nFpNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取指纹信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FINGERPRINT_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FINGERPRINT_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取指纹信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 实际返回的指纹个数
|
|
|
+ */
|
|
|
+ public int nRetFingerPrintCount;
|
|
|
+ /**
|
|
|
+ * 单个指纹数据包长度
|
|
|
+ */
|
|
|
+ public int nSinglePacketLength;
|
|
|
+ /**
|
|
|
+ * 胁迫指纹序号
|
|
|
+ */
|
|
|
+ public int nDuressIndex;
|
|
|
+ /**
|
|
|
+ * 接受指纹数据的缓存的最大长度
|
|
|
+ */
|
|
|
+ public int nMaxFingerDataLength;
|
|
|
+ /**
|
|
|
+ * 实际返回的总的指纹数据包的长度
|
|
|
+ */
|
|
|
+ public int nRetFingerDataLength;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,指纹数据
|
|
|
+ */
|
|
|
+ public byte pbyFingerData;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除用户指纹信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 删除的用户数量
|
|
|
+ */
|
|
|
+ public int nUserNum;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[100 * DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除用户指纹信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回数量,不小于 NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配释放内存,删除失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清除所有指纹信息入参
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清除所有指纹信息出参
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 指纹信息操作类型
|
|
|
+ */
|
|
|
+ class NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE {
|
|
|
+ /**
|
|
|
+ * 添加, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT ,
|
|
|
+ * pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_INSERT = 0;
|
|
|
+ /**
|
|
|
+ * 获取, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_GET = 1;
|
|
|
+ /**
|
|
|
+ * 更新, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_UPDATE = 2;
|
|
|
+ /**
|
|
|
+ * 删除, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_REMOVE = 3;
|
|
|
+ /**
|
|
|
+ * 清空, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_CLEAR = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 指纹信息管理接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param ctlType 操作类型
|
|
|
+ * @param pstInParam 输入参数
|
|
|
+ * @param pstOutParam 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateAccessFingerprintService(NativeLong lLoginID, NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE ctlType,
|
|
|
+ Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸照片最大个数
|
|
|
+ */
|
|
|
+ int MAX_PHOTO_COUNT = 5;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸信息
|
|
|
+ */
|
|
|
+ class NET_ACCESS_FACE_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 人脸模板数据个数,最大20
|
|
|
+ */
|
|
|
+ public int nFaceData;
|
|
|
+ /**
|
|
|
+ * 人脸模板数据
|
|
|
+ */
|
|
|
+ public byte[] szFaceData = new byte[MAX_FACE_DATA_NUM * MAX_FACE_DATA_LEN];
|
|
|
+ /**
|
|
|
+ * 人脸模版数据大小
|
|
|
+ */
|
|
|
+ public int[] nFaceDataLen = new int[MAX_FACE_DATA_NUM];
|
|
|
+ /**
|
|
|
+ * 人脸照片个数,不超过5个
|
|
|
+ */
|
|
|
+ public int nFacePhoto;
|
|
|
+ /**
|
|
|
+ * 用户申请的每张图片的大小
|
|
|
+ */
|
|
|
+ public int[] nInFacePhotoLen = new int[MAX_PHOTO_COUNT];
|
|
|
+ /**
|
|
|
+ * 每张图片实际的大小
|
|
|
+ */
|
|
|
+ public int[] nOutFacePhotoLen = new int[MAX_PHOTO_COUNT];
|
|
|
+ /**
|
|
|
+ * 人脸照片数据,大小不超过200K
|
|
|
+ */
|
|
|
+ public byte[] pFacePhoto = new byte[MAX_PHOTO_COUNT];
|
|
|
+ public byte[] byReserved = new byte[2048];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACE_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人脸信息数量
|
|
|
+ */
|
|
|
+ public int nFaceInfoNum;
|
|
|
+ /**
|
|
|
+ * 人脸数据,用户自行分配数据
|
|
|
+ */
|
|
|
+ public NET_ACCESS_FACE_INFO pFaceInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACE_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACE_SERVICE_INSERT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_INSERT 中的nFaceInfoNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配内存,添加失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_INSERT中的nFaceInfoNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACE_SERVICE_INSERT() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对象的最大个数
|
|
|
+ */
|
|
|
+ int MAX_OBJECT_NUM_EX = 100;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量获取多用户多个人脸输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACE_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID数量,最大100
|
|
|
+ */
|
|
|
+ public int nUserNum;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[MAX_OBJECT_NUM_EX * DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACE_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量获取多用户多个人脸输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACE_SERVICE_GET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_GET 中的 nUserNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 人脸数据,用户分配内存,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum,只返回人脸模版数据
|
|
|
+ */
|
|
|
+ public NET_ACCESS_FACE_INFO pFaceInfo;
|
|
|
+ /**
|
|
|
+ * 用户分配内存,获取失败时,对应获取的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACE_SERVICE_GET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新多用户多个人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACE_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人脸信息数量
|
|
|
+ */
|
|
|
+ public int nFaceInfoNum;
|
|
|
+ /**
|
|
|
+ * 人脸数据,用户分配内存
|
|
|
+ */
|
|
|
+ public NET_ACCESS_FACE_INFO pFaceInfo;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACE_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新多用户多个人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACE_SERVICE_UPDATE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配内存.更新失败时,对应更新的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACE_SERVICE_UPDATE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除多用户的多个人脸信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACE_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID数量,最大100
|
|
|
+ */
|
|
|
+ public int nUserNum;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[MAX_OBJECT_NUM_EX * DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACE_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除多用户的多个人脸信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACE_SERVICE_REMOVE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
|
|
|
+ */
|
|
|
+ public int nMaxRetNum;
|
|
|
+ /**
|
|
|
+ * 用户分配内存.删除失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
|
|
|
+ *
|
|
|
+ * @see NET_EM_FAILCODE
|
|
|
+ */
|
|
|
+ public int pFailCode;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACE_SERVICE_REMOVE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清空所有人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACE_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACE_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清空所有人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACE_SERVICE_CLEAR extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACE_SERVICE_CLEAR() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸信息操作类型
|
|
|
+ */
|
|
|
+ class NET_EM_ACCESS_CTL_FACE_SERVICE {
|
|
|
+ /**
|
|
|
+ * 添加, pInbuf = NET_IN_ACCESS_FACE_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_INSERT
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT = 0;
|
|
|
+ /**
|
|
|
+ * 获取, pInbuf = NET_IN_ACCESS_FACE_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_GET
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_GET = 1;
|
|
|
+ /**
|
|
|
+ * 更新, pInbuf = NET_IN_ACCESS_FACE_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_UPDATE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE = 2;
|
|
|
+ /**
|
|
|
+ * 删除, pInbuf = NET_IN_ACCESS_FACE_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_REMOVE
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE = 3;
|
|
|
+ /**
|
|
|
+ * 清空, pInbuf = NET_IN_ACCESS_FACE_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_CLEAR
|
|
|
+ */
|
|
|
+ public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁人脸信息管理接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param ctlType 操作类型
|
|
|
+ * @param pstInParam 输入参数
|
|
|
+ * @param pstOutParam 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateAccessFaceService(NativeLong lLoginID, NET_EM_ACCESS_CTL_FACE_SERVICE ctlType,
|
|
|
+ Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_AccessStartFindFaceInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACEINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACEINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_AccessStartFindFaceInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACEINFO_START_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 单次查询最大数量
|
|
|
+ */
|
|
|
+ public int nCapNum;
|
|
|
+ /**
|
|
|
+ * 符合查询条件的总数
|
|
|
+ */
|
|
|
+ public int nTotalCount;
|
|
|
+
|
|
|
+ public NET_OUT_ACCESS_FACEINFO_START_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_AccessDoFindFaceInfo 输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_ACCESS_FACEINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 起始序号
|
|
|
+ */
|
|
|
+ public int nStartNo;
|
|
|
+ /**
|
|
|
+ * 本次查询的条数,不能大于NET_OUT_ACCESS_FACEINFO_START_FIND中的nCapNum
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+
|
|
|
+ public NET_IN_ACCESS_FACEINFO_DO_FIND() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_AccessDoFindFaceInfo 输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_ACCESS_FACEINFO_DO_FIND extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 本次查询到的个数
|
|
|
+ */
|
|
|
+ public int nRetNum;
|
|
|
+ /**
|
|
|
+ * 查询结果, 用户分配内存,大小为sizeof(NET_FACEINFO)*nMaxNum
|
|
|
+ */
|
|
|
+ public NET_FACEINFO pstuInfo;
|
|
|
+ /**
|
|
|
+ * 用户分配内存的个数
|
|
|
+ */
|
|
|
+ public int nMaxNum;
|
|
|
+ public byte[] byReserved = new byte[4];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始查询人脸信息
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_ACCESS_FACEINFO_START_FIND
|
|
|
+ * @see NET_OUT_ACCESS_FACEINFO_START_FIND
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_AccessStartFindFaceInfo(NativeLong lLoginID, NET_IN_ACCESS_FACEINFO_START_FIND pstIn,
|
|
|
+ NET_OUT_ACCESS_FACEINFO_START_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取人脸信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_AccessStartFindFaceInfo返回的查询句柄
|
|
|
+ * @param pstIn 输入参数
|
|
|
+ * @param pstOut 输出参数
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_ACCESS_FACEINFO_DO_FIND
|
|
|
+ * @see NET_OUT_ACCESS_FACEINFO_DO_FIND
|
|
|
+ */
|
|
|
+ boolean CLIENT_AccessDoFindFaceInfo(NativeLong lFindHandle, NET_IN_ACCESS_FACEINFO_DO_FIND pstIn,
|
|
|
+ NET_OUT_ACCESS_FACEINFO_DO_FIND pstOut, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止查询人脸信息
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_AccessStartFindFaceInfo返回的查询句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_AccessStopFindFaceInfo(NativeLong lFindHandle);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸库导入状态
|
|
|
+ */
|
|
|
+ enum EM_IMPORT_FACEDB_STATE {
|
|
|
+ /**
|
|
|
+ * 未知
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_UNKNOWN(0),
|
|
|
+ /**
|
|
|
+ * 导入中
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_ONGING(1),
|
|
|
+ /**
|
|
|
+ * 导入结束, 开始生成数据库
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_END(2),
|
|
|
+ /**
|
|
|
+ * 系统忙,已经有导入任务
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_BUSY(3),
|
|
|
+ /**
|
|
|
+ * 数据包检验失败
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_DATAERROR(4),
|
|
|
+ /**
|
|
|
+ * 数据包非法
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_INVALID(5),
|
|
|
+ /**
|
|
|
+ * 同步成功, 数据库已生成
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_SYNC_SUCCESS(6),
|
|
|
+ /**
|
|
|
+ * 同步失败, 数据库无法生成
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_SYNC_FALIED(7),
|
|
|
+ /**
|
|
|
+ * 数据库已满无法导入
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_DBFULL(8),
|
|
|
+ /**
|
|
|
+ * 存储空间满无法导入
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_SDFULL(9),
|
|
|
+ /**
|
|
|
+ * 导入压缩包密码不对
|
|
|
+ */
|
|
|
+ EM_IMPORT_FACEDB_CIPHER_ERROR(10);
|
|
|
+
|
|
|
+ final int code;
|
|
|
+
|
|
|
+ EM_IMPORT_FACEDB_STATE(int code) {
|
|
|
+ this.code = code;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸对比库进度类型
|
|
|
+ */
|
|
|
+ class EM_FACEDB_PROGRESS_TYPE {
|
|
|
+ /**
|
|
|
+ * 人脸库导入进度
|
|
|
+ */
|
|
|
+ public static final int EM_FACEDB_PROGRESS_IMPORT = 0;
|
|
|
+ /**
|
|
|
+ * 人脸库部署进度
|
|
|
+ */
|
|
|
+ public static final int EM_FACEDB_PROGRESS_DEPLOY = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入人脸库状态信息
|
|
|
+ */
|
|
|
+ class NET_IMPORT_FACEDB_STATE extends Structure {
|
|
|
+ /**
|
|
|
+ * 进度, 百分比
|
|
|
+ */
|
|
|
+ public int nProgress;
|
|
|
+ /**
|
|
|
+ * 进度类型
|
|
|
+ *
|
|
|
+ * @see EM_FACEDB_PROGRESS_TYPE
|
|
|
+ */
|
|
|
+ public int emType;
|
|
|
+ /**
|
|
|
+ * 状态信息
|
|
|
+ *
|
|
|
+ * @see EM_IMPORT_FACEDB_STATE
|
|
|
+ */
|
|
|
+ public int emState;
|
|
|
+ public byte[] byReserved = new byte[512];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入人脸库回调函数原形
|
|
|
+ */
|
|
|
+ interface fImportFaceDbCallBack extends StdCallLibrary.StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lImportFaceDbHandle CLIENT_ImportFaceDB的返回句柄
|
|
|
+ * @param pstFaceDbState 状态信息
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lImportFaceDbHandle, NET_IMPORT_FACEDB_STATE pstFaceDbState, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_ImportFaceDB 接口输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_IMPORT_FACE_DB extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人员组ID
|
|
|
+ */
|
|
|
+ public byte[] szGroupId = new byte[DH_COMMON_STRING_64];
|
|
|
+ /**
|
|
|
+ * 压缩密码
|
|
|
+ */
|
|
|
+ public byte[] szPassWord = new byte[DH_COMMON_STRING_64];
|
|
|
+ /**
|
|
|
+ * 人脸库路径, 由用户指定
|
|
|
+ */
|
|
|
+ public byte[] pszFaceDBPath;
|
|
|
+ /**
|
|
|
+ * 上传状态回调函数
|
|
|
+ */
|
|
|
+ public fImportFaceDbCallBack cbImportState;
|
|
|
+ /**
|
|
|
+ * 用户数据
|
|
|
+ */
|
|
|
+ public NativeLong dwUser;
|
|
|
+
|
|
|
+ public NET_IN_IMPORT_FACE_DB() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_ImportFaceDB 接口输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_IMPORT_FACE_DB extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_IMPORT_FACE_DB() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸库导入接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pInParam 输入参数
|
|
|
+ * @param pOutParam 输出参数
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_IMPORT_FACE_DB
|
|
|
+ * @see NET_OUT_IMPORT_FACE_DB
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_ImportFaceDB(NativeLong lLoginID, NET_IN_IMPORT_FACE_DB pInParam,
|
|
|
+ NET_OUT_IMPORT_FACE_DB pOutParam);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止人脸库导入
|
|
|
+ *
|
|
|
+ * @param lImportFaceDbHandle CLIENT_ImportFaceDB返回的导入句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_StopImportFaceDB(NativeLong lImportFaceDbHandle);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出人脸对比库错误码
|
|
|
+ */
|
|
|
+ enum EM_EXPORT_FACEDB_ERRORCODE {
|
|
|
+ /**
|
|
|
+ * 人脸库导出请求成功
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_REQUEST_SUCCESS(1),
|
|
|
+ /**
|
|
|
+ * 无权限
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_NO_AUTHORITY(2),
|
|
|
+ /**
|
|
|
+ * 文件不存在
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_NO_THIS_FILE(3),
|
|
|
+ /**
|
|
|
+ * 导出结束
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_EXPORT_END(4),
|
|
|
+ /**
|
|
|
+ * 导出中
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_EXPORTING(5),
|
|
|
+ /**
|
|
|
+ * 文件准备完成
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_FILE_READY(8),
|
|
|
+ /**
|
|
|
+ * 文件准备失败
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_FILE_FAILED(9),
|
|
|
+ /**
|
|
|
+ * 人脸库导出请求成功, 需要等待设备准备数据
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_WAIT_FILE(10),
|
|
|
+ /**
|
|
|
+ * 系统忙, 暂时无法导出数据
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_SYSTEM_BUSY(11),
|
|
|
+ /**
|
|
|
+ * 人脸库数据未定义密码, 不允许导出
|
|
|
+ */
|
|
|
+ EM_EXPORT_FACEDB_NO_PASSWORD(12);
|
|
|
+
|
|
|
+ final int code;
|
|
|
+
|
|
|
+ EM_EXPORT_FACEDB_ERRORCODE(int code) {
|
|
|
+ this.code = code;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出人脸库状态信息
|
|
|
+ */
|
|
|
+ class NET_EXPORT_FACEDB_STATE extends Structure {
|
|
|
+ /**
|
|
|
+ * 进度, 百分比
|
|
|
+ */
|
|
|
+ public int nProgress;
|
|
|
+ /**
|
|
|
+ * 错误码
|
|
|
+ *
|
|
|
+ * @see EM_EXPORT_FACEDB_ERRORCODE
|
|
|
+ */
|
|
|
+ public int emErrorCode;
|
|
|
+ /**
|
|
|
+ * 人脸库导出数据
|
|
|
+ */
|
|
|
+ public byte[] pDataBuf;
|
|
|
+ /**
|
|
|
+ * 数据长度
|
|
|
+ */
|
|
|
+ public NativeLong dwDataLen;
|
|
|
+ public byte[] byReserved = new byte[512];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出人脸库回调函数原形
|
|
|
+ */
|
|
|
+ interface fExportStateCallBack extends StdCallLibrary.StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lExportFaceDbHandle CCLIENT_ExportFaceDB的返回句柄
|
|
|
+ * @param pstFaceDbState 状态信息
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lExportFaceDbHandle, NET_EXPORT_FACEDB_STATE pstFaceDbState, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_ExportFaceDB 接口输入参数
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "szGroupId", "szPassWord", "cbExportFaceDbCallBack", "dwUser"})
|
|
|
+ class NET_IN_EXPORT_FACE_DB extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人员组ID
|
|
|
+ */
|
|
|
+ public byte[] szGroupId = new byte[DH_COMMON_STRING_64];
|
|
|
+ /**
|
|
|
+ * 压缩密码
|
|
|
+ */
|
|
|
+ public byte[] szPassWord = new byte[DH_COMMON_STRING_64];
|
|
|
+ /**
|
|
|
+ * 导出人脸库回调函数
|
|
|
+ */
|
|
|
+ public fExportStateCallBack cbExportFaceDbCallBack;
|
|
|
+ /**
|
|
|
+ * 用户数据
|
|
|
+ */
|
|
|
+ public NativeLong dwUser;
|
|
|
+
|
|
|
+ public NET_IN_EXPORT_FACE_DB() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_ExportFaceDB 接口输出参数
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder("dwSize")
|
|
|
+ class NET_OUT_EXPORT_FACE_DB extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_EXPORT_FACE_DB() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸库导出接口
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pInParam 输入参数
|
|
|
+ * @param pOutParam 输出参数
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_EXPORT_FACE_DB
|
|
|
+ * @see NET_OUT_EXPORT_FACE_DB
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_ExportFaceDB(NativeLong lLoginID, NET_IN_EXPORT_FACE_DB pInParam,
|
|
|
+ NET_OUT_EXPORT_FACE_DB pOutParam);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 停止人脸库导出
|
|
|
+ *
|
|
|
+ * @param lExportFaceDbHandle CLIENT_ExportFaceDB返回的导出句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_StopExportFaceDB(NativeLong lExportFaceDbHandle);
|
|
|
+
|
|
|
+ /*******************系统能力查询*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 能力集命令 对应CLIENT_QueryNewSystemInfo
|
|
|
+ */
|
|
|
+ class SystemInfoQueryCommand {
|
|
|
+ /**
|
|
|
+ * 视频分析能力集(对应CFG_CAP_ANALYSE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_VIDEOANALYSE = "devVideoAnalyse.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 视频分析能力集(对应CFG_CAP_ANALYSE_INFO_EX)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_VIDEOANALYSE_EX = "devVideoAnalyse.getCapsEx".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取后端设备的的在线状态(对应CFG_REMOTE_DEVICE_STATUS)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_NETAPP_REMOTEDEVICE = "netApp.getRemoteDeviceStatus".getBytes();
|
|
|
+ /**
|
|
|
+ * 接入设备信息(对应 CFG_PRODUCT_DEFINITION_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_PRODUCTDEFINITION = "magicBox.getProductDefinition".getBytes();
|
|
|
+ /**
|
|
|
+ * 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)兼容老设备
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_DEVICE_CAP_CMD_VIDEOANALYSE = "intelli.getVideoAnalyseDeviceChannels".getBytes();
|
|
|
+ /**
|
|
|
+ * 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_DEVICE_CAP_NEW_CMD_VIDEOANALYSE = "devVideoAnalyse.factory.getCollect".getBytes();
|
|
|
+ /**
|
|
|
+ * 获得CPU个数
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_CPU_COUNT = "magicBox.getCPUCount".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取CPU占用率
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_CPU_USAGE = "magicBox.getCPUUsage".getBytes();
|
|
|
+ /**
|
|
|
+ * 获得内存容量
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_MEMORY_INFO = "magicBox.getMemoryInfo".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取设备类型(对应CFG_DEVICE_CLASS_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_DEVICE_CLASS = "magicBox.getDeviceClass".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取设备状态信息 (对应CFG_CAP_TRAFFIC_DEVICE_STATUS)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_DEVICE_STATE = "trafficSnap.getDeviceStatus".getBytes();
|
|
|
+ /**
|
|
|
+ * 视频输入能力集(对应CFG_CAP_VIDEOINPUT_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_VIDEOINPUT = "devVideoInput.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 得到所有活动的用户信息(对应CFG_ACTIVEUSER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_USERMANAGER_ACTIVEUSER = "userManager.getActiveUserInfoAll".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取视频统计摘要信息(对应CFG_VIDEOSATA_SUMMARY_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_VIDEOSTAT_SUMMARY = "videoStatServer.getSummary".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取视频诊断服务能力(CFG_VIDEODIAGNOSIS_CAPS_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_VIDEODIAGNOSIS_SERVER = "videoDiagnosisServer.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取视频诊断通道数目(CFG_VIDEODIAGNOSIS_GETCOLLECT_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CMD_VIDEODIAGNOSIS_GETCOLLECT = "videoDiagnosisServer.factory.getCollect".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CMD_VIDEODIAGNOSIS_GETSTATE = "videoDiagnosisServer.getState".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取服务器上支持的服务列表(CFG_DEV_SERVICE_LIST)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_SERVICE_LIST = "system.listService".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取服务器报警联动能力集(CFG_CAP_EVENTHANDLER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_EVENTHANDLER = "capsManager.get&EventManagerEventHandler".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取报警能力集(CFG_CAP_ALARM_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_ALARM = "alarm.getAlarmCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取音频分析能力集(CFG_CAP_AUDIO_ANALYSE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_AUDIO_ANALYSE = "devAudioAnalyse.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取主从式跟踪器通道数目(对应结构体CFG_MASTERSLAVETRACKER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CMD_MASTERSLAVE_GETCOLLECT = "masterSlaveTracker.factory.getCollect".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取主从式设备能力集(CFG_CAP_MASTERSLAVE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_MASTERSLAVE = "capsManager.get&MasterSlaveTracker".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取镜头聚焦状态信息 (对应CFG_CAP_FOCUS_STATUS)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_FOCUS_STATE = "devVideoInput.getFocusStatus".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取网络应用能力集(对应CFG_CAP_NETAPP)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_NETAPP = "netApp.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO )
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_PTZ_ENABLE = "ptz.factory.instance".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取录像能力集(CFG_CAP_RECORD_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_RECORD = "recordManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取刻录管理能力集( CFG_CAP_BURN_MANAGER)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_BURN_MANAGER = "BurnManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取云台能力集(CFG_PTZ_PROTOCOL_CAPS_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_PTZ = "ptz.getCurrentProtocolCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取编码能力集(CFG_ENCODECAP)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CMD_ENCODE_GETCAPS = "encode.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 视频输入能力集扩展(对应CFG_CAP_VIDEOINPUT_INFO_EX)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_VIDEOINPUT_EX = "devVideoInput.getCapsEx".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取设备智能分析模式(对应 CFG_ANALYSE_MODE)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_ANALYSE_MODE = "intelli.getCaps.AnalyseMode".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取设备报警联动能力,老协议已废除,新开发请使用该字段(CFG_CAP_EVENTMANAGER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_EVENTMANAGER = "eventManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取文件能力(CFG_CAP_FILEMANAGER)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_FILEMANAGER = "FileManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取日志服务能力(CFG_CAP_LOG)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_LOG = "log.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 扬声器播放能力(CFG_CAP_SPEAK)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_SPEAK = "speak.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 门禁能力(CFG_CAP_ACCESSCONTROL)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_ACCESSCONTROLMANAGER = "accessControlManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取扩展报警能力集, (对应结构体 CFG_CAP_EXALARM_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_EXALARM = "alarm.getExAlarmCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取扩展报警盒能力集, (对应结构体 CFG_CAP_EXALARMBOX_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_EXALARMBOX = "alarm.getExAlarmBoxCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_RECORDFINDER = "RecordFinder.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 模拟量报警输入通道能力(对应结构体 CFG_CAP_ANALOGALARM)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_ANALOGALARM = "AnalogAlarm.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取LowRateWPAN能力(对应的结构体 CFG_CAP_LOWRATEWPAN)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_LOWRATEWPAN = "LowRateWPAN.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取编码自适应编码能力(对应的结构体 CFG_CAP_ADAPT_ENCODE_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_ADAPTENCODE = "encode.getNAACaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取该云台实际能够使用的协议,按介质区分 (对应结构体 CFG_CAP_PTZ_PROTOCOL)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_PTZPROTOCAL = "ptz.getProtocol".getBytes();
|
|
|
+ /**
|
|
|
+ * 查询是否支持视频裁剪能力 (对应结构体 CFG_CAP_MEDIA_CROP)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_MEDIACROP = "encode.getCropCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取OSD叠加能力(对应结构体CFG_CAP_OSDMANAGER_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_OSDMANAGER = "OSDManager.getCaps".getBytes();
|
|
|
+ /**
|
|
|
+ * 获取自定义标题能力集(对应结构体CFG_CAP_CUSTOM_OSD_INFO)
|
|
|
+ */
|
|
|
+ public static final byte[] CFG_CAP_CMD_CUSTOM = "OSDManager.getCustomCaps".getBytes();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新系统能力查询接口,查询系统能力信息
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param szCommand 命令
|
|
|
+ * @param nChannelID 通道ID
|
|
|
+ * @param szOutBuffer 输出
|
|
|
+ * @param dwOutBufferSize 输出大小
|
|
|
+ * @param error 错误码
|
|
|
+ * @param waittime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see SystemInfoQueryCommand
|
|
|
+ */
|
|
|
+ boolean CLIENT_QueryNewSystemInfo(NativeLong lLoginID, byte[] szCommand, int nChannelID, byte[] szOutBuffer,
|
|
|
+ int dwOutBufferSize, int error, int waittime);
|
|
|
+
|
|
|
+ /*******************数据库记录相关操作*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 记录类型
|
|
|
+ */
|
|
|
+ class EM_NET_RECORD_TYPE {
|
|
|
+ public static final int NET_RECORD_UNKNOWN = 0;
|
|
|
+ /**
|
|
|
+ * 交通白名单账户记录
|
|
|
+ * 查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_TRAFFICREDLIST = 1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 交通黑名单账号记录
|
|
|
+ * 查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_TRAFFICBLACKLIST = 2;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刻录案件记录
|
|
|
+ * 查询条件对应 FIND_RECORD_BURN_CASE_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_BURN_CASE_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_BURN_CASE = 3;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESSCTLCARD_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARD 结构体
|
|
|
+ *
|
|
|
+ * @see FIND_RECORD_ACCESSCTLCARD_CONDITION
|
|
|
+ * @see NET_RECORDSET_ACCESS_CTL_CARD
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSCTLCARD = 4;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁密码
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESSCTLPWD_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORDSET_ACCESS_CTL_PWD
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSCTLPWD = 5;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁出入记录(必须同时按卡号和时间段查询,建议用NET_RECORD_ACCESSCTLCARDREC_EX查询)
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSCTLCARDREC = 6;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 假日记录集
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORDSET_HOLIDAY 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSCTLHOLIDAY = 7;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询交通流量记录
|
|
|
+ * 查询条件对应 FIND_RECORD_TRAFFICFLOW_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_TRAFFIC_FLOW_STATE 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_TRAFFICFLOW_STATE = 8;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通话记录
|
|
|
+ * 查询条件对应 FIND_RECORD_VIDEO_TALK_LOG_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_VIDEO_TALK_LOG 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_VIDEOTALKLOG = 9;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 状态记录
|
|
|
+ * 查询条件对应 FIND_RECORD_REGISTER_USER_STATE_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_REGISTER_USER_STATE 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_REGISTERUSERSTATE = 10;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 联系人记录
|
|
|
+ * 查询条件对应 FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_VIDEO_TALK_CONTACT 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_VIDEOTALKCONTACT = 11;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 公告记录
|
|
|
+ * 查询条件对应 FIND_RECORD_ANNOUNCEMENT_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_ANNOUNCEMENT_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ANNOUNCEMENT = 12;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报警记录
|
|
|
+ * 查询条件对应 FIND_RECORD_ALARMRECORD_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_ALARMRECORD_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ALARMRECORD = 13;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下发商品记录
|
|
|
+ * 查询条件对应 FIND_RECORD_COMMODITY_NOTICE_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_COMMODITY_NOTICE 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_COMMODITYNOTICE = 14;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 就诊信息记录
|
|
|
+ * 查询条件对应 FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_HEALTH_CARE_NOTICE 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_HEALTHCARENOTICE = 15;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁出入记录(可选择部分条件查询,建议替代NET_RECORD_ACCESSCTLCARDREC)
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX 结构体
|
|
|
+ * 记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSCTLCARDREC_EX = 16;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * GPS位置信息记录, 只实现import和clear
|
|
|
+ * 记录信息对应 NET_RECORD_GPS_LOCATION_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_GPS_LOCATION = 17;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 公租房租户信息
|
|
|
+ * 查询条件对应 FIND_RECORD_RESIDENT_CONDTION结构体
|
|
|
+ * 记录信息对应 NET_RECORD_RESIDENT_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_RESIDENT = 18;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 监测量数据记录
|
|
|
+ * 查询条件对应 FIND_RECORD_SENSORRECORD_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_SENSOR_RECORD 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_SENSORRECORD = 19;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开门二维码记录集
|
|
|
+ * 记录信息对应 NET_RECORD_ACCESSQRCODE_INFO结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESSQRCODE = 20;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 电子车牌查询
|
|
|
+ * 查询条件对应FIND_RECORD_ELECTRONICSTAG_CONDITION 结构体
|
|
|
+ * 记录信息对应NET_RECORD_ELECTRONICSTAG_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ELECTRONICSTAG = 21;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 蓝牙开门记录集
|
|
|
+ * 查询条件对应 FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_ACCESS_BLUETOOTH_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESS_BLUETOOTH = 22;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁报警记录集
|
|
|
+ * 查询条件对应 FIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION 结构体
|
|
|
+ * 记录信息对应 NET_RECORD_ACCESS_ALARMRECORD_INFO 结构体
|
|
|
+ */
|
|
|
+ public static final int NET_RECORD_ACCESS_ALARMRECORD = 23;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡用户ID最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_USERID_LEN = 32;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡号最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_CARDNO_LEN = 32;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡记录查询条件
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "szCardNo", "szUserID", "bIsValid", "abCardNo", "abUserID", "abIsValid"})
|
|
|
+ class FIND_RECORD_ACCESSCTLCARD_CONDITION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[DH_MAX_CARDNO_LEN];
|
|
|
+ /**
|
|
|
+ * 用户ID
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
+ /**
|
|
|
+ * 是否有效, TRUE:有效,FALSE:无效
|
|
|
+ */
|
|
|
+ public boolean bIsValid;
|
|
|
+ /**
|
|
|
+ * 卡号查询条件是否有效,针对成员 szCardNo
|
|
|
+ */
|
|
|
+ public boolean abCardNo;
|
|
|
+ /**
|
|
|
+ * 用户ID查询条件是否有效,针对成员 szUserID
|
|
|
+ */
|
|
|
+ public boolean abUserID;
|
|
|
+ /**
|
|
|
+ * IsValid查询条件是否有效,针对成员 bIsValid
|
|
|
+ */
|
|
|
+ public boolean abIsValid;
|
|
|
+
|
|
|
+ public FIND_RECORD_ACCESSCTLCARD_CONDITION() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 卡状态
|
|
|
+ */
|
|
|
+ class NET_ACCESSCTLCARD_STATE {
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_UNKNOWN = -1;
|
|
|
+ /**
|
|
|
+ * 正常
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_NORMAL = 0;
|
|
|
+ /**
|
|
|
+ * 挂失
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_LOSE = 0x01;
|
|
|
+ /**
|
|
|
+ * 注销
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_LOGOFF = 0x02;
|
|
|
+ /**
|
|
|
+ * 冻结
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_FREEZE = 0x04;
|
|
|
+ /**
|
|
|
+ * 欠费
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_ARREARAGE = 0x08;
|
|
|
+ /**
|
|
|
+ * 逾期
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_OVERDUE = 0x10;
|
|
|
+ /**
|
|
|
+ * 预欠费(还是可以开门,但有语音提示)
|
|
|
+ */
|
|
|
+ public static final int NET_ACCESSCTLCARD_STATE_PREARREARAGE = 0x20;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大门禁密码长度
|
|
|
+ */
|
|
|
+ int DH_MAX_CARDPWD_LEN = 64;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大有权限门禁数目
|
|
|
+ */
|
|
|
+ int DH_MAX_DOOR_NUM = 32;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大有效时间段数目
|
|
|
+ */
|
|
|
+ int DH_MAX_TIMESECTION_NUM = 32;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡命名最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_CARDNAME_LEN = 64;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大指纹个数
|
|
|
+ */
|
|
|
+ int MAX_FINGERPRINT_NUM = 10;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 指纹数据,只用于下发信息
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "nLength", "nCount", "pPacketData"})
|
|
|
+ class NET_ACCESSCTLCARD_FINGERPRINT_PACKET extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 单个数据包长度,单位字节
|
|
|
+ */
|
|
|
+ public int nLength;
|
|
|
+ /**
|
|
|
+ * 包个数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+ /**
|
|
|
+ * 所有指纹数据包,用户申请内存并填充,长度为 nLength*nCount
|
|
|
+ */
|
|
|
+ public Pointer pPacketData;
|
|
|
+
|
|
|
+ public NET_ACCESSCTLCARD_FINGERPRINT_PACKET() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 指纹数据扩展,可用于下发和获取信息
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"nLength", "nCount", "pPacketData", "nPacketLen", "nRealPacketLen", "nDuressIndex",
|
|
|
+ "byReverseed"})
|
|
|
+ class NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX extends Structure {
|
|
|
+ /**
|
|
|
+ * 单个数据包长度,单位字节
|
|
|
+ */
|
|
|
+ public int nLength;
|
|
|
+ /**
|
|
|
+ * 包个数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+ /**
|
|
|
+ * 所有指纹数据包, 用户申请内存,大小至少为nLength * nCount
|
|
|
+ */
|
|
|
+ public Pointer pPacketData;
|
|
|
+ /**
|
|
|
+ * pPacketData 指向内存区的大小,用户填写
|
|
|
+ */
|
|
|
+ public int nPacketLen;
|
|
|
+ /**
|
|
|
+ * 返回给用户实际指纹总大小
|
|
|
+ */
|
|
|
+ public int nRealPacketLen;
|
|
|
+ /**
|
|
|
+ * 胁迫指纹序号,范围1~nCount
|
|
|
+ */
|
|
|
+ public int nDuressIndex;
|
|
|
+ /**
|
|
|
+ * 保留大小
|
|
|
+ */
|
|
|
+ public byte[] byReverseed = new byte[1020];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸模版最大个数
|
|
|
+ */
|
|
|
+ int MAX_FACE_DATA_NUM = 20;
|
|
|
+ /**
|
|
|
+ * 人脸模版数据最大长度
|
|
|
+ */
|
|
|
+ int MAX_FACE_DATA_LEN = 2048;
|
|
|
+ /**
|
|
|
+ * 反潜路径个数
|
|
|
+ */
|
|
|
+ int MAX_REPEATENTERROUTE_NUM = 12;
|
|
|
+ /**
|
|
|
+ * 最大门数量
|
|
|
+ */
|
|
|
+ int MAX_ACCESSDOOR_NUM = 128;
|
|
|
+ /**
|
|
|
+ * 最大楼层数量
|
|
|
+ */
|
|
|
+ int MAX_ACCESS_FLOOR_NUM = 64;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁卡记录集信息
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "nRecNo", "stuCreateTime", "szCardNo", "szUserID", "emStatus", "emType", "szPsw",
|
|
|
+ "nDoorNum", "sznDoors", "nTimeSectionNum", "sznTimeSectionNo", "nUserTime", "stuValidStartTime",
|
|
|
+ "stuValidEndTime", "bIsValid", "stuFingerPrintInfo", "bFirstEnter", "szCardName", "szVTOPosition",
|
|
|
+ "bHandicap", "bEnableExtended", "stuFingerPrintInfoEx", "nFaceDataNum", "szFaceData", "szDynamicCheckCode",
|
|
|
+ "nRepeatEnterRouteNum", "arRepeatEnterRoute", "nRepeatEnterRouteTimeout", "bNewDoor", "nNewDoorNum",
|
|
|
+ "nNewDoors", "nNewTimeSectionNum", "nNewTimeSectionNo", "szCitizenIDNo", "nSpecialDaysScheduleNum",
|
|
|
+ "arSpecialDaysSchedule", "nUserType", "nFloorNum", "szFloorNo"
|
|
|
+ })
|
|
|
+ class NET_RECORDSET_ACCESS_CTL_CARD extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 记录集编号,只读
|
|
|
+ */
|
|
|
+ public int nRecNo;
|
|
|
+ /**
|
|
|
+ * 创建时间
|
|
|
+ */
|
|
|
+ public NET_TIME stuCreateTime;
|
|
|
+ /**
|
|
|
+ * 卡号
|
|
|
+ */
|
|
|
+ public byte[] szCardNo = new byte[DH_MAX_CARDNO_LEN];
|
|
|
+ /**
|
|
|
+ * 用户ID, 设备暂不支持
|
|
|
+ */
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
/**
|
|
|
- * 赋值为结构体大小,即sizeof(NET_IN_OPERATE_FACERECONGNITIONDB)
|
|
|
+ * 卡状态
|
|
|
+ *
|
|
|
+ * @see NET_ACCESSCTLCARD_STATE
|
|
|
*/
|
|
|
- public int dwSize;
|
|
|
+ public int emStatus;
|
|
|
/**
|
|
|
- * 操作类型
|
|
|
- * <p>EM_OPERATE_FACERECONGNITIONDB_TYPE</p>
|
|
|
+ * 卡类型
|
|
|
+ *
|
|
|
+ * @see NET_ACCESSCTLCARD_TYPE
|
|
|
*/
|
|
|
- public int emOperateType;
|
|
|
+ public int emType;
|
|
|
/**
|
|
|
- * 人员信息
|
|
|
+ * 卡密码
|
|
|
*/
|
|
|
- public FACERECOGNITION_PERSON_INFO stPersonInfo;
|
|
|
+ public byte[] szPsw = new byte[DH_MAX_CARDPWD_LEN];
|
|
|
/**
|
|
|
- * 缓冲地址
|
|
|
+ * 有效的门数目
|
|
|
*/
|
|
|
- public Pointer pBuffer;
|
|
|
+ public int nDoorNum;
|
|
|
/**
|
|
|
- * 缓冲数据长度
|
|
|
+ * 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
|
|
|
*/
|
|
|
- public int nBufferLen;
|
|
|
-
|
|
|
- public NET_IN_OPERATE_FACERECONGNITIONDB() {
|
|
|
- this.dwSize = this.size();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("dwSize", "emOperateType", "nBufferLen", "pBuffer",
|
|
|
- "stPersonInfo"));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 人员信息
|
|
|
- */
|
|
|
- class FACERECOGNITION_PERSON_INFO extends Structure {
|
|
|
+ public int[] sznDoors = new int[DH_MAX_DOOR_NUM];
|
|
|
/**
|
|
|
- * 姓名
|
|
|
- *
|
|
|
- * @deprecated
|
|
|
+ * 有效的的开门时间段数目
|
|
|
*/
|
|
|
- public byte[] szPersonName = new byte[DH_MAX_NAME_LEN];
|
|
|
+ public int nTimeSectionNum;
|
|
|
/**
|
|
|
- * 出生年,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ * 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
|
|
|
*/
|
|
|
- public short wYear;
|
|
|
+ public int[] sznTimeSectionNo = new int[DH_MAX_TIMESECTION_NUM];
|
|
|
/**
|
|
|
- * 出生月,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ * 使用次数,仅当来宾卡时有效
|
|
|
*/
|
|
|
- public byte byMonth;
|
|
|
+ public int nUserTime;
|
|
|
/**
|
|
|
- * 出生日,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ * 开始有效期, 设备暂不支持时分秒
|
|
|
*/
|
|
|
- public byte byDay;
|
|
|
+ public NET_TIME stuValidStartTime;
|
|
|
/**
|
|
|
- * 人员唯一标示(身份证号码,工号,或其他编号)
|
|
|
+ * 结束有效期, 设备暂不支持时分秒
|
|
|
*/
|
|
|
- public byte[] szID = new byte[DH_MAX_PERSON_ID_LEN];
|
|
|
+ public NET_TIME stuValidEndTime;
|
|
|
/**
|
|
|
- * 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ * 是否有效,TRUE有效;FALSE无效
|
|
|
*/
|
|
|
- public byte bImportantRank;
|
|
|
+ public boolean bIsValid;
|
|
|
/**
|
|
|
- * 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ * 下发指纹数据信息,仅为兼容性保留,请使用 stuFingerPrintInfoEx
|
|
|
*/
|
|
|
- public byte bySex;
|
|
|
+ public NET_ACCESSCTLCARD_FINGERPRINT_PACKET stuFingerPrintInfo;
|
|
|
/**
|
|
|
- * 图片张数
|
|
|
+ * 是否拥有首卡权限
|
|
|
*/
|
|
|
- public short wFacePicNum;
|
|
|
+ public boolean bFirstEnter;
|
|
|
/**
|
|
|
- * 当前人员对应的图片信息
|
|
|
+ * 卡命名
|
|
|
*/
|
|
|
- public DH_PIC_INFO[] szFacePicInfo = (DH_PIC_INFO[]) new DH_PIC_INFO().toArray(DH_MAX_PERSON_IMAGE_NUM);
|
|
|
+ public byte[] szCardName = new byte[DH_MAX_CARDNAME_LEN];
|
|
|
/**
|
|
|
- * 人员类型
|
|
|
- *
|
|
|
- * @see PersonType
|
|
|
+ * 门口机关联位置
|
|
|
*/
|
|
|
- public byte byType;
|
|
|
+ public byte[] szVTOPosition = new byte[DH_COMMON_STRING_64];
|
|
|
/**
|
|
|
- * 证件类型
|
|
|
- *
|
|
|
- * @see CertificateType
|
|
|
+ * 是否为残疾人卡
|
|
|
*/
|
|
|
- public byte byIDType;
|
|
|
+ public boolean bHandicap;
|
|
|
/**
|
|
|
- * 字节对齐
|
|
|
+ * 启用成员 stuFingerPrintInfoEx
|
|
|
*/
|
|
|
- public byte[] bReserved1 = new byte[2];
|
|
|
+ public boolean bEnableExtended;
|
|
|
/**
|
|
|
- * 省份
|
|
|
+ * 指纹数据信息
|
|
|
*/
|
|
|
- public byte[] szProvince = new byte[DH_MAX_PROVINCE_NAME_LEN];
|
|
|
+ public NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX stuFingerPrintInfoEx;
|
|
|
/**
|
|
|
- * 城市
|
|
|
+ * 人脸数据个数不超过20
|
|
|
*/
|
|
|
- public byte[] szCity = new byte[DH_MAX_CITY_NAME_LEN];
|
|
|
+ public int nFaceDataNum;
|
|
|
/**
|
|
|
- * 姓名(因存在姓名过长,16字节无法存放问题,故增加此参数)
|
|
|
+ * 人脸模版数据
|
|
|
*/
|
|
|
- public byte[] szPersonNameEx = new byte[DH_MAX_PERSON_NAME_LEN];
|
|
|
+ public byte[] szFaceData = new byte[MAX_FACE_DATA_NUM * MAX_FACE_DATA_LEN];
|
|
|
/**
|
|
|
- * 保留字段
|
|
|
+ * 动态校验码
|
|
|
+ * <p>
|
|
|
+ * VTO等设备会保存此校验码,以后每次刷卡都以一定的算法生成新校验码并写入IC卡中,同时更新VTO设备的校验码,只有卡号和此校验码同时验证通过时才可开门。
|
|
|
+ * 缺点:目前方案只支持一卡刷一个设备。
|
|
|
+ * </p>
|
|
|
*/
|
|
|
- public byte[] bReserved = new byte[60];
|
|
|
-
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("bImportantRank", "bReserved", "bReserved1",
|
|
|
- "byDay", "byIDType", "byMonth", "bySex", "byType", "szCity", "szFacePicInfo", "szID",
|
|
|
- "szPersonName", "szPersonNameEx", "szProvince", "wFacePicNum", "wYear"));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 图片文件信息
|
|
|
- */
|
|
|
- class DH_PIC_INFO extends Structure {
|
|
|
+ public byte[] szDynamicCheckCode = new byte[MAX_COMMON_STRING_16];
|
|
|
/**
|
|
|
- * 文件在二进制数据块中的偏移位置, 单位:字节
|
|
|
+ * 反潜路径个数
|
|
|
*/
|
|
|
- public int dwOffSet;
|
|
|
+ public int nRepeatEnterRouteNum;
|
|
|
/**
|
|
|
- * 文件大小, 单位:字节
|
|
|
+ * 反潜路径
|
|
|
*/
|
|
|
- public int dwFileLenth;
|
|
|
+ public int[] arRepeatEnterRoute = new int[MAX_REPEATENTERROUTE_NUM];
|
|
|
/**
|
|
|
- * 图片宽度, 单位:像素
|
|
|
+ * 反潜超时时间
|
|
|
*/
|
|
|
- public short wWidth;
|
|
|
+ public int nRepeatEnterRouteTimeout;
|
|
|
/**
|
|
|
- * 图片高度, 单位:像素
|
|
|
+ * 是否启动新开门授权字段,TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限
|
|
|
*/
|
|
|
- public short wHeight;
|
|
|
+ public boolean bNewDoor;
|
|
|
/**
|
|
|
- * 保留字节
|
|
|
+ * 有效的门数目
|
|
|
+ */
|
|
|
+ public int nNewDoorNum;
|
|
|
+ /**
|
|
|
+ * 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
|
|
|
+ */
|
|
|
+ public int[] nNewDoors = new int[MAX_ACCESSDOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 有效的的开门时间段数目
|
|
|
+ */
|
|
|
+ public int nNewTimeSectionNum;
|
|
|
+ /**
|
|
|
+ * 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
|
|
|
+ */
|
|
|
+ public int[] nNewTimeSectionNo = new int[MAX_ACCESSDOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 身份证号码
|
|
|
+ */
|
|
|
+ public byte[] szCitizenIDNo = new byte[MAX_COMMON_STRING_32];
|
|
|
+ /**
|
|
|
+ * 假日计划表示数量
|
|
|
+ */
|
|
|
+ public int nSpecialDaysScheduleNum;
|
|
|
+ /**
|
|
|
+ * 假日计划标识
|
|
|
+ */
|
|
|
+ public int[] arSpecialDaysSchedule = new int[MAX_ACCESSDOOR_NUM];
|
|
|
+ /**
|
|
|
+ * 用户类型, 0 普通用户, 1 黑名单用户
|
|
|
+ */
|
|
|
+ public int nUserType;
|
|
|
+ /**
|
|
|
+ * 有效的楼层数量
|
|
|
+ */
|
|
|
+ public int nFloorNum;
|
|
|
+ /**
|
|
|
+ * 楼层号
|
|
|
*/
|
|
|
- public byte[] bReserved = new byte[7];
|
|
|
+ public byte[] szFloorNo = new byte[MAX_ACCESS_FLOOR_NUM * DH_COMMON_STRING_4];
|
|
|
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("bReserved", "dwFileLenth", "dwOffSet", "wHeight", "wWidth"));
|
|
|
+ public NET_RECORDSET_ACCESS_CTL_CARD() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_OperateFaceRecognitionDB接口输出参数
|
|
|
+ * CLIENT_FindRecord接口输入参数
|
|
|
*/
|
|
|
- class NET_OUT_OPERATE_FACERECONGNITIONDB extends Structure {
|
|
|
+ @Structure.FieldOrder({"dwSize", "emType", "pQueryCondition"})
|
|
|
+ class NET_IN_FIND_RECORD_PARAM extends Structure {
|
|
|
public int dwSize;
|
|
|
+ /**
|
|
|
+ * 待查询记录类型
|
|
|
+ *
|
|
|
+ * @see EM_NET_RECORD_TYPE
|
|
|
+ */
|
|
|
+ public int emType;
|
|
|
+ /**
|
|
|
+ * 查询类型对应的查询条件
|
|
|
+ * 由用户申请内存,根据查询记录类型,找到查询条件对应的结构体,进而确定内存大小
|
|
|
+ */
|
|
|
+ public Pointer pQueryCondition;
|
|
|
|
|
|
- public NET_OUT_OPERATE_FACERECONGNITIONDB() {
|
|
|
- this.dwSize = this.size();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected List<String> getFieldOrder() {
|
|
|
- return Collections.unmodifiableList(Arrays.asList("dwSize"));
|
|
|
+ public NET_IN_FIND_RECORD_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_DoFindFaceRecognition 接口输入参数
|
|
|
+ * LIENT_FindRecord接口输出参数
|
|
|
*/
|
|
|
- class NET_IN_DOFIND_FACERECONGNITION extends Structure {
|
|
|
+ @Structure.FieldOrder({"dwSize", "lFindeHandle"})
|
|
|
+ class NET_OUT_FIND_RECORD_PARAM extends Structure {
|
|
|
public int dwSize;
|
|
|
/**
|
|
|
- * 查询句柄
|
|
|
- */
|
|
|
- public LLong lFindHandle;
|
|
|
- /**
|
|
|
- * 查询起始序号
|
|
|
+ * 查询记录句柄,唯一标识某次查询
|
|
|
*/
|
|
|
- public int nBeginNum;
|
|
|
- /**
|
|
|
- * 当前想查询的记录条数
|
|
|
- */
|
|
|
- public int nCount;
|
|
|
+ public LLong lFindeHandle;
|
|
|
|
|
|
- public NET_IN_DOFIND_FACERECONGNITION() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_OUT_FIND_RECORD_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_DoFindFaceRecognition接口输出参数
|
|
|
+ * 按查询条件查询记录,pInParam与pOutParam内存由用户申请释放
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pInParam 输入参数
|
|
|
+ * @param pOutParam 输出参数
|
|
|
+ * @param waittime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_FIND_RECORD_PARAM
|
|
|
+ * @see NET_OUT_FIND_RECORD_PARAM
|
|
|
+ */
|
|
|
+ boolean CLIENT_FindRecord(NativeLong lLoginID, NET_IN_FIND_RECORD_PARAM pInParam,
|
|
|
+ NET_OUT_FIND_RECORD_PARAM pOutParam, int waittime);
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_FindNextRecord接口输入参数
|
|
|
*/
|
|
|
- class NET_OUT_DOFIND_FACERECONGNITION extends Structure {
|
|
|
+ @Structure.FieldOrder({"dwSize", "lFindeHandle", "nFileCount"})
|
|
|
+ class NET_IN_FIND_NEXT_RECORD_PARAM extends Structure {
|
|
|
public int dwSize;
|
|
|
/**
|
|
|
- * 实际返回的候选信息结构体个数
|
|
|
- */
|
|
|
- public int nCadidateNum;
|
|
|
- /**
|
|
|
- * 候选信息数组
|
|
|
- */
|
|
|
- public CANDIDATE_INFO[] stCadidateInfo = (CANDIDATE_INFO[]) new CANDIDATE_INFO().toArray(MAX_FIND_COUNT);
|
|
|
- /**
|
|
|
- * 缓冲地址
|
|
|
+ * 查询句柄,由CLIENT_FindRecord输出
|
|
|
*/
|
|
|
- public Pointer pBuffer;
|
|
|
+ public LLong lFindeHandle;
|
|
|
/**
|
|
|
- * 缓冲数据长度
|
|
|
+ * 当前想查询的记录条数
|
|
|
*/
|
|
|
- public int nBufferLen;
|
|
|
+ public int nFileCount;
|
|
|
|
|
|
- public NET_OUT_DOFIND_FACERECONGNITION() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_IN_FIND_NEXT_RECORD_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 候选人员信息
|
|
|
+ * CLIENT_FindNextRecord接口输出参数
|
|
|
*/
|
|
|
- class CANDIDATE_INFO extends Structure {
|
|
|
- /**
|
|
|
- * 人员信息
|
|
|
- */
|
|
|
- public FACERECOGNITION_PERSON_INFO stPersonInfo;
|
|
|
- /**
|
|
|
- * 和查询图片的相似度,百分比表示,1~100
|
|
|
- */
|
|
|
- public byte bySimilarity;
|
|
|
+ @Structure.FieldOrder({"dwSize", "pRecordList", "nMaxRecordNum", "nRetRecordNum"})
|
|
|
+ class NET_OUT_FIND_NEXT_RECORD_PARAM extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 人员所属数据库范围
|
|
|
+ * 记录列表,用户分配内存,根据NET_IN_FIND_RECORD_PARAM中的查询类型EM_NET_RECORD_TYPE,确定对应结构体,进入确定内存大小
|
|
|
*
|
|
|
- * @see FaceDbType
|
|
|
- */
|
|
|
- public byte byRange;
|
|
|
- public byte[] byReserved1 = new byte[2];
|
|
|
- /**
|
|
|
- * 当byRange为历史数据库时有效,表示查询人员出现的时间
|
|
|
+ * @see EM_NET_RECORD_TYPE
|
|
|
*/
|
|
|
- public NET_TIME stTime;
|
|
|
+ public Pointer pRecordList;
|
|
|
/**
|
|
|
- * 当byRange为历史数据库时有效,表示查询人员出现的地点
|
|
|
+ * 最大查询列表记录数
|
|
|
*/
|
|
|
- public byte[] szAddress = new byte[MAX_PATH];
|
|
|
+ public int nMaxRecordNum;
|
|
|
/**
|
|
|
- * 保留字节
|
|
|
+ * 查询到的记录条数,当查询到的条数小于想查询的条数时,查询结束
|
|
|
*/
|
|
|
- public byte[] byReserved = new byte[128];
|
|
|
+ public int nRetRecordNum;
|
|
|
+
|
|
|
+ public NET_OUT_FIND_NEXT_RECORD_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 时间
|
|
|
+ * 查找记录:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值<nFilecount则相应时间段内的文件查询完毕,pInParam与pOutParam内存由用户申请释放
|
|
|
+ *
|
|
|
+ * @param pInParam 输入参数
|
|
|
+ * @param pOutParam 输出参数
|
|
|
+ * @param waittime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_FIND_NEXT_RECORD_PARAM
|
|
|
+ * @see NET_OUT_FIND_NEXT_RECORD_PARAM
|
|
|
*/
|
|
|
- class NET_TIME extends Structure {
|
|
|
- /**
|
|
|
- * 年
|
|
|
- */
|
|
|
- public int dwYear;
|
|
|
- /**
|
|
|
- * 月
|
|
|
- */
|
|
|
- public int dwMonth;
|
|
|
- /**
|
|
|
- * 日
|
|
|
- */
|
|
|
- public int dwDay;
|
|
|
- /**
|
|
|
- * 时
|
|
|
- */
|
|
|
- public int dwHour;
|
|
|
- /**
|
|
|
- * 分
|
|
|
- */
|
|
|
- public int dwMinute;
|
|
|
+ int CLIENT_FindNextRecord(NET_IN_FIND_NEXT_RECORD_PARAM pInParam,
|
|
|
+ NET_OUT_FIND_NEXT_RECORD_PARAM pOutParam, int waittime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_QueryRecordCount接口输入参数
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "lFindeHandle"})
|
|
|
+ class NET_IN_QUEYT_RECORD_COUNT_PARAM extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 秒
|
|
|
+ * 查询句柄
|
|
|
*/
|
|
|
- public int dwSecond;
|
|
|
+ public LLong lFindeHandle;
|
|
|
|
|
|
- public NET_TIME() {
|
|
|
- this.dwYear = 0;
|
|
|
- this.dwMonth = 0;
|
|
|
- this.dwDay = 0;
|
|
|
- this.dwHour = 0;
|
|
|
- this.dwMinute = 0;
|
|
|
- this.dwSecond = 0;
|
|
|
+ public NET_IN_QUEYT_RECORD_COUNT_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- public void setTime(int year, int month, int day, int hour, int minute, int second) {
|
|
|
- this.dwYear = year;
|
|
|
- this.dwMonth = month;
|
|
|
- this.dwDay = day;
|
|
|
- this.dwHour = hour;
|
|
|
- this.dwMinute = minute;
|
|
|
- this.dwSecond = second;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * CLIENT_QueryRecordCount接口输出参数
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "nRecordCount"})
|
|
|
+ class NET_OUT_QUEYT_RECORD_COUNT_PARAM extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 设备返回的记录条数
|
|
|
+ */
|
|
|
+ public int nRecordCount;
|
|
|
|
|
|
- public NET_TIME(NET_TIME other) {
|
|
|
- this.dwYear = other.dwYear;
|
|
|
- this.dwMonth = other.dwMonth;
|
|
|
- this.dwDay = other.dwDay;
|
|
|
- this.dwHour = other.dwHour;
|
|
|
- this.dwMinute = other.dwMinute;
|
|
|
- this.dwSecond = other.dwSecond;
|
|
|
+ public NET_OUT_QUEYT_RECORD_COUNT_PARAM() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- public String toStringTime() {
|
|
|
- return String.format("%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 查找记录条数
|
|
|
+ *
|
|
|
+ * @param pInParam 输入参数
|
|
|
+ * @param pOutParam 输出参数
|
|
|
+ * @param waittime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_IN_QUEYT_RECORD_COUNT_PARAM
|
|
|
+ * @see NET_OUT_QUEYT_RECORD_COUNT_PARAM
|
|
|
+ */
|
|
|
+ boolean CLIENT_QueryRecordCount(NET_IN_QUEYT_RECORD_COUNT_PARAM pInParam,
|
|
|
+ NET_OUT_QUEYT_RECORD_COUNT_PARAM pOutParam, int waittime);
|
|
|
|
|
|
- @Override
|
|
|
- public String toString() {
|
|
|
- return String.format("%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
|
|
|
- }
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 结束记录查找
|
|
|
+ *
|
|
|
+ * @param lFindHandle 查询句柄
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_FindRecordClose(NativeLong lFindHandle);
|
|
|
+
|
|
|
+ /*******************人脸采集*******************/
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_StartFindFaceRecognition接口输入参数
|
|
|
+ * CLIENT_AttachPersonInfoCollect 入参
|
|
|
*/
|
|
|
- class NET_IN_STARTFIND_FACERECONGNITION extends Structure {
|
|
|
+ @Structure.FieldOrder({"dwSize", "dwWaitTime", "cbNotifyPersonInfo", "dwUser"})
|
|
|
+ class NET_IN_ATTACH_PERSONINFOCOLLECT extends Structure {
|
|
|
public int dwSize;
|
|
|
/**
|
|
|
- * 人员信息查询条件是否有效,取值0或1
|
|
|
- */
|
|
|
- public int bPersonEnable;
|
|
|
- /**
|
|
|
- * 人员信息查询条件
|
|
|
+ * 接口超时等待时间
|
|
|
*/
|
|
|
- public FACERECOGNITION_PERSON_INFO stPerson;
|
|
|
+ public int dwWaitTime;
|
|
|
/**
|
|
|
- * 人脸匹配选项
|
|
|
+ * 回调函数
|
|
|
*/
|
|
|
- public NET_FACE_MATCH_OPTIONS stMatchOptions;
|
|
|
+ public fNotifyPersonInfo cbNotifyPersonInfo;
|
|
|
/**
|
|
|
- * 查询过滤条件
|
|
|
+ * 用户自定义参数
|
|
|
*/
|
|
|
- public NET_FACE_FILTER_CONDTION stFilterInfo;
|
|
|
- /**
|
|
|
- * 缓冲地址
|
|
|
- */
|
|
|
- public Pointer pBuffer;
|
|
|
- /**
|
|
|
- * 缓冲数据长度
|
|
|
- */
|
|
|
- public int nBufferLen;
|
|
|
+ public LLong dwUser;
|
|
|
|
|
|
- public NET_IN_STARTFIND_FACERECONGNITION() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_IN_ATTACH_PERSONINFOCOLLECT() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 人脸匹配选项
|
|
|
+ * 指纹信息
|
|
|
*/
|
|
|
- class NET_FACE_MATCH_OPTIONS extends Structure {
|
|
|
- public int dwSize;
|
|
|
+ @Structure.FieldOrder({"nIndex", "szFingerprintData", "bReserved"})
|
|
|
+ class NET_CB_FINGERPRINT_INFO extends Structure {
|
|
|
/**
|
|
|
- * 人员重要等级 1~10,数值越高越重要,(查询重要等级大于等于此等级的人员)
|
|
|
+ * 指纹索引号,从左手小指依次到右手小指为0到9
|
|
|
*/
|
|
|
- public int nMatchImportant;
|
|
|
+ public int nIndex;
|
|
|
/**
|
|
|
- * 人脸比对模式
|
|
|
- *
|
|
|
- * @see FaceCompareMode
|
|
|
+ * 指纹数据,经过Base64后的字符串
|
|
|
*/
|
|
|
- public int emMode;
|
|
|
+ public byte[] szFingerprintData = new byte[DH_COMMON_STRING_2048];
|
|
|
+ public byte[] bReserved = new byte[256];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 回调函数中人脸信息
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"nSID", "nPicLength", "szUserID", "nRetFaceDataNum", "szFaceData", "szPassword",
|
|
|
+ "szCardNo", "szCardName", "nFingerPrintNum", "stuFingerPrintInfo", "bReserved"})
|
|
|
+ class NET_CB_PERSON_INFO extends Structure {
|
|
|
/**
|
|
|
- * 人脸区域个数
|
|
|
+ * 服务器订阅ID号
|
|
|
*/
|
|
|
- public int nAreaNum;
|
|
|
+ public int nSID;
|
|
|
/**
|
|
|
- * 人脸区域组合, emMode为NET_FACE_COMPARE_MODE_AREA时有效, 数组元素取FaceArea中的值
|
|
|
- *
|
|
|
- * @see FaceAreaType
|
|
|
+ * 采集的人员图片长度
|
|
|
*/
|
|
|
- public int[] szAreas = new int[MAX_FACE_AREA_NUM];
|
|
|
+ public int nPicLength;
|
|
|
/**
|
|
|
- * 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1 表示检测速度优先,最大值为10表示检测精度优先。 暂时只对人脸检测有效)
|
|
|
+ * 用户ID
|
|
|
*/
|
|
|
- public int nAccuracy;
|
|
|
+ public byte[] szUserID = new byte[DH_MAX_USERID_LEN];
|
|
|
/**
|
|
|
- * 相似度(必须大于该相识度才报告;百分比表示,1~100)
|
|
|
+ * 返回的人脸模版数据个数
|
|
|
*/
|
|
|
- public int nSimilarity;
|
|
|
+ public int nRetFaceDataNum;
|
|
|
/**
|
|
|
- * 报告的最大候选个数(根据相似度进行排序,取相似度最大的候选人数报告)
|
|
|
+ * 人脸数据
|
|
|
*/
|
|
|
- public int nMaxCandidate;
|
|
|
-
|
|
|
- public NET_FACE_MATCH_OPTIONS() {
|
|
|
- this.dwSize = this.size();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 查询过滤条件
|
|
|
- */
|
|
|
- class NET_FACE_FILTER_CONDTION extends Structure {
|
|
|
- public int dwSize;
|
|
|
+ public byte[] szFaceData = new byte[MAX_FACE_DATA_NUM * MAX_FACE_DATA_LEN];
|
|
|
/**
|
|
|
- * 开始时间
|
|
|
+ * 卡密码
|
|
|
*/
|
|
|
- public NET_TIME stStartTime;
|
|
|
+ public byte[] szPassword = new byte[DH_COMMON_STRING_64];
|
|
|
/**
|
|
|
- * 结束时间
|
|
|
+ * 卡号
|
|
|
*/
|
|
|
- public NET_TIME stEndTime;
|
|
|
+ public byte[] szCardNo = new byte[DH_MAX_CARDNO_LEN];
|
|
|
/**
|
|
|
- * 地点,支持模糊匹配
|
|
|
+ * 卡命名
|
|
|
*/
|
|
|
- public byte[] szMachineAddress = new byte[MAX_PATH];
|
|
|
+ public byte[] szCardName = new byte[DH_COMMON_STRING_32];
|
|
|
/**
|
|
|
- * 实际数据库个数
|
|
|
+ * 返回指纹个数
|
|
|
*/
|
|
|
- public int nRangeNum;
|
|
|
+ public int nFingerPrintNum;
|
|
|
/**
|
|
|
- * 待查询数据库类型
|
|
|
- *
|
|
|
- * @see FaceDbType
|
|
|
+ * 指纹信息
|
|
|
*/
|
|
|
- public byte[] szRange = new byte[MAX_FACE_DB_NUM];
|
|
|
+ public NET_CB_FINGERPRINT_INFO[] stuFingerPrintInfo = new NET_CB_FINGERPRINT_INFO[MAX_FINGERPRINT_NUM];
|
|
|
+ public byte[] bReserved = new byte[2048];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸信息采集回调函数
|
|
|
+ */
|
|
|
+ interface fNotifyPersonInfo extends StdCallLibrary.StdCallCallback {
|
|
|
/**
|
|
|
- * 待查询人脸类型
|
|
|
+ * 执行回调函数
|
|
|
*
|
|
|
- * @see FaceRecognitionFaceType
|
|
|
+ * @param lLoginID
|
|
|
+ * @param lPersonHandle
|
|
|
+ * @param pstuPersonInfo
|
|
|
+ * @param pBuffer
|
|
|
+ * @param dwBufSize
|
|
|
+ * @param dwUser
|
|
|
+ * @param reserved
|
|
|
*/
|
|
|
- public int emFaceType;
|
|
|
+ void invoke(NativeLong lLoginID, NativeLong lPersonHandle, NET_CB_PERSON_INFO pstuPersonInfo,
|
|
|
+ String pBuffer, int dwBufSize, NativeLong dwUser, Pointer reserved);
|
|
|
+ }
|
|
|
|
|
|
- public NET_FACE_FILTER_CONDTION() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ /**
|
|
|
+ * CLIENT_AttachPersonInfoCollect 出参
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder("dwSize")
|
|
|
+ class NET_OUT_ATTACH_PERSONINFOCOLLECT extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_ATTACH_PERSONINFOCOLLECT() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_StartFindFaceRecognition接口输出参数
|
|
|
+ * 订阅人脸信息采集
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param pstuInParam 输入参数,带有回调函数等信息
|
|
|
+ * @param pstuOutParam 输出参数
|
|
|
+ * @return 订阅句柄,用于detach操作
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_AttachPersonInfoCollect(NativeLong lLoginID, NET_IN_ATTACH_PERSONINFOCOLLECT pstuInParam,
|
|
|
+ NET_OUT_ATTACH_PERSONINFOCOLLECT pstuOutParam);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DetachPersonInfoColloect 入参
|
|
|
*/
|
|
|
- class NET_OUT_STARTFIND_FACERECONGNITION extends Structure {
|
|
|
+ @Structure.FieldOrder({"dwSize", "dwWaitTime", "lPersonHandle"})
|
|
|
+ class NET_IN_DETACH_PERSONINFOCOLLECT extends Structure {
|
|
|
public int dwSize;
|
|
|
/**
|
|
|
- * 返回的符合查询条件的记录个数
|
|
|
+ * 接口超时等待时间
|
|
|
*/
|
|
|
- public int nTotalCount;
|
|
|
+ public int dwWaitTime;
|
|
|
/**
|
|
|
- * 查询句柄
|
|
|
+ * CLIENT_AttachPersonInfoCollect 返回的句柄
|
|
|
*/
|
|
|
- public LLong lFindHandle;
|
|
|
+ public NativeLong lPersonHandle;
|
|
|
|
|
|
- public NET_OUT_STARTFIND_FACERECONGNITION() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_IN_DETACH_PERSONINFOCOLLECT() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_DetectFace接口输入参数
|
|
|
+ * CLIENT_DetachPersonInfoColloect 出参
|
|
|
*/
|
|
|
- class NET_IN_DETECT_FACE extends Structure {
|
|
|
+ @Structure.FieldOrder("dwSize")
|
|
|
+ class NET_OUT_DETACH_PERSONINFOCOLLECT extends Structure {
|
|
|
public int dwSize;
|
|
|
- /**
|
|
|
- * 大图信息
|
|
|
- */
|
|
|
- public DH_PIC_INFO stPicInfo;
|
|
|
- /**
|
|
|
- * 缓冲地址
|
|
|
- */
|
|
|
- public Pointer pBuffer;
|
|
|
- /**
|
|
|
- * 缓冲数据长度
|
|
|
- */
|
|
|
- public int nBufferLen;
|
|
|
|
|
|
- public NET_IN_DETECT_FACE() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_OUT_DETACH_PERSONINFOCOLLECT() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * CLIENT_DetectFace接口输出参数
|
|
|
+ * 取消订阅人脸信息采集
|
|
|
+ *
|
|
|
+ * @param pstuInParam 取消订阅输入参数,其中lPersonHandle为CLIENT_AttachPersonInfoCollect返回的句柄
|
|
|
+ * @param pstuOutParam
|
|
|
+ * @return TRUE 成功FALSE 失败
|
|
|
*/
|
|
|
- class NET_OUT_DETECT_FACE extends Structure {
|
|
|
- public int dwSize;
|
|
|
+ boolean CLIENT_DetachPersonInfoColloect(NET_IN_DETACH_PERSONINFOCOLLECT pstuInParam,
|
|
|
+ NET_OUT_DETACH_PERSONINFOCOLLECT pstuOutParam);
|
|
|
+
|
|
|
+ /*******************门禁卡管理*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量下发门禁控制卡
|
|
|
+ *
|
|
|
+ * @param lLoginID 登录句柄
|
|
|
+ * @param nInsertCount 下发卡片数量,不大于 20
|
|
|
+ * @param pInsertCards 需要下发的卡片信息,指向用户分配并填充的 NET_RECORDSET_ACCESS_CTL_CARD 结构体缓存,个数为 nInsertCount
|
|
|
+ * @param pRecNo 下发后的记录编号,与 pInsertCards 一一对应,-1 表示该项插入失败,指向用户分配的 int 缓存,个数为 nInsertCount
|
|
|
+ * @param reserved
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see NET_RECORDSET_ACCESS_CTL_CARD
|
|
|
+ */
|
|
|
+ boolean CLIENT_InsertAccessControlCards(NativeLong lLoginID, int nInsertCount,
|
|
|
+ NET_RECORDSET_ACCESS_CTL_CARD[] pInsertCards, int[] pRecNo,
|
|
|
+ Pointer reserved, int nWaitTime);
|
|
|
+
|
|
|
+ /*******************设备管理*******************/
|
|
|
+ /**
|
|
|
+ * 获取前端设备的当前工作状态
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param nType 查询信息类型
|
|
|
+ * @param pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同,返回数据的数据结构也不同
|
|
|
+ * @param nBufLen 缓存长度,单位字节
|
|
|
+ * @param pRetLen 输出参数,实际返回的数据长度,单位字节
|
|
|
+ * @param waittime 查询状态等待时间,默认1000ms
|
|
|
+ * @return 成功返回TRUE,失败返回FALSE
|
|
|
+ * @see DeviceStateType
|
|
|
+ */
|
|
|
+ boolean CLIENT_QueryDevState(NativeLong lLoginID, int nType, Pointer pBuf, int nBufLen, IntByReference pRetLen,
|
|
|
+ int waittime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁状态类型
|
|
|
+ */
|
|
|
+ class EM_NET_DOOR_STATUS_TYPE {
|
|
|
+ public static final int EM_NET_DOOR_STATUS_UNKNOWN = 0;
|
|
|
/**
|
|
|
- * 检测出的人脸图片信息,由用户申请空间
|
|
|
+ * 门打开
|
|
|
*/
|
|
|
- public Pointer pPicInfo;
|
|
|
+ public static final int EM_NET_DOOR_STATUS_OPEN = 1;
|
|
|
/**
|
|
|
- * 最大人脸图片信息个数
|
|
|
+ * 门关闭
|
|
|
*/
|
|
|
- public int nMaxPicNum;
|
|
|
+ public static final int EM_NET_DOOR_STATUS_CLOSE = 2;
|
|
|
/**
|
|
|
- * 实际返回的人脸图片个数
|
|
|
+ * 门异常打开
|
|
|
*/
|
|
|
- public int nRetPicNum;
|
|
|
+ public static final int EM_NET_DOOR_STATUS_BREAK = 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 门禁状态信息(CLIENT_QueryDevState 接口输入参数)
|
|
|
+ */
|
|
|
+ @Structure.FieldOrder({"dwSize", "nChannel", "emStateType"})
|
|
|
+ class NET_DOOR_STATUS_INFO extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * 缓冲地址,由用户申请空间,存放检测出的人脸图片数据
|
|
|
+ * 门禁通道号
|
|
|
*/
|
|
|
- public Pointer pBuffer;
|
|
|
+ public int nChannel;
|
|
|
/**
|
|
|
- * 缓冲数据长度
|
|
|
+ * 门禁状态信息
|
|
|
+ *
|
|
|
+ * @see EM_NET_DOOR_STATUS_TYPE
|
|
|
*/
|
|
|
- public int nBufferLen;
|
|
|
+ public int emStateType;
|
|
|
|
|
|
- public NET_OUT_DETECT_FACE() {
|
|
|
- this.dwSize = this.size();
|
|
|
+ public NET_DOOR_STATUS_INFO() {
|
|
|
+ this.dwSize = size();
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- /*******************回调*******************/
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "NET_DOOR_STATUS_INFO{" +
|
|
|
+ "nChannel=" + nChannel +
|
|
|
+ ", emStateType=" + emStateType +
|
|
|
+ '}';
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 断线回调
|
|
|
+ * 门锁控制模式
|
|
|
*/
|
|
|
- interface fDisConnect extends StdCallCallback {
|
|
|
+ class NET_DOORWORK_MODE {
|
|
|
+ public static final int NET_DOORWORK_MODE_UNKNOWN = 0;
|
|
|
/**
|
|
|
- * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
- * @param pchDVRIP 设备IP
|
|
|
- * @param nDVRPort 设备端口
|
|
|
- * @param dwUser 用户数据
|
|
|
+ * 正常模式
|
|
|
*/
|
|
|
- void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ public static final int NET_DOORWORK_MODE_NORMAL = 1;
|
|
|
+ /**
|
|
|
+ * 闭锁
|
|
|
+ */
|
|
|
+ public static final int NET_DOORWORK_MODE_SHUTLOCK = 2;
|
|
|
+ /**
|
|
|
+ * 停用
|
|
|
+ */
|
|
|
+ public static final int NET_DOORWORK_MODE_UNUSED = 3;
|
|
|
+ /**
|
|
|
+ * 持续打开
|
|
|
+ */
|
|
|
+ public static final int NET_DOORWORK_MODE_OPENDOORCONTINUE = 4;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 断线后重连回调
|
|
|
+ * 获取门锁控制模式,对应命令 DH_DEVSTATE_GET_ACCESSCONTROLMODE
|
|
|
*/
|
|
|
- interface fHaveReConnect extends StdCallCallback {
|
|
|
+ @Structure.FieldOrder({"dwSize", "nChannel", "emControlMode"})
|
|
|
+ class NET_GET_DOORWORK_MODE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
/**
|
|
|
- * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
- * @param pchDVRIP 设备IP
|
|
|
- * @param nDVRPort 设备端口
|
|
|
- * @param dwUser 用户数据
|
|
|
+ * 门禁通道号
|
|
|
*/
|
|
|
- void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ public int nChannel;
|
|
|
+ /**
|
|
|
+ * 门锁控制模式
|
|
|
+ *
|
|
|
+ * @see NET_DOORWORK_MODE
|
|
|
+ */
|
|
|
+ public int emControlMode;
|
|
|
+
|
|
|
+ public NET_GET_DOORWORK_MODE() {
|
|
|
+ this.dwSize = size();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- /*******************用户管理*******************/
|
|
|
- /**
|
|
|
- * 设置用户信息
|
|
|
- *
|
|
|
- * @param lLoginID 登陆句柄,CLIENT_Login的返回值
|
|
|
- * @param nOperateType 操作类型
|
|
|
- * @param opParam 设置用户信息的输入缓冲,具体见上面nOperateType说明
|
|
|
- * @param subParam 设置用户信息的辅助输入缓冲,当设置类型为修改信息的时候,此处应传进来部分原始用户信息,具体见上面nOperateType说明
|
|
|
- * @param waittime 等待时间
|
|
|
- * @return
|
|
|
- * @see UserOperateType
|
|
|
- */
|
|
|
- boolean CLIENT_OperateUserInfoEx(NativeLong lLoginID, int nOperateType, Pointer opParam, Pointer subParam, int waittime);
|
|
|
-}
|
|
|
+}
|