소스 검색

人脸识别接口

yingp 6 년 전
부모
커밋
baa57f4267

+ 14 - 0
pom.xml

@@ -15,4 +15,18 @@
             <version>5.2.0</version>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 38 - 0
src/main/java/com/usoftchina/ss/dahua/common/MessageBundle.java

@@ -0,0 +1,38 @@
+package com.usoftchina.ss.dahua.common;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * @author yingp
+ * @date 2019/2/28
+ */
+public class MessageBundle {
+    private ResourceBundle bundle;
+
+    private final String bundleName = "message";
+
+    private MessageBundle() {
+        setLocale(new Locale("zh", "CN"));
+    }
+
+    public static MessageBundle instance() {
+        return MessageBundleHolder.instance;
+    }
+
+    private static class MessageBundleHolder {
+        private static MessageBundle instance = new MessageBundle();
+    }
+
+    public ResourceBundle getBundle() {
+        return bundle;
+    }
+
+    public void setLocale(Locale locale) {
+        bundle = ResourceBundle.getBundle(bundleName, locale);
+    }
+
+    public String getString(String key) {
+        return bundle.getString(key);
+    }
+}

+ 98 - 0
src/main/java/com/usoftchina/ss/dahua/lib/DeviceState.java

@@ -0,0 +1,98 @@
+package com.usoftchina.ss.dahua.lib;
+
+import com.sun.jna.Memory;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * 获取前端设备的当前工作状态
+ *
+ * @author yingp
+ * @date 2019/2/27
+ */
+public class DeviceState {
+    /**
+     * 普通报警状态(包括外部报警,动态检测,视频丢失)
+     *
+     * @param sdk
+     */
+    public static void commonAlarm(INetSdk sdk) {
+        if (!sdk.isLoggedIn()) {
+            return;
+        }
+        int nBufLen = 1024;
+        NetSdkLib.NET_CLIENT_STATE_EX clientState = new NetSdkLib.NET_CLIENT_STATE_EX();
+        IntByReference pRetLen = new IntByReference();
+        boolean bRet = sdk.getInstance().CLIENT_QueryRemotDevState(sdk.getLoginHandle(),
+                DeviceStateType.DH_DEVSTATE_COMM_ALARM, 0, clientState.getPointer(),
+                nBufLen, pRetLen, 10000);
+        if (bRet) {
+            System.out.println(clientState);
+            System.out.println(pRetLen.getValue());
+        } else {
+            System.err.println("error");
+        }
+    }
+
+    /**
+     * @param sdk
+     * @param type 类型
+     * @param nBufLen 字节
+     * @return
+     */
+    private static String stringState(INetSdk sdk, int type, int nBufLen) {
+        if (!sdk.isLoggedIn()) {
+            return null;
+        }
+        Memory pBuf = new Memory(nBufLen);
+        IntByReference pRetLen = new IntByReference();
+        try {
+            boolean bRet = sdk.getInstance().CLIENT_QueryRemotDevState(sdk.getLoginHandle(),
+                    type, 0, pBuf, nBufLen, pRetLen, 10000);
+            if (bRet) {
+                return pBuf.getString(0);
+            }
+            return null;
+        } finally {
+            pBuf.clear();
+        }
+    }
+
+    /**
+     * 遮挡报警状态
+     *
+     * @param sdk
+     */
+    public static String shelterAlarm(INetSdk sdk) {
+        return stringState(sdk, DeviceStateType.DH_DEVSTATE_SHELTER_ALARM, 16);
+    }
+
+    /**
+     * 录像状态
+     *
+     * @param sdk
+     */
+    public static String recording(INetSdk sdk) {
+        return stringState(sdk, DeviceStateType.DH_DEVSTATE_RECORDING, 16);
+    }
+
+    /**
+     * 硬盘状态
+     */
+    public static void disk(INetSdk sdk) {
+        if (!sdk.isLoggedIn()) {
+            return;
+        }
+        int nBufLen = 1024;
+        NetSdkLib.DH_HARDDISK_STATE diskState = new NetSdkLib.DH_HARDDISK_STATE();
+        IntByReference pRetLen = new IntByReference();
+        boolean bRet = sdk.getInstance().CLIENT_QueryRemotDevState(sdk.getLoginHandle(),
+                DeviceStateType.DH_DEVSTATE_COMM_ALARM, 0, diskState.getPointer(),
+                nBufLen, pRetLen, 10000);
+        if (bRet) {
+            System.out.println(diskState);
+            System.out.println(pRetLen.getValue());
+        } else {
+            System.err.println("error");
+        }
+    }
+}

+ 30 - 0
src/main/java/com/usoftchina/ss/dahua/lib/DiskType.java

@@ -0,0 +1,30 @@
+package com.usoftchina.ss.dahua.lib;
+
+/**
+ * 硬盘类型
+ *
+ * @author yingp
+ * @date 2019/2/27
+ */
+public class DiskType {
+    /**
+     * 读写驱动器
+     */
+    public static final byte DH_DISK_READ_WRITE = 0;
+    /**
+     * 只读驱动器
+     */
+    public static final byte DH_DISK_READ_ONLY = 1;
+    /**
+     * 备份驱动器或媒体驱动器
+     */
+    public static final byte DH_DISK_BACKUP = 2;
+    /**
+     * 冗余驱动器
+     */
+    public static final byte DH_DISK_REDUNDANT = 3;
+    /**
+     * 快照驱动器
+     */
+    public static final byte DH_DISK_SNAPSHOT = 4;
+}

+ 288 - 258
src/main/java/com/usoftchina/ss/dahua/lib/ErrorCode.java

@@ -1,1034 +1,1064 @@
 package com.usoftchina.ss.dahua.lib;
 
+import com.usoftchina.ss.dahua.common.MessageBundle;
+
 /**
  * 错误码
  *
  * @author yingp
  * @date 2019/2/15
  */
-public class ErrorCode {
+public enum ErrorCode {
     /**
      * 没有错误
      */
-    public static final int NET_NOERROR = 0;
+    NET_NOERROR(0),
     /**
      * 未知错误
      */
-    public static final int NET_ERROR = -1;
+    NET_ERROR(-1),
     /**
      * Windows系统出错
      */
-    public static final int NET_SYSTEM_ERROR = (0x80000000 | 1);
+    NET_SYSTEM_ERROR(0x80000000 | 1),
     /**
      * 网络错误,可能是因为网络超时
      */
-    public static final int NET_NETWORK_ERROR = (0x80000000 | 2);
+    NET_NETWORK_ERROR(0x80000000 | 2),
     /**
      * 设备协议不匹配
      */
-    public static final int NET_DEV_VER_NOMATCH = (0x80000000 | 3);
+    NET_DEV_VER_NOMATCH(0x80000000 | 3),
     /**
      * 句柄无效
      */
-    public static final int NET_INVALID_HANDLE = (0x80000000 | 4);
+    NET_INVALID_HANDLE(0x80000000 | 4),
     /**
      * 打开通道失败
      */
-    public static final int NET_OPEN_CHANNEL_ERROR = (0x80000000 | 5);
+    NET_OPEN_CHANNEL_ERROR(0x80000000 | 5),
     /**
      * 关闭通道失败
      */
-    public static final int NET_CLOSE_CHANNEL_ERROR = (0x80000000 | 6);
+    NET_CLOSE_CHANNEL_ERROR(0x80000000 | 6),
     /**
      * 用户参数不合法
      */
-    public static final int NET_ILLEGAL_PARAM = (0x80000000 | 7);
+    NET_ILLEGAL_PARAM(0x80000000 | 7),
     /**
      * SDK初始化出错
      */
-    public static final int NET_SDK_INIT_ERROR = (0x80000000 | 8);
+    NET_SDK_INIT_ERROR(0x80000000 | 8),
     /**
      * SDK清理出错
      */
-    public static final int NET_SDK_UNINIT_ERROR = (0x80000000 | 9);
+    NET_SDK_UNINIT_ERROR(0x80000000 | 9),
     /**
      * 申请render资源出错
      */
-    public static final int NET_RENDER_OPEN_ERROR = (0x80000000 | 10);
+    NET_RENDER_OPEN_ERROR(0x80000000 | 10),
     /**
      * 打开解码库出错
      */
-    public static final int NET_DEC_OPEN_ERROR = (0x80000000 | 11);
+    NET_DEC_OPEN_ERROR(0x80000000 | 11),
     /**
      * 关闭解码库出错
      */
-    public static final int NET_DEC_CLOSE_ERROR = (0x80000000 | 12);
+    NET_DEC_CLOSE_ERROR(0x80000000 | 12),
     /**
      * 多画面预览中检测到通道数为0
      */
-    public static final int NET_MULTIPLAY_NOCHANNEL = (0x80000000 | 13);
+    NET_MULTIPLAY_NOCHANNEL(0x80000000 | 13),
     /**
      * 录音库初始化失败
      */
-    public static final int NET_TALK_INIT_ERROR = (0x80000000 | 14);
+    NET_TALK_INIT_ERROR(0x80000000 | 14),
     /**
      * 录音库未经初始化
      */
-    public static final int NET_TALK_NOT_INIT = (0x80000000 | 15);
+    NET_TALK_NOT_INIT(0x80000000 | 15),
     /**
      * 发送音频数据出错
      */
-    public static final int NET_TALK_SENDDATA_ERROR = (0x80000000 | 16);
+    NET_TALK_SENDDATA_ERROR(0x80000000 | 16),
     /**
      * 实时数据已经处于保存状态
      */
-    public static final int NET_REAL_ALREADY_SAVING = (0x80000000 | 17);
+    NET_REAL_ALREADY_SAVING(0x80000000 | 17),
     /**
      * 未保存实时数据
      */
-    public static final int NET_NOT_SAVING = (0x80000000 | 18);
+    NET_NOT_SAVING(0x80000000 | 18),
     /**
      * 打开文件出错
      */
-    public static final int NET_OPEN_FILE_ERROR = (0x80000000 | 19);
+    NET_OPEN_FILE_ERROR(0x80000000 | 19),
     /**
      * 启动云台控制定时器失败
      */
-    public static final int NET_PTZ_SET_TIMER_ERROR = (0x80000000 | 20);
+    NET_PTZ_SET_TIMER_ERROR(0x80000000 | 20),
     /**
      * 对返回数据的校验出错
      */
-    public static final int NET_RETURN_DATA_ERROR = (0x80000000 | 21);
+    NET_RETURN_DATA_ERROR(0x80000000 | 21),
     /**
      * 没有足够的缓存
      */
-    public static final int NET_INSUFFICIENT_BUFFER = (0x80000000 | 22);
+    NET_INSUFFICIENT_BUFFER(0x80000000 | 22),
     /**
      * 当前SDK未支持该功能
      */
-    public static final int NET_NOT_SUPPORTED = (0x80000000 | 23);
+    NET_NOT_SUPPORTED(0x80000000 | 23),
     /**
      * 查询不到录像
      */
-    public static final int NET_NO_RECORD_FOUND = (0x80000000 | 24);
+    NET_NO_RECORD_FOUND(0x80000000 | 24),
     /**
      * 无操作权限
      */
-    public static final int NET_NOT_AUTHORIZED = (0x80000000 | 25);
+    NET_NOT_AUTHORIZED(0x80000000 | 25),
     /**
      * 暂时无法执行
      */
-    public static final int NET_NOT_NOW = (0x80000000 | 26);
+    NET_NOT_NOW(0x80000000 | 26),
     /**
      * 未发现对讲通道
      */
-    public static final int NET_NO_TALK_CHANNEL = (0x80000000 | 27);
+    NET_NO_TALK_CHANNEL(0x80000000 | 27),
     /**
      * 未发现音频
      */
-    public static final int NET_NO_AUDIO = (0x80000000 | 28);
+    NET_NO_AUDIO(0x80000000 | 28),
     /**
      * 网络SDK未经初始化
      */
-    public static final int NET_NO_INIT = (0x80000000 | 29);
+    NET_NO_INIT(0x80000000 | 29),
     /**
      * 下载已结束
      */
-    public static final int NET_DOWNLOAD_END = (0x80000000 | 30);
+    NET_DOWNLOAD_END(0x80000000 | 30),
     /**
      * 查询结果为空
      */
-    public static final int NET_EMPTY_LIST = (0x80000000 | 31);
+    NET_EMPTY_LIST(0x80000000 | 31),
     /**
      * 获取系统属性配置失败
      */
-    public static final int NET_ERROR_GETCFG_SYSATTR = (0x80000000 | 32);
+    NET_ERROR_GETCFG_SYSATTR(0x80000000 | 32),
     /**
      * 获取序列号失败
      */
-    public static final int NET_ERROR_GETCFG_SERIAL = (0x80000000 | 33);
+    NET_ERROR_GETCFG_SERIAL(0x80000000 | 33),
     /**
      * 获取常规属性失败
      */
-    public static final int NET_ERROR_GETCFG_GENERAL = (0x80000000 | 34);
+    NET_ERROR_GETCFG_GENERAL(0x80000000 | 34),
     /**
      * 获取DSP能力描述失败
      */
-    public static final int NET_ERROR_GETCFG_DSPCAP = (0x80000000 | 35);
+    NET_ERROR_GETCFG_DSPCAP(0x80000000 | 35),
     /**
      * 获取网络配置失败
      */
-    public static final int NET_ERROR_GETCFG_NETCFG = (0x80000000 | 36);
+    NET_ERROR_GETCFG_NETCFG(0x80000000 | 36),
     /**
      * 获取通道名称失败
      */
-    public static final int NET_ERROR_GETCFG_CHANNAME = (0x80000000 | 37);
+    NET_ERROR_GETCFG_CHANNAME(0x80000000 | 37),
     /**
      * 获取视频属性失败
      */
-    public static final int NET_ERROR_GETCFG_VIDEO = (0x80000000 | 38);
+    NET_ERROR_GETCFG_VIDEO(0x80000000 | 38),
     /**
      * 获取录象配置失败
      */
-    public static final int NET_ERROR_GETCFG_RECORD = (0x80000000 | 39);
+    NET_ERROR_GETCFG_RECORD(0x80000000 | 39),
     /**
      * 获取解码器协议名称失败
      */
-    public static final int NET_ERROR_GETCFG_PRONAME = (0x80000000 | 40);
+    NET_ERROR_GETCFG_PRONAME(0x80000000 | 40),
     /**
      * 获取232串口功能名称失败
      */
-    public static final int NET_ERROR_GETCFG_FUNCNAME = (0x80000000 | 41);
+    NET_ERROR_GETCFG_FUNCNAME(0x80000000 | 41),
     /**
      * 获取解码器属性失败
      */
-    public static final int NET_ERROR_GETCFG_485DECODER = (0x80000000 | 42);
+    NET_ERROR_GETCFG_485DECODER(0x80000000 | 42),
     /**
      * 获取232串口配置失败
      */
-    public static final int NET_ERROR_GETCFG_232COM = (0x80000000 | 43);
+    NET_ERROR_GETCFG_232COM(0x80000000 | 43),
     /**
      * 获取外部报警输入配置失败
      */
-    public static final int NET_ERROR_GETCFG_ALARMIN = (0x80000000 | 44);
+    NET_ERROR_GETCFG_ALARMIN(0x80000000 | 44),
     /**
      * 获取动态检测报警失败
      */
-    public static final int NET_ERROR_GETCFG_ALARMDET = (0x80000000 | 45);
+    NET_ERROR_GETCFG_ALARMDET(0x80000000 | 45),
     /**
      * 获取设备时间失败
      */
-    public static final int NET_ERROR_GETCFG_SYSTIME = (0x80000000 | 46);
+    NET_ERROR_GETCFG_SYSTIME(0x80000000 | 46),
     /**
      * 获取预览参数失败
      */
-    public static final int NET_ERROR_GETCFG_PREVIEW = (0x80000000 | 47);
+    NET_ERROR_GETCFG_PREVIEW(0x80000000 | 47),
     /**
      * 获取自动维护配置失败
      */
-    public static final int NET_ERROR_GETCFG_AUTOMT = (0x80000000 | 48);
+    NET_ERROR_GETCFG_AUTOMT(0x80000000 | 48),
     /**
      * 获取视频矩阵配置失败
      */
-    public static final int NET_ERROR_GETCFG_VIDEOMTRX = (0x80000000 | 49);
+    NET_ERROR_GETCFG_VIDEOMTRX(0x80000000 | 49),
     /**
      * 获取区域遮挡配置失败
      */
-    public static final int NET_ERROR_GETCFG_COVER = (0x80000000 | 50);
+    NET_ERROR_GETCFG_COVER(0x80000000 | 50),
     /**
      * 获取图象水印配置失败
      */
-    public static final int NET_ERROR_GETCFG_WATERMAKE = (0x80000000 | 51);
+    NET_ERROR_GETCFG_WATERMAKE(0x80000000 | 51),
     /**
      * 修改常规属性失败
      */
-    public static final int NET_ERROR_SETCFG_GENERAL = (0x80000000 | 55);
+    NET_ERROR_SETCFG_GENERAL(0x80000000 | 55),
     /**
      * 修改网络配置失败
      */
-    public static final int NET_ERROR_SETCFG_NETCFG = (0x80000000 | 56);
+    NET_ERROR_SETCFG_NETCFG(0x80000000 | 56),
     /**
      * 修改通道名称失败
      */
-    public static final int NET_ERROR_SETCFG_CHANNAME = (0x80000000 | 57);
+    NET_ERROR_SETCFG_CHANNAME(0x80000000 | 57),
     /**
      * 修改视频属性失败
      */
-    public static final int NET_ERROR_SETCFG_VIDEO = (0x80000000 | 58);
+    NET_ERROR_SETCFG_VIDEO(0x80000000 | 58),
     /**
-     * 修改录配置失败
+     * 修改录配置失败
      */
-    public static final int NET_ERROR_SETCFG_RECORD = (0x80000000 | 59);
+    NET_ERROR_SETCFG_RECORD(0x80000000 | 59),
     /**
      * 修改解码器属性失败
      */
-    public static final int NET_ERROR_SETCFG_485DECODER = (0x80000000 | 60);
+    NET_ERROR_SETCFG_485DECODER(0x80000000 | 60),
     /**
      * 修改232串口配置失败
      */
-    public static final int NET_ERROR_SETCFG_232COM = (0x80000000 | 61);
+    NET_ERROR_SETCFG_232COM(0x80000000 | 61),
     /**
      * 修改外部输入报警配置失败
      */
-    public static final int NET_ERROR_SETCFG_ALARMIN = (0x80000000 | 62);
+    NET_ERROR_SETCFG_ALARMIN(0x80000000 | 62),
     /**
      * 修改动态检测报警配置失败
      */
-    public static final int NET_ERROR_SETCFG_ALARMDET = (0x80000000 | 63);
+    NET_ERROR_SETCFG_ALARMDET(0x80000000 | 63),
     /**
      * 修改设备时间失败
      */
-    public static final int NET_ERROR_SETCFG_SYSTIME = (0x80000000 | 64);
+    NET_ERROR_SETCFG_SYSTIME(0x80000000 | 64),
     /**
      * 修改预览参数失败
      */
-    public static final int NET_ERROR_SETCFG_PREVIEW = (0x80000000 | 65);
+    NET_ERROR_SETCFG_PREVIEW(0x80000000 | 65),
     /**
      * 修改自动维护配置失败
      */
-    public static final int NET_ERROR_SETCFG_AUTOMT = (0x80000000 | 66);
+    NET_ERROR_SETCFG_AUTOMT(0x80000000 | 66),
     /**
      * 修改视频矩阵配置失败
      */
-    public static final int NET_ERROR_SETCFG_VIDEOMTRX = (0x80000000 | 67);
+    NET_ERROR_SETCFG_VIDEOMTRX(0x80000000 | 67),
     /**
      * 修改区域遮挡配置失败
      */
-    public static final int NET_ERROR_SETCFG_COVER = (0x80000000 | 68);
+    NET_ERROR_SETCFG_COVER(0x80000000 | 68),
     /**
      * 修改图象水印配置失败
      */
-    public static final int NET_ERROR_SETCFG_WATERMAKE = (0x80000000 | 69);
+    NET_ERROR_SETCFG_WATERMAKE(0x80000000 | 69),
     /**
      * 修改无线网络信息失败
      */
-    public static final int NET_ERROR_SETCFG_WLAN = (0x80000000 | 70);
+    NET_ERROR_SETCFG_WLAN(0x80000000 | 70),
     /**
      * 选择无线网络设备失败
      */
-    public static final int NET_ERROR_SETCFG_WLANDEV = (0x80000000 | 71);
+    NET_ERROR_SETCFG_WLANDEV(0x80000000 | 71),
     /**
      * 修改主动注册参数配置失败
      */
-    public static final int NET_ERROR_SETCFG_REGISTER = (0x80000000 | 72);
+    NET_ERROR_SETCFG_REGISTER(0x80000000 | 72),
     /**
      * 修改摄像头属性配置失败
      */
-    public static final int NET_ERROR_SETCFG_CAMERA = (0x80000000 | 73);
+    NET_ERROR_SETCFG_CAMERA(0x80000000 | 73),
     /**
      * 修改红外报警配置失败
      */
-    public static final int NET_ERROR_SETCFG_INFRARED = (0x80000000 | 74);
+    NET_ERROR_SETCFG_INFRARED(0x80000000 | 74),
     /**
      * 修改音频报警配置失败
      */
-    public static final int NET_ERROR_SETCFG_SOUNDALARM = (0x80000000 | 75);
+    NET_ERROR_SETCFG_SOUNDALARM(0x80000000 | 75),
     /**
      * 修改存储位置配置失败
      */
-    public static final int NET_ERROR_SETCFG_STORAGE = (0x80000000 | 76);
+    NET_ERROR_SETCFG_STORAGE(0x80000000 | 76),
     /**
      * 音频编码接口没有成功初始化
      */
-    public static final int NET_AUDIOENCODE_NOTINIT = (0x80000000 | 77);
+    NET_AUDIOENCODE_NOTINIT(0x80000000 | 77),
     /**
      * 数据过长
      */
-    public static final int NET_DATA_TOOLONGH = (0x80000000 | 78);
+    NET_DATA_TOOLONGH(0x80000000 | 78),
     /**
      * 设备不支持该操作
      */
-    public static final int NET_UNSUPPORTED = (0x80000000 | 79);
+    NET_UNSUPPORTED(0x80000000 | 79),
     /**
      * 设备资源不足
      */
-    public static final int NET_DEVICE_BUSY = (0x80000000 | 80);
+    NET_DEVICE_BUSY(0x80000000 | 80),
     /**
      * 服务器已经启动
      */
-    public static final int NET_SERVER_STARTED = (0x80000000 | 81);
+    NET_SERVER_STARTED(0x80000000 | 81),
     /**
      * 服务器尚未成功启动
      */
-    public static final int NET_SERVER_STOPPED = (0x80000000 | 82);
+    NET_SERVER_STOPPED(0x80000000 | 82),
     /**
      * 输入序列号有误
      */
-    public static final int NET_LISTER_INCORRECT_SERIAL = (0x80000000 | 83);
+    NET_LISTER_INCORRECT_SERIAL(0x80000000 | 83),
     /**
      * 获取硬盘信息失败
      */
-    public static final int NET_QUERY_DISKINFO_FAILED = (0x80000000 | 84);
+    NET_QUERY_DISKINFO_FAILED(0x80000000 | 84),
     /**
      * 获取连接Session信息
      */
-    public static final int NET_ERROR_GETCFG_SESSION = (0x80000000 | 85);
+    NET_ERROR_GETCFG_SESSION(0x80000000 | 85),
     /**
      * 输入密码错误超过限制次数
      */
-    public static final int NET_USER_FLASEPWD_TRYTIME = (0x80000000 | 86);
+    NET_USER_FLASEPWD_TRYTIME(0x80000000 | 86),
     /**
      * 密码不正确
      */
-    public static final int NET_LOGIN_ERROR_PASSWORD = (0x80000000 | 100);
+    NET_LOGIN_ERROR_PASSWORD(0x80000000 | 100),
     /**
      * 帐户不存在
      */
-    public static final int NET_LOGIN_ERROR_USER = (0x80000000 | 101);
+    NET_LOGIN_ERROR_USER(0x80000000 | 101),
     /**
      * 等待登录返回超时
      */
-    public static final int NET_LOGIN_ERROR_TIMEOUT = (0x80000000 | 102);
+    NET_LOGIN_ERROR_TIMEOUT(0x80000000 | 102),
     /**
      * 帐号已登录
      */
-    public static final int NET_LOGIN_ERROR_RELOGGIN = (0x80000000 | 103);
+    NET_LOGIN_ERROR_RELOGGIN(0x80000000 | 103),
     /**
      * 帐号已被锁定
      */
-    public static final int NET_LOGIN_ERROR_LOCKED = (0x80000000 | 104);
+    NET_LOGIN_ERROR_LOCKED(0x80000000 | 104),
     /**
      * 帐号已被列为黑名单
      */
-    public static final int NET_LOGIN_ERROR_BLACKLIST = (0x80000000 | 105);
+    NET_LOGIN_ERROR_BLACKLIST(0x80000000 | 105),
     /**
      * 资源不足,系统忙
      */
-    public static final int NET_LOGIN_ERROR_BUSY = (0x80000000 | 106);
+    NET_LOGIN_ERROR_BUSY(0x80000000 | 106),
     /**
      * 登录设备超时,请检查网络并重试
      */
-    public static final int NET_LOGIN_ERROR_CONNECT = (0x80000000 | 107);
+    NET_LOGIN_ERROR_CONNECT(0x80000000 | 107),
     /**
      * 网络连接失败
      */
-    public static final int NET_LOGIN_ERROR_NETWORK = (0x80000000 | 108);
+    NET_LOGIN_ERROR_NETWORK(0x80000000 | 108),
     /**
      * 登录设备成功,但无法创建视频通道,请检查网络状况
      */
-    public static final int NET_LOGIN_ERROR_SUBCONNECT = (0x80000000 | 109);
+    NET_LOGIN_ERROR_SUBCONNECT(0x80000000 | 109),
     /**
      * 超过最大连接数
      */
-    public static final int NET_LOGIN_ERROR_MAXCONNECT = (0x80000000 | 110);
+    NET_LOGIN_ERROR_MAXCONNECT(0x80000000 | 110),
     /**
      * 只支持3代协议
      */
-    public static final int NET_LOGIN_ERROR_PROTOCOL3_ONLY = (0x80000000 | 111);
+    NET_LOGIN_ERROR_PROTOCOL3_ONLY(0x80000000 | 111),
     /**
      * 未插入U盾或U盾信息错误
      */
-    public static final int NET_LOGIN_ERROR_UKEY_LOST = (0x80000000 | 112);
+    NET_LOGIN_ERROR_UKEY_LOST(0x80000000 | 112),
     /**
      * 客户端IP地址没有登录权限
      */
-    public static final int NET_LOGIN_ERROR_NO_AUTHORIZED = (0x80000000 | 113);
+    NET_LOGIN_ERROR_NO_AUTHORIZED(0x80000000 | 113),
     /**
      * 账号或密码错误
      */
-    public static final int NET_LOGIN_ERROR_USER_OR_PASSOWRD = (0x80000000 | 117);
+    NET_LOGIN_ERROR_USER_OR_PASSOWRD(0x80000000 | 117),
     /**
      * Render库打开音频出错
      */
-    public static final int NET_RENDER_SOUND_ON_ERROR = (0x80000000 | 120);
+    NET_RENDER_SOUND_ON_ERROR(0x80000000 | 120),
     /**
      * Render库关闭音频出错
      */
-    public static final int NET_RENDER_SOUND_OFF_ERROR = (0x80000000 | 121);
+    NET_RENDER_SOUND_OFF_ERROR(0x80000000 | 121),
     /**
      * Render库控制音量出错
      */
-    public static final int NET_RENDER_SET_VOLUME_ERROR = (0x80000000 | 122);
+    NET_RENDER_SET_VOLUME_ERROR(0x80000000 | 122),
     /**
      * Render库设置画面参数出错
      */
-    public static final int NET_RENDER_ADJUST_ERROR = (0x80000000 | 123);
+    NET_RENDER_ADJUST_ERROR(0x80000000 | 123),
     /**
      * Render库暂停播放出错
      */
-    public static final int NET_RENDER_PAUSE_ERROR = (0x80000000 | 124);
+    NET_RENDER_PAUSE_ERROR(0x80000000 | 124),
     /**
      * Render库抓图出错
      */
-    public static final int NET_RENDER_SNAP_ERROR = (0x80000000 | 125);
+    NET_RENDER_SNAP_ERROR(0x80000000 | 125),
     /**
      * Render库步进出错
      */
-    public static final int NET_RENDER_STEP_ERROR = (0x80000000 | 126);
+    NET_RENDER_STEP_ERROR(0x80000000 | 126),
     /**
      * Render库设置帧率出错
      */
-    public static final int NET_RENDER_FRAMERATE_ERROR = (0x80000000 | 127);
+    NET_RENDER_FRAMERATE_ERROR(0x80000000 | 127),
     /**
      * Render库设置显示区域出错
      */
-    public static final int NET_RENDER_DISPLAYREGION_ERROR = (0x80000000 | 128);
+    NET_RENDER_DISPLAYREGION_ERROR(0x80000000 | 128),
     /**
      * 组名已存在
      */
-    public static final int NET_GROUP_EXIST = (0x80000000 | 140);
+    NET_GROUP_EXIST(0x80000000 | 140),
     /**
      * 组名不存在
      */
-    public static final int NET_GROUP_NOEXIST = (0x80000000 | 141);
+    NET_GROUP_NOEXIST(0x80000000 | 141),
     /**
      * 组的权限超出权限列表范围
      */
-    public static final int NET_GROUP_RIGHTOVER = (0x80000000 | 142);
+    NET_GROUP_RIGHTOVER(0x80000000 | 142),
     /**
      * 组下有用户,不能删除
      */
-    public static final int NET_GROUP_HAVEUSER = (0x80000000 | 143);
+    NET_GROUP_HAVEUSER(0x80000000 | 143),
     /**
      * 组的某个权限被用户使用,不能出除
      */
-    public static final int NET_GROUP_RIGHTUSE = (0x80000000 | 144);
+    NET_GROUP_RIGHTUSE(0x80000000 | 144),
     /**
      * 新组名同已有组名重复
      */
-    public static final int NET_GROUP_SAMENAME = (0x80000000 | 145);
+    NET_GROUP_SAMENAME(0x80000000 | 145),
     /**
      * 用户已存在
      */
-    public static final int NET_USER_EXIST = (0x80000000 | 146);
+    NET_USER_EXIST(0x80000000 | 146),
     /**
      * 用户不存在
      */
-    public static final int NET_USER_NOEXIST = (0x80000000 | 147);
+    NET_USER_NOEXIST(0x80000000 | 147),
     /**
      * 用户权限超出组权限
      */
-    public static final int NET_USER_RIGHTOVER = (0x80000000 | 148);
+    NET_USER_RIGHTOVER(0x80000000 | 148),
     /**
      * 保留帐号,不容许修改密码
      */
-    public static final int NET_USER_PWD = (0x80000000 | 149);
+    NET_USER_PWD(0x80000000 | 149),
     /**
      * 密码不正确
      */
-    public static final int NET_USER_FLASEPWD = (0x80000000 | 150);
+    NET_USER_FLASEPWD(0x80000000 | 150),
     /**
      * 密码不匹配
      */
-    public static final int NET_USER_NOMATCHING = (0x80000000 | 151);
+    NET_USER_NOMATCHING(0x80000000 | 151),
     /**
      * 账号正在使用中
      */
-    public static final int NET_USER_INUSE = (0x80000000 | 152);
+    NET_USER_INUSE(0x80000000 | 152),
     /**
      * 获取网卡配置失败
      */
-    public static final int NET_ERROR_GETCFG_ETHERNET = (0x80000000 | 300);
+    NET_ERROR_GETCFG_ETHERNET(0x80000000 | 300),
     /**
      * 获取无线网络信息失败
      */
-    public static final int NET_ERROR_GETCFG_WLAN = (0x80000000 | 301);
+    NET_ERROR_GETCFG_WLAN(0x80000000 | 301),
     /**
      * 获取无线网络设备失败
      */
-    public static final int NET_ERROR_GETCFG_WLANDEV = (0x80000000 | 302);
+    NET_ERROR_GETCFG_WLANDEV(0x80000000 | 302),
     /**
      * 获取主动注册参数失败
      */
-    public static final int NET_ERROR_GETCFG_REGISTER = (0x80000000 | 303);
+    NET_ERROR_GETCFG_REGISTER(0x80000000 | 303),
     /**
      * 获取摄像头属性失败
      */
-    public static final int NET_ERROR_GETCFG_CAMERA = (0x80000000 | 304);
+    NET_ERROR_GETCFG_CAMERA(0x80000000 | 304),
     /**
      * 获取红外报警配置失败
      */
-    public static final int NET_ERROR_GETCFG_INFRARED = (0x80000000 | 305);
+    NET_ERROR_GETCFG_INFRARED(0x80000000 | 305),
     /**
      * 获取音频报警配置失败
      */
-    public static final int NET_ERROR_GETCFG_SOUNDALARM = (0x80000000 | 306);
+    NET_ERROR_GETCFG_SOUNDALARM(0x80000000 | 306),
     /**
      * 获取存储位置配置失败
      */
-    public static final int NET_ERROR_GETCFG_STORAGE = (0x80000000 | 307);
+    NET_ERROR_GETCFG_STORAGE(0x80000000 | 307),
     /**
      * 获取邮件配置失败
      */
-    public static final int NET_ERROR_GETCFG_MAIL = (0x80000000 | 308);
+    NET_ERROR_GETCFG_MAIL(0x80000000 | 308),
     /**
      * 暂时无法设置
      */
-    public static final int NET_CONFIG_DEVBUSY = (0x80000000 | 309);
+    NET_CONFIG_DEVBUSY(0x80000000 | 309),
     /**
      * 配置数据不合法
      */
-    public static final int NET_CONFIG_DATAILLEGAL = (0x80000000 | 310);
+    NET_CONFIG_DATAILLEGAL(0x80000000 | 310),
     /**
      * 获取夏令时配置失败
      */
-    public static final int NET_ERROR_GETCFG_DST = (0x80000000 | 311);
+    NET_ERROR_GETCFG_DST(0x80000000 | 311),
     /**
      * 设置夏令时配置失败
      */
-    public static final int NET_ERROR_SETCFG_DST = (0x80000000 | 312);
+    NET_ERROR_SETCFG_DST(0x80000000 | 312),
     /**
      * 获取视频OSD叠加配置失败
      */
-    public static final int NET_ERROR_GETCFG_VIDEO_OSD = (0x80000000 | 313);
+    NET_ERROR_GETCFG_VIDEO_OSD(0x80000000 | 313),
     /**
      * 设置视频OSD叠加配置失败
      */
-    public static final int NET_ERROR_SETCFG_VIDEO_OSD = (0x80000000 | 314);
+    NET_ERROR_SETCFG_VIDEO_OSD(0x80000000 | 314),
     /**
      * 获取CDMA\GPRS网络配置失败
      */
-    public static final int NET_ERROR_GETCFG_GPRSCDMA = (0x80000000 | 315);
+    NET_ERROR_GETCFG_GPRSCDMA(0x80000000 | 315),
     /**
      * 设置CDMA\GPRS网络配置失败
      */
-    public static final int NET_ERROR_SETCFG_GPRSCDMA = (0x80000000 | 316);
+    NET_ERROR_SETCFG_GPRSCDMA(0x80000000 | 316),
     /**
      * 获取IP过滤配置失败
      */
-    public static final int NET_ERROR_GETCFG_IPFILTER = (0x80000000 | 317);
+    NET_ERROR_GETCFG_IPFILTER(0x80000000 | 317),
     /**
      * 设置IP过滤配置失败
      */
-    public static final int NET_ERROR_SETCFG_IPFILTER = (0x80000000 | 318);
+    NET_ERROR_SETCFG_IPFILTER(0x80000000 | 318),
     /**
      * 获取语音对讲编码配置失败
      */
-    public static final int NET_ERROR_GETCFG_TALKENCODE = (0x80000000 | 319);
+    NET_ERROR_GETCFG_TALKENCODE(0x80000000 | 319),
     /**
      * 设置语音对讲编码配置失败
      */
-    public static final int NET_ERROR_SETCFG_TALKENCODE = (0x80000000 | 320);
+    NET_ERROR_SETCFG_TALKENCODE(0x80000000 | 320),
     /**
      * 获取录像打包长度配置失败
      */
-    public static final int NET_ERROR_GETCFG_RECORDLEN = (0x80000000 | 321);
+    NET_ERROR_GETCFG_RECORDLEN(0x80000000 | 321),
     /**
      * 设置录像打包长度配置失败
      */
-    public static final int NET_ERROR_SETCFG_RECORDLEN = (0x80000000 | 322);
+    NET_ERROR_SETCFG_RECORDLEN(0x80000000 | 322),
     /**
      * 不支持网络硬盘分区
      */
-    public static final int NET_DONT_SUPPORT_SUBAREA = (0x80000000 | 323);
+    NET_DONT_SUPPORT_SUBAREA(0x80000000 | 323),
     /**
      * 获取设备上主动注册服务器信息失败
      */
-    public static final int NET_ERROR_GET_AUTOREGSERVER = (0x80000000 | 324);
+    NET_ERROR_GET_AUTOREGSERVER(0x80000000 | 324),
     /**
      * 主动注册重定向注册错误
      */
-    public static final int NET_ERROR_CONTROL_AUTOREGISTER = (0x80000000 | 325);
+    NET_ERROR_CONTROL_AUTOREGISTER(0x80000000 | 325),
     /**
      * 断开主动注册服务器错误
      */
-    public static final int NET_ERROR_DISCONNECT_AUTOREGISTER = (0x80000000 | 326);
+    NET_ERROR_DISCONNECT_AUTOREGISTER(0x80000000 | 326),
     /**
      * 获取mms配置失败
      */
-    public static final int NET_ERROR_GETCFG_MMS = (0x80000000 | 327);
+    NET_ERROR_GETCFG_MMS(0x80000000 | 327),
     /**
      * 设置mms配置失败
      */
-    public static final int NET_ERROR_SETCFG_MMS = (0x80000000 | 328);
+    NET_ERROR_SETCFG_MMS(0x80000000 | 328),
     /**
      * 获取短信激活无线连接配置失败
      */
-    public static final int NET_ERROR_GETCFG_SMSACTIVATION = (0x80000000 | 329);
+    NET_ERROR_GETCFG_SMSACTIVATION(0x80000000 | 329),
     /**
      * 设置短信激活无线连接配置失败
      */
-    public static final int NET_ERROR_SETCFG_SMSACTIVATION = (0x80000000 | 330);
+    NET_ERROR_SETCFG_SMSACTIVATION(0x80000000 | 330),
     /**
      * 获取拨号激活无线连接配置失败
      */
-    public static final int NET_ERROR_GETCFG_DIALINACTIVATION = (0x80000000 | 331);
+    NET_ERROR_GETCFG_DIALINACTIVATION(0x80000000 | 331),
     /**
      * 设置拨号激活无线连接配置失败
      */
-    public static final int NET_ERROR_SETCFG_DIALINACTIVATION = (0x80000000 | 332);
+    NET_ERROR_SETCFG_DIALINACTIVATION(0x80000000 | 332),
     /**
      * 查询视频输出参数配置失败
      */
-    public static final int NET_ERROR_GETCFG_VIDEOOUT = (0x80000000 | 333);
+    NET_ERROR_GETCFG_VIDEOOUT(0x80000000 | 333),
     /**
      * 设置视频输出参数配置失败
      */
-    public static final int NET_ERROR_SETCFG_VIDEOOUT = (0x80000000 | 334);
+    NET_ERROR_SETCFG_VIDEOOUT(0x80000000 | 334),
     /**
      * 获取osd叠加使能配置失败
      */
-    public static final int NET_ERROR_GETCFG_OSDENABLE = (0x80000000 | 335);
+    NET_ERROR_GETCFG_OSDENABLE(0x80000000 | 335),
     /**
      * 设置osd叠加使能配置失败
      */
-    public static final int NET_ERROR_SETCFG_OSDENABLE = (0x80000000 | 336);
+    NET_ERROR_SETCFG_OSDENABLE(0x80000000 | 336),
     /**
      * 设置数字通道前端编码接入配置失败
      */
-    public static final int NET_ERROR_SETCFG_ENCODERINFO = (0x80000000 | 337);
+    NET_ERROR_SETCFG_ENCODERINFO(0x80000000 | 337),
     /**
      * 获取TV调节配置失败
      */
-    public static final int NET_ERROR_GETCFG_TVADJUST = (0x80000000 | 338);
+    NET_ERROR_GETCFG_TVADJUST(0x80000000 | 338),
     /**
      * 设置TV调节配置失败
      */
-    public static final int NET_ERROR_SETCFG_TVADJUST = (0x80000000 | 339);
+    NET_ERROR_SETCFG_TVADJUST(0x80000000 | 339),
     /**
      * 请求建立连接失败
      */
-    public static final int NET_ERROR_CONNECT_FAILED = (0x80000000 | 340);
+    NET_ERROR_CONNECT_FAILED(0x80000000 | 340),
     /**
      * 请求刻录文件上传失败
      */
-    public static final int NET_ERROR_SETCFG_BURNFILE = (0x80000000 | 341);
+    NET_ERROR_SETCFG_BURNFILE(0x80000000 | 341),
     /**
      * 获取抓包配置信息失败
      */
-    public static final int NET_ERROR_SNIFFER_GETCFG = (0x80000000 | 342);
+    NET_ERROR_SNIFFER_GETCFG(0x80000000 | 342),
     /**
      * 设置抓包配置信息失败
      */
-    public static final int NET_ERROR_SNIFFER_SETCFG = (0x80000000 | 343);
+    NET_ERROR_SNIFFER_SETCFG(0x80000000 | 343),
     /**
      * 查询下载限制信息失败
      */
-    public static final int NET_ERROR_DOWNLOADRATE_GETCFG = (0x80000000 | 344);
+    NET_ERROR_DOWNLOADRATE_GETCFG(0x80000000 | 344),
     /**
      * 设置下载限制信息失败
      */
-    public static final int NET_ERROR_DOWNLOADRATE_SETCFG = (0x80000000 | 345);
+    NET_ERROR_DOWNLOADRATE_SETCFG(0x80000000 | 345),
     /**
      * 查询串口参数失败
      */
-    public static final int NET_ERROR_SEARCH_TRANSCOM = (0x80000000 | 346);
+    NET_ERROR_SEARCH_TRANSCOM(0x80000000 | 346),
     /**
      * 获取预制点信息错误
      */
-    public static final int NET_ERROR_GETCFG_POINT = (0x80000000 | 347);
+    NET_ERROR_GETCFG_POINT(0x80000000 | 347),
     /**
      * 设置预制点信息错误
      */
-    public static final int NET_ERROR_SETCFG_POINT = (0x80000000 | 348);
+    NET_ERROR_SETCFG_POINT(0x80000000 | 348),
     /**
      * SDK没有正常登出设备
      */
-    public static final int NET_SDK_LOGOUT_ERROR = (0x80000000 | 349);
+    NET_SDK_LOGOUT_ERROR(0x80000000 | 349),
     /**
      * 获取车载配置失败
      */
-    public static final int NET_ERROR_GET_VEHICLE_CFG = (0x80000000 | 350);
+    NET_ERROR_GET_VEHICLE_CFG(0x80000000 | 350),
     /**
      * 设置车载配置失败
      */
-    public static final int NET_ERROR_SET_VEHICLE_CFG = (0x80000000 | 351);
+    NET_ERROR_SET_VEHICLE_CFG(0x80000000 | 351),
     /**
      * 获取atm叠加配置失败
      */
-    public static final int NET_ERROR_GET_ATM_OVERLAY_CFG = (0x80000000 | 352);
+    NET_ERROR_GET_ATM_OVERLAY_CFG(0x80000000 | 352),
     /**
      * 设置atm叠加配置失败
      */
-    public static final int NET_ERROR_SET_ATM_OVERLAY_CFG = (0x80000000 | 353);
+    NET_ERROR_SET_ATM_OVERLAY_CFG(0x80000000 | 353),
     /**
      * 获取atm叠加能力失败
      */
-    public static final int NET_ERROR_GET_ATM_OVERLAY_ABILITY = (0x80000000 | 354);
+    NET_ERROR_GET_ATM_OVERLAY_ABILITY(0x80000000 | 354),
     /**
      * 获取解码器解码轮巡配置失败
      */
-    public static final int NET_ERROR_GET_DECODER_TOUR_CFG = (0x80000000 | 355);
+    NET_ERROR_GET_DECODER_TOUR_CFG(0x80000000 | 355),
     /**
      * 设置解码器解码轮巡配置失败
      */
-    public static final int NET_ERROR_SET_DECODER_TOUR_CFG = (0x80000000 | 356);
+    NET_ERROR_SET_DECODER_TOUR_CFG(0x80000000 | 356),
     /**
      * 控制解码器解码轮巡失败
      */
-    public static final int NET_ERROR_CTRL_DECODER_TOUR = (0x80000000 | 357);
+    NET_ERROR_CTRL_DECODER_TOUR(0x80000000 | 357),
     /**
      * 超出设备支持最大用户组数目
      */
-    public static final int NET_GROUP_OVERSUPPORTNUM = (0x80000000 | 358);
+    NET_GROUP_OVERSUPPORTNUM(0x80000000 | 358),
     /**
      * 超出设备支持最大用户数目
      */
-    public static final int NET_USER_OVERSUPPORTNUM = (0x80000000 | 359);
+    NET_USER_OVERSUPPORTNUM(0x80000000 | 359),
     /**
      * 获取SIP配置失败
      */
-    public static final int NET_ERROR_GET_SIP_CFG = (0x80000000 | 368);
+    NET_ERROR_GET_SIP_CFG(0x80000000 | 368),
     /**
      * 设置SIP配置失败
      */
-    public static final int NET_ERROR_SET_SIP_CFG = (0x80000000 | 369);
+    NET_ERROR_SET_SIP_CFG(0x80000000 | 369),
     /**
      * 获取SIP能力失败
      */
-    public static final int NET_ERROR_GET_SIP_ABILITY = (0x80000000 | 370);
+    NET_ERROR_GET_SIP_ABILITY(0x80000000 | 370),
     /**
      * 获取WIFI ap配置失败
      */
-    public static final int NET_ERROR_GET_WIFI_AP_CFG = (0x80000000 | 371);
+    NET_ERROR_GET_WIFI_AP_CFG(0x80000000 | 371),
     /**
      * 设置WIFI ap配置失败
      */
-    public static final int NET_ERROR_SET_WIFI_AP_CFG = (0x80000000 | 372);
+    NET_ERROR_SET_WIFI_AP_CFG(0x80000000 | 372),
     /**
      * 获取解码策略配置失败
      */
-    public static final int NET_ERROR_GET_DECODE_POLICY = (0x80000000 | 373);
+    NET_ERROR_GET_DECODE_POLICY(0x80000000 | 373),
     /**
      * 设置解码策略配置失败
      */
-    public static final int NET_ERROR_SET_DECODE_POLICY = (0x80000000 | 374);
+    NET_ERROR_SET_DECODE_POLICY(0x80000000 | 374),
     /**
      * 拒绝对讲
      */
-    public static final int NET_ERROR_TALK_REJECT = (0x80000000 | 375);
+    NET_ERROR_TALK_REJECT(0x80000000 | 375),
     /**
      * 对讲被其他客户端打开
      */
-    public static final int NET_ERROR_TALK_OPENED = (0x80000000 | 376);
+    NET_ERROR_TALK_OPENED(0x80000000 | 376),
     /**
      * 资源冲突
      */
-    public static final int NET_ERROR_TALK_RESOURCE_CONFLICIT = (0x80000000 | 377);
+    NET_ERROR_TALK_RESOURCE_CONFLICIT(0x80000000 | 377),
     /**
      * 不支持的语音编码格式
      */
-    public static final int NET_ERROR_TALK_UNSUPPORTED_ENCODE = (0x80000000 | 378);
+    NET_ERROR_TALK_UNSUPPORTED_ENCODE(0x80000000 | 378),
     /**
      * 无权限
      */
-    public static final int NET_ERROR_TALK_RIGHTLESS = (0x80000000 | 379);
+    NET_ERROR_TALK_RIGHTLESS(0x80000000 | 379),
     /**
      * 请求对讲失败
      */
-    public static final int NET_ERROR_TALK_FAILED = (0x80000000 | 380);
+    NET_ERROR_TALK_FAILED(0x80000000 | 380),
     /**
      * 获取机器相关配置失败
      */
-    public static final int NET_ERROR_GET_MACHINE_CFG = (0x80000000 | 381);
+    NET_ERROR_GET_MACHINE_CFG(0x80000000 | 381),
     /**
      * 设置机器相关配置失败
      */
-    public static final int NET_ERROR_SET_MACHINE_CFG = (0x80000000 | 382);
+    NET_ERROR_SET_MACHINE_CFG(0x80000000 | 382),
     /**
      * 设备无法获取当前请求数据
      */
-    public static final int NET_ERROR_GET_DATA_FAILED = (0x80000000 | 383);
+    NET_ERROR_GET_DATA_FAILED(0x80000000 | 383),
     /**
      * MAC地址验证失败
      */
-    public static final int NET_ERROR_MAC_VALIDATE_FAILED = (0x80000000 | 384);
+    NET_ERROR_MAC_VALIDATE_FAILED(0x80000000 | 384),
     /**
      * 获取服务器实例失败
      */
-    public static final int NET_ERROR_GET_INSTANCE = (0x80000000 | 385);
+    NET_ERROR_GET_INSTANCE(0x80000000 | 385),
     /**
      * 生成的json字符串错误
      */
-    public static final int NET_ERROR_JSON_REQUEST = (0x80000000 | 386);
+    NET_ERROR_JSON_REQUEST(0x80000000 | 386),
     /**
      * 响应的json字符串错误
      */
-    public static final int NET_ERROR_JSON_RESPONSE = (0x80000000 | 387);
+    NET_ERROR_JSON_RESPONSE(0x80000000 | 387),
     /**
      * 协议版本低于当前使用的版本
      */
-    public static final int NET_ERROR_VERSION_HIGHER = (0x80000000 | 388);
+    NET_ERROR_VERSION_HIGHER(0x80000000 | 388),
     /**
      * 热备操作失败, 容量不足
      */
-    public static final int NET_SPARE_NO_CAPACITY = (0x80000000 | 389);
+    NET_SPARE_NO_CAPACITY(0x80000000 | 389),
     /**
      * 显示源被其他输出占用
      */
-    public static final int NET_ERROR_SOURCE_IN_USE = (0x80000000 | 390);
+    NET_ERROR_SOURCE_IN_USE(0x80000000 | 390),
     /**
      * 高级用户抢占低级用户资源
      */
-    public static final int NET_ERROR_REAVE = (0x80000000 | 391);
+    NET_ERROR_REAVE(0x80000000 | 391),
     /**
      * 禁止入网
      */
-    public static final int NET_ERROR_NETFORBID = (0x80000000 | 392);
+    NET_ERROR_NETFORBID(0x80000000 | 392),
     /**
      * 获取MAC过滤配置失败
      */
-    public static final int NET_ERROR_GETCFG_MACFILTER = (0x80000000 | 393);
+    NET_ERROR_GETCFG_MACFILTER(0x80000000 | 393),
     /**
      * 设置MAC过滤配置失败
      */
-    public static final int NET_ERROR_SETCFG_MACFILTER = (0x80000000 | 394);
+    NET_ERROR_SETCFG_MACFILTER(0x80000000 | 394),
     /**
      * 获取IP/MAC过滤配置失败
      */
-    public static final int NET_ERROR_GETCFG_IPMACFILTER = (0x80000000 | 395);
+    NET_ERROR_GETCFG_IPMACFILTER(0x80000000 | 395),
     /**
      * 设置IP/MAC过滤配置失败
      */
-    public static final int NET_ERROR_SETCFG_IPMACFILTER = (0x80000000 | 396);
+    NET_ERROR_SETCFG_IPMACFILTER(0x80000000 | 396),
     /**
      * 当前操作超时
      */
-    public static final int NET_ERROR_OPERATION_OVERTIME = (0x80000000 | 397);
+    NET_ERROR_OPERATION_OVERTIME(0x80000000 | 397),
     /**
      * 高级校验失败
      */
-    public static final int NET_ERROR_SENIOR_VALIDATE_FAILED = (0x80000000 | 398);
+    NET_ERROR_SENIOR_VALIDATE_FAILED(0x80000000 | 398),
     /**
      * 设备ID不存在
      */
-    public static final int NET_ERROR_DEVICE_ID_NOT_EXIST = (0x80000000 | 399);
+    NET_ERROR_DEVICE_ID_NOT_EXIST(0x80000000 | 399),
     /**
      * 不支持当前操作
      */
-    public static final int NET_ERROR_UNSUPPORTED = (0x80000000 | 400);
+    NET_ERROR_UNSUPPORTED(0x80000000 | 400),
     /**
      * 代理库加载失败
      */
-    public static final int NET_ERROR_PROXY_DLLLOAD = (0x80000000 | 401);
+    NET_ERROR_PROXY_DLLLOAD(0x80000000 | 401),
     /**
      * 代理用户参数不合法
      */
-    public static final int NET_ERROR_PROXY_ILLEGAL_PARAM = (0x80000000 | 402);
+    NET_ERROR_PROXY_ILLEGAL_PARAM(0x80000000 | 402),
     /**
      * 代理句柄无效
      */
-    public static final int NET_ERROR_PROXY_INVALID_HANDLE = (0x80000000 | 403);
+    NET_ERROR_PROXY_INVALID_HANDLE(0x80000000 | 403),
     /**
      * 代理登入前端设备失败
      */
-    public static final int NET_ERROR_PROXY_LOGIN_DEVICE_ERROR = (0x80000000 | 404);
+    NET_ERROR_PROXY_LOGIN_DEVICE_ERROR(0x80000000 | 404),
     /**
      * 启动代理服务失败
      */
-    public static final int NET_ERROR_PROXY_START_SERVER_ERROR = (0x80000000 | 405);
+    NET_ERROR_PROXY_START_SERVER_ERROR(0x80000000 | 405),
     /**
      * 请求喊话失败
      */
-    public static final int NET_ERROR_SPEAK_FAILED = (0x80000000 | 406);
+    NET_ERROR_SPEAK_FAILED(0x80000000 | 406),
     /**
      * 设备不支持此F6接口调用
      */
-    public static final int NET_ERROR_NOT_SUPPORT_F6 = (0x80000000 | 407);
+    NET_ERROR_NOT_SUPPORT_F6(0x80000000 | 407),
     /**
      * 光盘未就绪
      */
-    public static final int NET_ERROR_CD_UNREADY = (0x80000000 | 408);
+    NET_ERROR_CD_UNREADY(0x80000000 | 408),
     /**
      * 目录不存在
      */
-    public static final int NET_ERROR_DIR_NOT_EXIST = (0x80000000 | 409);
+    NET_ERROR_DIR_NOT_EXIST(0x80000000 | 409),
     /**
      * 设备不支持的分割模式
      */
-    public static final int NET_ERROR_UNSUPPORTED_SPLIT_MODE = (0x80000000 | 410);
+    NET_ERROR_UNSUPPORTED_SPLIT_MODE(0x80000000 | 410),
     /**
      * 开窗参数不合法
      */
-    public static final int NET_ERROR_OPEN_WND_PARAM = (0x80000000 | 411);
+    NET_ERROR_OPEN_WND_PARAM(0x80000000 | 411),
     /**
      * 开窗数量超过限制
      */
-    public static final int NET_ERROR_LIMITED_WND_COUNT = (0x80000000 | 412);
+    NET_ERROR_LIMITED_WND_COUNT(0x80000000 | 412),
     /**
      * 请求命令与当前模式不匹配
      */
-    public static final int NET_ERROR_UNMATCHED_REQUEST = (0x80000000 | 413);
+    NET_ERROR_UNMATCHED_REQUEST(0x80000000 | 413),
     /**
      * Render库启用高清图像内部调整策略出错
      */
-    public static final int NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR = (0x80000000 | 414);
+    NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR(0x80000000 | 414),
     /**
      * 设备升级失败
      */
-    public static final int NET_ERROR_UPGRADE_FAILED = (0x80000000 | 415);
+    NET_ERROR_UPGRADE_FAILED(0x80000000 | 415),
     /**
      * 找不到目标设备
      */
-    public static final int NET_ERROR_NO_TARGET_DEVICE = (0x80000000 | 416);
+    NET_ERROR_NO_TARGET_DEVICE(0x80000000 | 416),
     /**
      * 找不到目标设备
      */
-    public static final int NET_ERROR_NO_VERIFY_DEVICE = (0x80000000 | 417);
+    NET_ERROR_NO_VERIFY_DEVICE(0x80000000 | 417),
     /**
      * 无级联权限
      */
-    public static final int NET_ERROR_CASCADE_RIGHTLESS = (0x80000000 | 418);
+    NET_ERROR_CASCADE_RIGHTLESS(0x80000000 | 418),
     /**
      * 低优先级
      */
-    public static final int NET_ERROR_LOW_PRIORITY = (0x80000000 | 419);
+    NET_ERROR_LOW_PRIORITY(0x80000000 | 419),
     /**
      * 远程设备请求超时
      */
-    public static final int NET_ERROR_REMOTE_REQUEST_TIMEOUT = (0x80000000 | 420);
+    NET_ERROR_REMOTE_REQUEST_TIMEOUT(0x80000000 | 420),
     /**
      * 输入源超出最大路数限制
      */
-    public static final int NET_ERROR_LIMITED_INPUT_SOURCE = (0x80000000 | 421);
+    NET_ERROR_LIMITED_INPUT_SOURCE(0x80000000 | 421),
     /**
      * 设置日志打印失败
      */
-    public static final int NET_ERROR_SET_LOG_PRINT_INFO = (0x80000000 | 422);
+    NET_ERROR_SET_LOG_PRINT_INFO(0x80000000 | 422),
     /**
      * 入参的dwsize字段出错
      */
-    public static final int NET_ERROR_PARAM_DWSIZE_ERROR = (0x80000000 | 423);
+    NET_ERROR_PARAM_DWSIZE_ERROR(0x80000000 | 423),
     /**
      * 电视墙数量超过上限
      */
-    public static final int NET_ERROR_LIMITED_MONITORWALL_COUNT = (0x80000000 | 424);
+    NET_ERROR_LIMITED_MONITORWALL_COUNT(0x80000000 | 424),
     /**
      * 部分过程执行失败
      */
-    public static final int NET_ERROR_PART_PROCESS_FAILED = (0x80000000 | 425);
+    NET_ERROR_PART_PROCESS_FAILED(0x80000000 | 425),
     /**
      * 该功能不支持转发
      */
-    public static final int NET_ERROR_TARGET_NOT_SUPPORT = (0x80000000 | 426);
+    NET_ERROR_TARGET_NOT_SUPPORT(0x80000000 | 426),
     /**
      * 访问文件失败
      */
-    public static final int NET_ERROR_VISITE_FILE = (0x80000000 | 510);
+    NET_ERROR_VISITE_FILE(0x80000000 | 510),
     /**
      * 设备忙
      */
-    public static final int NET_ERROR_DEVICE_STATUS_BUSY = (0x80000000 | 511);
+    NET_ERROR_DEVICE_STATUS_BUSY(0x80000000 | 511),
     /**
      * 修改密码无权限
      */
-    public static final int NET_USER_PWD_NOT_AUTHORIZED = (0x80000000 | 512);
+    NET_USER_PWD_NOT_AUTHORIZED(0x80000000 | 512),
     /**
      * 密码强度不够
      */
-    public static final int NET_USER_PWD_NOT_STRONG = (0x80000000 | 513);
+    NET_USER_PWD_NOT_STRONG(0x80000000 | 513),
     /**
      * 没有对应的配置
      */
-    public static final int NET_ERROR_NO_SUCH_CONFIG = (0x80000000 | 514);
+    NET_ERROR_NO_SUCH_CONFIG(0x80000000 | 514),
     /**
      * 录音失败
      */
-    public static final int NET_ERROR_AUDIO_RECORD_FAILED = (0x80000000 | 515);
+    NET_ERROR_AUDIO_RECORD_FAILED(0x80000000 | 515),
     /**
      * 数据发送失败
      */
-    public static final int NET_ERROR_SEND_DATA_FAILED = (0x80000000 | 516);
+    NET_ERROR_SEND_DATA_FAILED(0x80000000 | 516),
     /**
      * 废弃接口
      */
-    public static final int NET_ERROR_OBSOLESCENT_INTERFACE = (0x80000000 | 517);
+    NET_ERROR_OBSOLESCENT_INTERFACE(0x80000000 | 517),
     /**
      * 内部缓冲不足
      */
-    public static final int NET_ERROR_INSUFFICIENT_INTERAL_BUF = (0x80000000 | 518);
+    NET_ERROR_INSUFFICIENT_INTERAL_BUF(0x80000000 | 518),
     /**
      * 修改设备ip时,需要校验密码
      */
-    public static final int NET_ERROR_NEED_ENCRYPTION_PASSWORD = (0x80000000 | 519);
+    NET_ERROR_NEED_ENCRYPTION_PASSWORD(0x80000000 | 519),
     /**
      * 数据序列化错误
      */
-    public static final int NET_ERROR_SERIALIZE_ERROR = (0x80000000 | 1010);
+    NET_ERROR_SERIALIZE_ERROR(0x80000000 | 1010),
     /**
      * 数据反序列化错误
      */
-    public static final int NET_ERROR_DESERIALIZE_ERROR = (0x80000000 | 1011);
+    NET_ERROR_DESERIALIZE_ERROR(0x80000000 | 1011),
     /**
      * 该无线ID已存在
      */
-    public static final int NET_ERROR_LOWRATEWPAN_ID_EXISTED = (0x80000000 | 1012);
+    NET_ERROR_LOWRATEWPAN_ID_EXISTED(0x80000000 | 1012),
     /**
      * 无线ID数量已超限
      */
-    public static final int NET_ERROR_LOWRATEWPAN_ID_LIMIT = (0x80000000 | 1013);
+    NET_ERROR_LOWRATEWPAN_ID_LIMIT(0x80000000 | 1013),
     /**
      * 无线异常添加
      */
-    public static final int NET_ERROR_LOWRATEWPAN_ID_ABNORMAL = (0x80000000 | 1014);
+    NET_ERROR_LOWRATEWPAN_ID_ABNORMAL(0x80000000 | 1014);
+
+    final int code;
+
+    ErrorCode(int code) {
+        this.code = code;
+    }
+
+    public static ErrorCode of(int code) {
+        for (ErrorCode err : ErrorCode.values()) {
+            if (err.code == code) {
+                return err;
+            }
+        }
+        return NET_ERROR;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getMessage() {
+        return MessageBundle.instance().getString(name());
+    }
+
+    @Override
+    public String toString() {
+        return "[" + name() + ']' + getMessage();
+    }
 }

+ 75 - 0
src/main/java/com/usoftchina/ss/dahua/lib/FaceRecognitionService.java

@@ -0,0 +1,75 @@
+package com.usoftchina.ss.dahua.lib;
+
+/**
+ * 人脸识别
+ *
+ * @author yingp
+ * @date 2019/2/27
+ */
+public class FaceRecognitionService {
+
+    private final INetSdk sdk;
+
+    public FaceRecognitionService(INetSdk sdk) {
+        this.sdk = sdk;
+    }
+
+    /**
+     * 添加
+     */
+    public boolean add(String id, String name, Sex sex) {
+        NetSdkLib.FACERECOGNITION_PERSON_INFO info = new NetSdkLib.FACERECOGNITION_PERSON_INFO();
+        info.szID = id.getBytes();
+        info.bySex = sex.getValue();
+        info.wFacePicNum = 1;
+        info.byType = PersonType.PERSON_TYPE_NORMAL;
+        info.byIDType = CertificateType.CERTIFICATE_TYPE_IC;
+        info.szPersonNameEx = name.getBytes();
+
+        NetSdkLib.NET_IN_OPERATE_FACERECONGNITIONDB operateIn = new NetSdkLib.NET_IN_OPERATE_FACERECONGNITIONDB();
+        operateIn.stPersonInfo = info;
+        operateIn.emOperateType = OperateType.NET_FACERECONGNITIONDB_ADD;
+
+        NetSdkLib.NET_OUT_OPERATE_FACERECONGNITIONDB operateOut = new NetSdkLib.NET_OUT_OPERATE_FACERECONGNITIONDB();
+        boolean bRet = sdk.getInstance().CLIENT_OperateFaceRecognitionDB(sdk.getLoginHandle(),
+                operateIn, operateOut, 5000);
+        if (!bRet) {
+            System.err.println(sdk.getLastError());
+        }
+        return bRet;
+    }
+
+    public enum Sex {
+        UNKNOWN((byte) 0), MALE((byte) 1), FEMALE((byte) 2);
+
+        final byte value;
+
+        Sex(byte value) {
+            this.value = value;
+        }
+
+        public byte getValue() {
+            return value;
+        }
+    }
+
+    class OperateType {
+        public static final int NET_FACERECONGNITIONDB_UNKOWN = 0;
+        /**
+         * 添加人员信息和人脸样本,如果人员已经存在,图片数据和原来的数据合并
+         */
+        public static final int NET_FACERECONGNITIONDB_ADD = 1;
+        /**
+         * 删除人员信息和人脸样本
+         */
+        public static final int NET_FACERECONGNITIONDB_DELETE = 2;
+        /**
+         * 修改人员信息和人脸样本,人员的UID标识必填
+         */
+        public static final int NET_FACERECONGNITIONDB_MODIFY = 3;
+        /**
+         * 通过UID删除人员信息和人脸样本
+         */
+        public static final int NET_FACERECONGNITIONDB_DELETE_BY_UID = 4;
+    }
+}

+ 50 - 3
src/main/java/com/usoftchina/ss/dahua/lib/INetSdk.java

@@ -1,11 +1,11 @@
 package com.usoftchina.ss.dahua.lib;
 
+import com.sun.jna.Memory;
 import com.sun.jna.Native;
 import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 
-import java.util.Arrays;
-
 /**
  * @author yingp
  * @date 2019/2/15
@@ -15,7 +15,7 @@ public class INetSdk {
     private final NetSdkLib instance;
 
     public INetSdk() {
-        this.instance = (NetSdkLib) Native.load("dhnetsdk", NetSdkLib.class);
+        this.instance = Native.load("dhnetsdk", NetSdkLib.class);
     }
 
     private boolean initialized;
@@ -42,6 +42,23 @@ public class INetSdk {
      */
     private NetSdkLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSdkLib.NET_DEVICEINFO_Ex();
 
+
+    public NetSdkLib getInstance() {
+        return instance;
+    }
+
+    public NativeLong getLoginHandle() {
+        return m_hLoginHandle;
+    }
+
+    public boolean isLoggedIn() {
+        return m_hLoginHandle.longValue() != 0;
+    }
+
+    public ErrorCode getLastError() {
+        return ErrorCode.of(instance.CLIENT_GetLastError());
+    }
+
     /**
      * 初始化
      *
@@ -135,4 +152,34 @@ public class INetSdk {
         return bRet;
     }
 
+    /**
+     * 获取SDK的版本号
+     *
+     * @return
+     */
+    public int getVersion() {
+        return instance.CLIENT_GetSDKVersion();
+    }
+
+    /**
+     * 获取前端设备的当前工作状态
+     */
+    public void getDevState() {
+        if (m_hLoginHandle.longValue() == 0) {
+            return;
+        }
+        int nBufLen = 1024*1024;
+        Memory pBuf = new Memory(nBufLen);
+        pBuf.clear();
+        IntByReference pRetLen = new IntByReference();
+        boolean bRet = instance.CLIENT_QueryRemotDevState(m_hLoginHandle, DeviceStateType.DH_DEVSTATE_TYPE, 0,
+                pBuf, nBufLen, pRetLen, 5000);
+        if (bRet) {
+            System.out.println(pBuf.dump());
+            System.out.println(pRetLen.getValue());
+        } else {
+            System.err.println("error");
+        }
+    }
+
 }

+ 153 - 1
src/main/java/com/usoftchina/ss/dahua/lib/NetSdkLib.java

@@ -65,6 +65,11 @@ public interface NetSdkLib extends Library {
      */
     int MAX_FACE_DB_NUM = 8;
 
+    /**
+     * 最大硬盘个数
+     */
+    int DH_MAX_DISKNUM = 256;
+
     /*******************SDK初始化*******************/
 
     /**
@@ -309,6 +314,130 @@ public interface NetSdkLib extends Library {
     boolean CLIENT_QueryRemotDevState(NativeLong lLoginID, int nType, int nChannelID, Pointer pBuf, int nBufLen,
                                       IntByReference pRetLen, int waittime);
 
+    /**
+     * 普通报警信息扩展结构体
+     */
+    class NET_CLIENT_STATE_EX extends Structure {
+        /**
+         * 通道数
+         */
+        public int channelcount;
+        /**
+         * 报警输入口数
+         */
+        public int alarminputcount;
+        /**
+         * 外部报警
+         */
+        public byte[] alarm = new byte[32];
+        /**
+         * 动态检测
+         */
+        public byte[] motiondection = new byte[32];
+        /**
+         * 视频丢失
+         */
+        public byte[] videolost = new byte[32];
+        /**
+         * 扩展字段
+         */
+        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) +
+                    '}';
+        }
+    }
+
+    /**
+     * 硬盘信息
+     */
+    class NET_DEV_DISKSTATE extends Structure {
+        /**
+         * 硬盘的容量
+         */
+        public int dwVolume;
+        /**
+         * 硬盘的剩余空间
+         */
+        public int dwFreeSpace;
+        /**
+         * 高四位的值表示硬盘类型,具体见表说明;低四位的值表示硬盘的状态,0-休眠,1-活动,2-故障等;将DWORD拆成四个BYTE
+         * @see DiskType
+         */
+        public byte dwStatus;
+        /**
+         * 硬盘号
+         */
+        public byte bDiskNum;
+        /**
+         * 分区号
+         */
+        public byte bSubareaNum;
+        /**
+         * 标识,0为本地 1为远程
+         */
+        public byte bSignal;
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Collections.unmodifiableList(Arrays.asList("bDiskNum", "bSignal", "bSubareaNum", "dwFreeSpace",
+                    "dwStatus", "dwVolume"));
+        }
+
+        @Override
+        public String toString() {
+            return "NET_DEV_DISKSTATE{" +
+                    "dwVolume=" + dwVolume +
+                    ", dwFreeSpace=" + dwFreeSpace +
+                    ", dwStatus=" + dwStatus +
+                    ", bDiskNum=" + bDiskNum +
+                    ", bSubareaNum=" + bSubareaNum +
+                    ", bSignal=" + bSignal +
+                    '}';
+        }
+    }
+
+    /**
+     * 设备硬盘信息
+     */
+    class DH_HARDDISK_STATE extends Structure {
+        /**
+         * 硬盘或者分区个数个数
+         */
+        public int dwDiskNum;
+        /**
+         * 硬盘或分区信息
+         */
+        public NET_DEV_DISKSTATE[] stDisks = (NET_DEV_DISKSTATE[]) new NET_DEV_DISKSTATE().toArray(DH_MAX_DISKNUM);
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Collections.unmodifiableList(Arrays.asList("dwDiskNum", "stDisks"));
+        }
+
+        @Override
+        public String toString() {
+            return "DH_HARDDISK_STATE{" +
+                    "dwDiskNum=" + dwDiskNum +
+                    ", stDisks=" + Arrays.toString(stDisks) +
+                    '}';
+        }
+    }
+
     /*******************人脸识别*******************/
 
     /**
@@ -396,6 +525,12 @@ public interface NetSdkLib extends Library {
         public NET_IN_OPERATE_FACERECONGNITIONDB() {
             this.dwSize = this.size();
         }
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Collections.unmodifiableList(Arrays.asList("dwSize", "emOperateType", "nBufferLen", "pBuffer",
+                    "stPersonInfo"));
+        }
     }
 
     /**
@@ -472,6 +607,13 @@ public interface NetSdkLib extends Library {
          * 保留字段
          */
         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"));
+        }
     }
 
     /**
@@ -498,6 +640,11 @@ public interface NetSdkLib extends Library {
          * 保留字节
          */
         public byte[] bReserved = new byte[7];
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Collections.unmodifiableList(Arrays.asList("bReserved", "dwFileLenth", "dwOffSet", "wHeight", "wWidth"));
+        }
     }
 
     /**
@@ -509,6 +656,11 @@ public interface NetSdkLib extends Library {
         public NET_OUT_OPERATE_FACERECONGNITIONDB() {
             this.dwSize = this.size();
         }
+
+        @Override
+        protected List<String> getFieldOrder() {
+            return Collections.unmodifiableList(Arrays.asList("dwSize"));
+        }
     }
 
     /**
@@ -888,7 +1040,7 @@ public interface NetSdkLib extends Library {
      * @param subParam     设置用户信息的辅助输入缓冲,当设置类型为修改信息的时候,此处应传进来部分原始用户信息,具体见上面nOperateType说明
      * @param waittime     等待时间
      * @return
-     * @see OperateType
+     * @see UserOperateType
      */
     boolean CLIENT_OperateUserInfoEx(NativeLong lLoginID, int nOperateType, Pointer opParam, Pointer subParam, int waittime);
 }

+ 1 - 1
src/main/java/com/usoftchina/ss/dahua/lib/OperateType.java → src/main/java/com/usoftchina/ss/dahua/lib/UserOperateType.java

@@ -6,7 +6,7 @@ package com.usoftchina.ss.dahua.lib;
  * @author yingp
  * @date 2019/2/27
  */
-public class OperateType {
+public class UserOperateType {
     /**
      * 增加用户组
      * <p>USER_GROUP_INFO_EX</p>

+ 0 - 1
src/main/java/com/usoftchina/ss/dahua/package-info.java

@@ -1 +0,0 @@
-package com.usoftchina.ss.dahua;

+ 256 - 0
src/main/resources/message_zh_CN.properties

@@ -0,0 +1,256 @@
+NET_NOERROR=\u6ca1\u6709\u9519\u8bef
+NET_ERROR=\u672a\u77e5\u9519\u8bef
+NET_SYSTEM_ERROR=Windows\u7cfb\u7edf\u51fa\u9519
+NET_NETWORK_ERROR=\u7f51\u7edc\u9519\u8bef\uff0c\u53ef\u80fd\u662f\u56e0\u4e3a\u7f51\u7edc\u8d85\u65f6
+NET_DEV_VER_NOMATCH=\u8bbe\u5907\u534f\u8bae\u4e0d\u5339\u914d
+NET_INVALID_HANDLE=\u53e5\u67c4\u65e0\u6548
+NET_OPEN_CHANNEL_ERROR=\u6253\u5f00\u901a\u9053\u5931\u8d25
+NET_CLOSE_CHANNEL_ERROR=\u5173\u95ed\u901a\u9053\u5931\u8d25
+NET_ILLEGAL_PARAM=\u7528\u6237\u53c2\u6570\u4e0d\u5408\u6cd5
+NET_SDK_INIT_ERROR=SDK\u521d\u59cb\u5316\u51fa\u9519
+NET_SDK_UNINIT_ERROR=SDK\u6e05\u7406\u51fa\u9519
+NET_RENDER_OPEN_ERROR=\u7533\u8bf7render\u8d44\u6e90\u51fa\u9519
+NET_DEC_OPEN_ERROR=\u6253\u5f00\u89e3\u7801\u5e93\u51fa\u9519
+NET_DEC_CLOSE_ERROR=\u5173\u95ed\u89e3\u7801\u5e93\u51fa\u9519
+NET_MULTIPLAY_NOCHANNEL=\u591a\u753b\u9762\u9884\u89c8\u4e2d\u68c0\u6d4b\u5230\u901a\u9053\u6570\u4e3a0
+NET_TALK_INIT_ERROR=\u5f55\u97f3\u5e93\u521d\u59cb\u5316\u5931\u8d25
+NET_TALK_NOT_INIT=\u5f55\u97f3\u5e93\u672a\u7ecf\u521d\u59cb\u5316
+NET_TALK_SENDDATA_ERROR=\u53d1\u9001\u97f3\u9891\u6570\u636e\u51fa\u9519
+NET_REAL_ALREADY_SAVING=\u5b9e\u65f6\u6570\u636e\u5df2\u7ecf\u5904\u4e8e\u4fdd\u5b58\u72b6\u6001
+NET_NOT_SAVING=\u672a\u4fdd\u5b58\u5b9e\u65f6\u6570\u636e
+NET_OPEN_FILE_ERROR=\u6253\u5f00\u6587\u4ef6\u51fa\u9519
+NET_PTZ_SET_TIMER_ERROR=\u542f\u52a8\u4e91\u53f0\u63a7\u5236\u5b9a\u65f6\u5668\u5931\u8d25
+NET_RETURN_DATA_ERROR=\u5bf9\u8fd4\u56de\u6570\u636e\u7684\u6821\u9a8c\u51fa\u9519
+NET_INSUFFICIENT_BUFFER=\u6ca1\u6709\u8db3\u591f\u7684\u7f13\u5b58
+NET_NOT_SUPPORTED=\u5f53\u524dSDK\u672a\u652f\u6301\u8be5\u529f\u80fd
+NET_NO_RECORD_FOUND=\u67e5\u8be2\u4e0d\u5230\u5f55\u50cf
+NET_NOT_AUTHORIZED=\u65e0\u64cd\u4f5c\u6743\u9650
+NET_NOT_NOW=\u6682\u65f6\u65e0\u6cd5\u6267\u884c
+NET_NO_TALK_CHANNEL=\u672a\u53d1\u73b0\u5bf9\u8bb2\u901a\u9053
+NET_NO_AUDIO=\u672a\u53d1\u73b0\u97f3\u9891
+NET_NO_INIT=\u7f51\u7edcSDK\u672a\u7ecf\u521d\u59cb\u5316
+NET_DOWNLOAD_END=\u4e0b\u8f7d\u5df2\u7ed3\u675f
+NET_EMPTY_LIST=\u67e5\u8be2\u7ed3\u679c\u4e3a\u7a7a
+NET_ERROR_GETCFG_SYSATTR=\u83b7\u53d6\u7cfb\u7edf\u5c5e\u6027\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_SERIAL=\u83b7\u53d6\u5e8f\u5217\u53f7\u5931\u8d25
+NET_ERROR_GETCFG_GENERAL=\u83b7\u53d6\u5e38\u89c4\u5c5e\u6027\u5931\u8d25
+NET_ERROR_GETCFG_DSPCAP=\u83b7\u53d6DSP\u80fd\u529b\u63cf\u8ff0\u5931\u8d25
+NET_ERROR_GETCFG_NETCFG=\u83b7\u53d6\u7f51\u7edc\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_CHANNAME=\u83b7\u53d6\u901a\u9053\u540d\u79f0\u5931\u8d25
+NET_ERROR_GETCFG_VIDEO=\u83b7\u53d6\u89c6\u9891\u5c5e\u6027\u5931\u8d25
+NET_ERROR_GETCFG_RECORD=\u83b7\u53d6\u5f55\u8c61\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_PRONAME=\u83b7\u53d6\u89e3\u7801\u5668\u534f\u8bae\u540d\u79f0\u5931\u8d25
+NET_ERROR_GETCFG_FUNCNAME=\u83b7\u53d6232\u4e32\u53e3\u529f\u80fd\u540d\u79f0\u5931\u8d25
+NET_ERROR_GETCFG_485DECODER=\u83b7\u53d6\u89e3\u7801\u5668\u5c5e\u6027\u5931\u8d25
+NET_ERROR_GETCFG_232COM=\u83b7\u53d6232\u4e32\u53e3\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_ALARMIN=\u83b7\u53d6\u5916\u90e8\u62a5\u8b66\u8f93\u5165\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_ALARMDET=\u83b7\u53d6\u52a8\u6001\u68c0\u6d4b\u62a5\u8b66\u5931\u8d25
+NET_ERROR_GETCFG_SYSTIME=\u83b7\u53d6\u8bbe\u5907\u65f6\u95f4\u5931\u8d25
+NET_ERROR_GETCFG_PREVIEW=\u83b7\u53d6\u9884\u89c8\u53c2\u6570\u5931\u8d25
+NET_ERROR_GETCFG_AUTOMT=\u83b7\u53d6\u81ea\u52a8\u7ef4\u62a4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_VIDEOMTRX=\u83b7\u53d6\u89c6\u9891\u77e9\u9635\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_COVER=\u83b7\u53d6\u533a\u57df\u906e\u6321\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_WATERMAKE=\u83b7\u53d6\u56fe\u8c61\u6c34\u5370\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_GENERAL=\u4fee\u6539\u5e38\u89c4\u5c5e\u6027\u5931\u8d25
+NET_ERROR_SETCFG_NETCFG=\u4fee\u6539\u7f51\u7edc\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_CHANNAME=\u4fee\u6539\u901a\u9053\u540d\u79f0\u5931\u8d25
+NET_ERROR_SETCFG_VIDEO=\u4fee\u6539\u89c6\u9891\u5c5e\u6027\u5931\u8d25
+NET_ERROR_SETCFG_RECORD=\u4fee\u6539\u5f55\u50cf\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_485DECODER=\u4fee\u6539\u89e3\u7801\u5668\u5c5e\u6027\u5931\u8d25
+NET_ERROR_SETCFG_232COM=\u4fee\u6539232\u4e32\u53e3\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_ALARMIN=\u4fee\u6539\u5916\u90e8\u8f93\u5165\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_ALARMDET=\u4fee\u6539\u52a8\u6001\u68c0\u6d4b\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_SYSTIME=\u4fee\u6539\u8bbe\u5907\u65f6\u95f4\u5931\u8d25
+NET_ERROR_SETCFG_PREVIEW=\u4fee\u6539\u9884\u89c8\u53c2\u6570\u5931\u8d25
+NET_ERROR_SETCFG_AUTOMT=\u4fee\u6539\u81ea\u52a8\u7ef4\u62a4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_VIDEOMTRX=\u4fee\u6539\u89c6\u9891\u77e9\u9635\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_COVER=\u4fee\u6539\u533a\u57df\u906e\u6321\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_WATERMAKE=\u4fee\u6539\u56fe\u8c61\u6c34\u5370\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_WLAN=\u4fee\u6539\u65e0\u7ebf\u7f51\u7edc\u4fe1\u606f\u5931\u8d25
+NET_ERROR_SETCFG_WLANDEV=\u9009\u62e9\u65e0\u7ebf\u7f51\u7edc\u8bbe\u5907\u5931\u8d25
+NET_ERROR_SETCFG_REGISTER=\u4fee\u6539\u4e3b\u52a8\u6ce8\u518c\u53c2\u6570\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_CAMERA=\u4fee\u6539\u6444\u50cf\u5934\u5c5e\u6027\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_INFRARED=\u4fee\u6539\u7ea2\u5916\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_SOUNDALARM=\u4fee\u6539\u97f3\u9891\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_STORAGE=\u4fee\u6539\u5b58\u50a8\u4f4d\u7f6e\u914d\u7f6e\u5931\u8d25
+NET_AUDIOENCODE_NOTINIT=\u97f3\u9891\u7f16\u7801\u63a5\u53e3\u6ca1\u6709\u6210\u529f\u521d\u59cb\u5316
+NET_DATA_TOOLONGH=\u6570\u636e\u8fc7\u957f
+NET_UNSUPPORTED=\u8bbe\u5907\u4e0d\u652f\u6301\u8be5\u64cd\u4f5c
+NET_DEVICE_BUSY=\u8bbe\u5907\u8d44\u6e90\u4e0d\u8db3
+NET_SERVER_STARTED(=\u670d\u52a1\u5668\u5df2\u7ecf\u542f\u52a8
+NET_SERVER_STOPPED=\u670d\u52a1\u5668\u5c1a\u672a\u6210\u529f\u542f\u52a8
+NET_LISTER_INCORRECT_SERIAL=\u8f93\u5165\u5e8f\u5217\u53f7\u6709\u8bef
+NET_QUERY_DISKINFO_FAILED=\u83b7\u53d6\u786c\u76d8\u4fe1\u606f\u5931\u8d25
+NET_ERROR_GETCFG_SESSION=\u83b7\u53d6\u8fde\u63a5Session\u4fe1\u606f
+NET_USER_FLASEPWD_TRYTIME=\u8f93\u5165\u5bc6\u7801\u9519\u8bef\u8d85\u8fc7\u9650\u5236\u6b21\u6570
+NET_LOGIN_ERROR_PASSWORD=\u5bc6\u7801\u4e0d\u6b63\u786e
+NET_LOGIN_ERROR_USER=\u5e10\u6237\u4e0d\u5b58\u5728
+NET_LOGIN_ERROR_TIMEOUT=\u7b49\u5f85\u767b\u5f55\u8fd4\u56de\u8d85\u65f6
+NET_LOGIN_ERROR_RELOGGIN=\u5e10\u53f7\u5df2\u767b\u5f55
+NET_LOGIN_ERROR_LOCKED=\u5e10\u53f7\u5df2\u88ab\u9501\u5b9a
+NET_LOGIN_ERROR_BLACKLIST=\u5e10\u53f7\u5df2\u88ab\u5217\u4e3a\u9ed1\u540d\u5355
+NET_LOGIN_ERROR_BUSY=\u8d44\u6e90\u4e0d\u8db3\uff0c\u7cfb\u7edf\u5fd9
+NET_LOGIN_ERROR_CONNECT=\u767b\u5f55\u8bbe\u5907\u8d85\u65f6\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u5e76\u91cd\u8bd5
+NET_LOGIN_ERROR_NETWORK=\u7f51\u7edc\u8fde\u63a5\u5931\u8d25
+NET_LOGIN_ERROR_SUBCONNECT=\u767b\u5f55\u8bbe\u5907\u6210\u529f\uff0c\u4f46\u65e0\u6cd5\u521b\u5efa\u89c6\u9891\u901a\u9053\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u72b6\u51b5
+NET_LOGIN_ERROR_MAXCONNECT=\u8d85\u8fc7\u6700\u5927\u8fde\u63a5\u6570
+NET_LOGIN_ERROR_PROTOCOL3_ONLY=\u53ea\u652f\u63013\u4ee3\u534f\u8bae
+NET_LOGIN_ERROR_UKEY_LOST=\u672a\u63d2\u5165U\u76fe\u6216U\u76fe\u4fe1\u606f\u9519\u8bef
+NET_LOGIN_ERROR_NO_AUTHORIZED=\u5ba2\u6237\u7aefIP\u5730\u5740\u6ca1\u6709\u767b\u5f55\u6743\u9650
+NET_LOGIN_ERROR_USER_OR_PASSOWRD=\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef
+NET_RENDER_SOUND_ON_ERROR=Render\u5e93\u6253\u5f00\u97f3\u9891\u51fa\u9519
+NET_RENDER_SOUND_OFF_ERROR=Render\u5e93\u5173\u95ed\u97f3\u9891\u51fa\u9519
+NET_RENDER_SET_VOLUME_ERROR=Render\u5e93\u63a7\u5236\u97f3\u91cf\u51fa\u9519
+NET_RENDER_ADJUST_ERROR=Render\u5e93\u8bbe\u7f6e\u753b\u9762\u53c2\u6570\u51fa\u9519
+NET_RENDER_PAUSE_ERROR=Render\u5e93\u6682\u505c\u64ad\u653e\u51fa\u9519
+NET_RENDER_SNAP_ERROR=Render\u5e93\u6293\u56fe\u51fa\u9519
+NET_RENDER_STEP_ERROR=Render\u5e93\u6b65\u8fdb\u51fa\u9519
+NET_RENDER_FRAMERATE_ERROR=Render\u5e93\u8bbe\u7f6e\u5e27\u7387\u51fa\u9519
+NET_RENDER_DISPLAYREGION_ERROR=Render\u5e93\u8bbe\u7f6e\u663e\u793a\u533a\u57df\u51fa\u9519
+NET_GROUP_EXIST=\u7ec4\u540d\u5df2\u5b58\u5728
+NET_GROUP_NOEXIST=\u7ec4\u540d\u4e0d\u5b58\u5728
+NET_GROUP_RIGHTOVER=\u7ec4\u7684\u6743\u9650\u8d85\u51fa\u6743\u9650\u5217\u8868\u8303\u56f4
+NET_GROUP_HAVEUSER=\u7ec4\u4e0b\u6709\u7528\u6237\uff0c\u4e0d\u80fd\u5220\u9664
+NET_GROUP_RIGHTUSE=\u7ec4\u7684\u67d0\u4e2a\u6743\u9650\u88ab\u7528\u6237\u4f7f\u7528\uff0c\u4e0d\u80fd\u51fa\u9664
+NET_GROUP_SAMENAME=\u65b0\u7ec4\u540d\u540c\u5df2\u6709\u7ec4\u540d\u91cd\u590d
+NET_USER_EXIST=\u7528\u6237\u5df2\u5b58\u5728
+NET_USER_NOEXIST=\u7528\u6237\u4e0d\u5b58\u5728
+NET_USER_RIGHTOVER=\u7528\u6237\u6743\u9650\u8d85\u51fa\u7ec4\u6743\u9650
+NET_USER_PWD=\u4fdd\u7559\u5e10\u53f7\uff0c\u4e0d\u5bb9\u8bb8\u4fee\u6539\u5bc6\u7801
+NET_USER_FLASEPWD=\u5bc6\u7801\u4e0d\u6b63\u786e
+NET_USER_NOMATCHING=\u5bc6\u7801\u4e0d\u5339\u914d
+NET_USER_INUSE=\u8d26\u53f7\u6b63\u5728\u4f7f\u7528\u4e2d
+NET_ERROR_GETCFG_ETHERNET=\u83b7\u53d6\u7f51\u5361\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_WLAN=\u83b7\u53d6\u65e0\u7ebf\u7f51\u7edc\u4fe1\u606f\u5931\u8d25
+NET_ERROR_GETCFG_WLANDEV=\u83b7\u53d6\u65e0\u7ebf\u7f51\u7edc\u8bbe\u5907\u5931\u8d25
+NET_ERROR_GETCFG_REGISTER=\u83b7\u53d6\u4e3b\u52a8\u6ce8\u518c\u53c2\u6570\u5931\u8d25
+NET_ERROR_GETCFG_CAMERA=\u83b7\u53d6\u6444\u50cf\u5934\u5c5e\u6027\u5931\u8d25
+NET_ERROR_GETCFG_INFRARED=\u83b7\u53d6\u7ea2\u5916\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_SOUNDALARM=\u83b7\u53d6\u97f3\u9891\u62a5\u8b66\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_STORAGE=\u83b7\u53d6\u5b58\u50a8\u4f4d\u7f6e\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_MAIL=\u83b7\u53d6\u90ae\u4ef6\u914d\u7f6e\u5931\u8d25
+NET_CONFIG_DEVBUSY=\u6682\u65f6\u65e0\u6cd5\u8bbe\u7f6e
+NET_CONFIG_DATAILLEGAL=\u914d\u7f6e\u6570\u636e\u4e0d\u5408\u6cd5
+NET_ERROR_GETCFG_DST=\u83b7\u53d6\u590f\u4ee4\u65f6\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_DST=\u8bbe\u7f6e\u590f\u4ee4\u65f6\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_VIDEO_OSD=\u83b7\u53d6\u89c6\u9891OSD\u53e0\u52a0\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_VIDEO_OSD=\u8bbe\u7f6e\u89c6\u9891OSD\u53e0\u52a0\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_GPRSCDMA=\u83b7\u53d6CDMA\GPRS\u7f51\u7edc\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_GPRSCDMA=\u8bbe\u7f6eCDMA\GPRS\u7f51\u7edc\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_IPFILTER=\u83b7\u53d6IP\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_IPFILTER=\u8bbe\u7f6eIP\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_TALKENCODE=\u83b7\u53d6\u8bed\u97f3\u5bf9\u8bb2\u7f16\u7801\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_TALKENCODE=\u8bbe\u7f6e\u8bed\u97f3\u5bf9\u8bb2\u7f16\u7801\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_RECORDLEN=\u83b7\u53d6\u5f55\u50cf\u6253\u5305\u957f\u5ea6\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_RECORDLEN=\u8bbe\u7f6e\u5f55\u50cf\u6253\u5305\u957f\u5ea6\u914d\u7f6e\u5931\u8d25
+NET_DONT_SUPPORT_SUBAREA=\u4e0d\u652f\u6301\u7f51\u7edc\u786c\u76d8\u5206\u533a
+NET_ERROR_GET_AUTOREGSERVER=\u83b7\u53d6\u8bbe\u5907\u4e0a\u4e3b\u52a8\u6ce8\u518c\u670d\u52a1\u5668\u4fe1\u606f\u5931\u8d25
+NET_ERROR_CONTROL_AUTOREGISTER=\u4e3b\u52a8\u6ce8\u518c\u91cd\u5b9a\u5411\u6ce8\u518c\u9519\u8bef
+NET_ERROR_DISCONNECT_AUTOREGISTER=\u65ad\u5f00\u4e3b\u52a8\u6ce8\u518c\u670d\u52a1\u5668\u9519\u8bef
+NET_ERROR_GETCFG_MMS=\u83b7\u53d6mms\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_MMS=\u8bbe\u7f6emms\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_SMSACTIVATION=\u83b7\u53d6\u77ed\u4fe1\u6fc0\u6d3b\u65e0\u7ebf\u8fde\u63a5\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_SMSACTIVATION=\u8bbe\u7f6e\u77ed\u4fe1\u6fc0\u6d3b\u65e0\u7ebf\u8fde\u63a5\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_DIALINACTIVATION=\u83b7\u53d6\u62e8\u53f7\u6fc0\u6d3b\u65e0\u7ebf\u8fde\u63a5\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_DIALINACTIVATION=\u8bbe\u7f6e\u62e8\u53f7\u6fc0\u6d3b\u65e0\u7ebf\u8fde\u63a5\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_VIDEOOUT=\u67e5\u8be2\u89c6\u9891\u8f93\u51fa\u53c2\u6570\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_VIDEOOUT=\u8bbe\u7f6e\u89c6\u9891\u8f93\u51fa\u53c2\u6570\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_OSDENABLE=\u83b7\u53d6osd\u53e0\u52a0\u4f7f\u80fd\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_OSDENABLE=\u8bbe\u7f6eosd\u53e0\u52a0\u4f7f\u80fd\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_ENCODERINFO=\u8bbe\u7f6e\u6570\u5b57\u901a\u9053\u524d\u7aef\u7f16\u7801\u63a5\u5165\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_TVADJUST=\u83b7\u53d6TV\u8c03\u8282\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_TVADJUST=\u8bbe\u7f6eTV\u8c03\u8282\u914d\u7f6e\u5931\u8d25
+NET_ERROR_CONNECT_FAILED=\u8bf7\u6c42\u5efa\u7acb\u8fde\u63a5\u5931\u8d25
+NET_ERROR_SETCFG_BURNFILE=\u8bf7\u6c42\u523b\u5f55\u6587\u4ef6\u4e0a\u4f20\u5931\u8d25
+NET_ERROR_SNIFFER_GETCFG=\u83b7\u53d6\u6293\u5305\u914d\u7f6e\u4fe1\u606f\u5931\u8d25
+NET_ERROR_SNIFFER_SETCFG=\u8bbe\u7f6e\u6293\u5305\u914d\u7f6e\u4fe1\u606f\u5931\u8d25
+NET_ERROR_DOWNLOADRATE_GETCFG=\u67e5\u8be2\u4e0b\u8f7d\u9650\u5236\u4fe1\u606f\u5931\u8d25
+NET_ERROR_DOWNLOADRATE_SETCFG=\u8bbe\u7f6e\u4e0b\u8f7d\u9650\u5236\u4fe1\u606f\u5931\u8d25
+NET_ERROR_SEARCH_TRANSCOM=\u67e5\u8be2\u4e32\u53e3\u53c2\u6570\u5931\u8d25
+NET_ERROR_GETCFG_POINT=\u83b7\u53d6\u9884\u5236\u70b9\u4fe1\u606f\u9519\u8bef
+NET_ERROR_SETCFG_POINT=\u8bbe\u7f6e\u9884\u5236\u70b9\u4fe1\u606f\u9519\u8bef
+NET_SDK_LOGOUT_ERROR=SDK\u6ca1\u6709\u6b63\u5e38\u767b\u51fa\u8bbe\u5907
+NET_ERROR_GET_VEHICLE_CFG=\u83b7\u53d6\u8f66\u8f7d\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_VEHICLE_CFG=\u8bbe\u7f6e\u8f66\u8f7d\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GET_ATM_OVERLAY_CFG=\u83b7\u53d6atm\u53e0\u52a0\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_ATM_OVERLAY_CFG=\u8bbe\u7f6eatm\u53e0\u52a0\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GET_ATM_OVERLAY_ABILITY=\u83b7\u53d6atm\u53e0\u52a0\u80fd\u529b\u5931\u8d25
+NET_ERROR_GET_DECODER_TOUR_CFG=\u83b7\u53d6\u89e3\u7801\u5668\u89e3\u7801\u8f6e\u5de1\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_DECODER_TOUR_CFG=\u8bbe\u7f6e\u89e3\u7801\u5668\u89e3\u7801\u8f6e\u5de1\u914d\u7f6e\u5931\u8d25
+NET_ERROR_CTRL_DECODER_TOUR=\u63a7\u5236\u89e3\u7801\u5668\u89e3\u7801\u8f6e\u5de1\u5931\u8d25
+NET_GROUP_OVERSUPPORTNUM=\u8d85\u51fa\u8bbe\u5907\u652f\u6301\u6700\u5927\u7528\u6237\u7ec4\u6570\u76ee
+NET_USER_OVERSUPPORTNUM=\u8d85\u51fa\u8bbe\u5907\u652f\u6301\u6700\u5927\u7528\u6237\u6570\u76ee
+NET_ERROR_GET_SIP_CFG=\u83b7\u53d6SIP\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_SIP_CFG=\u8bbe\u7f6eSIP\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GET_SIP_ABILITY=\u83b7\u53d6SIP\u80fd\u529b\u5931\u8d25
+NET_ERROR_GET_WIFI_AP_CFG=\u83b7\u53d6WIFI ap\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_WIFI_AP_CFG=\u8bbe\u7f6eWIFI ap\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GET_DECODE_POLICY=\u83b7\u53d6\u89e3\u7801\u7b56\u7565\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_DECODE_POLICY=\u8bbe\u7f6e\u89e3\u7801\u7b56\u7565\u914d\u7f6e\u5931\u8d25
+NET_ERROR_TALK_REJECT=\u62d2\u7edd\u5bf9\u8bb2
+NET_ERROR_TALK_OPENED=\u5bf9\u8bb2\u88ab\u5176\u4ed6\u5ba2\u6237\u7aef\u6253\u5f00
+NET_ERROR_TALK_RESOURCE_CONFLICIT=\u8d44\u6e90\u51b2\u7a81
+NET_ERROR_TALK_UNSUPPORTED_ENCODE=\u4e0d\u652f\u6301\u7684\u8bed\u97f3\u7f16\u7801\u683c\u5f0f
+NET_ERROR_TALK_RIGHTLESS=\u65e0\u6743\u9650
+NET_ERROR_TALK_FAILED=\u8bf7\u6c42\u5bf9\u8bb2\u5931\u8d25
+NET_ERROR_GET_MACHINE_CFG=\u83b7\u53d6\u673a\u5668\u76f8\u5173\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SET_MACHINE_CFG=\u8bbe\u7f6e\u673a\u5668\u76f8\u5173\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GET_DATA_FAILED=\u8bbe\u5907\u65e0\u6cd5\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u6570\u636e
+NET_ERROR_MAC_VALIDATE_FAILED=MAC\u5730\u5740\u9a8c\u8bc1\u5931\u8d25
+NET_ERROR_GET_INSTANCE=\u83b7\u53d6\u670d\u52a1\u5668\u5b9e\u4f8b\u5931\u8d25
+NET_ERROR_JSON_REQUEST=\u751f\u6210\u7684json\u5b57\u7b26\u4e32\u9519\u8bef
+NET_ERROR_JSON_RESPONSE=\u54cd\u5e94\u7684json\u5b57\u7b26\u4e32\u9519\u8bef
+NET_ERROR_VERSION_HIGHER=\u534f\u8bae\u7248\u672c\u4f4e\u4e8e\u5f53\u524d\u4f7f\u7528\u7684\u7248\u672c
+NET_SPARE_NO_CAPACITY=\u70ed\u5907\u64cd\u4f5c\u5931\u8d25, \u5bb9\u91cf\u4e0d\u8db3
+NET_ERROR_SOURCE_IN_USE=\u663e\u793a\u6e90\u88ab\u5176\u4ed6\u8f93\u51fa\u5360\u7528
+NET_ERROR_REAVE=\u9ad8\u7ea7\u7528\u6237\u62a2\u5360\u4f4e\u7ea7\u7528\u6237\u8d44\u6e90
+NET_ERROR_NETFORBID=\u7981\u6b62\u5165\u7f51
+NET_ERROR_GETCFG_MACFILTER=\u83b7\u53d6MAC\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_MACFILTER=\u8bbe\u7f6eMAC\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_GETCFG_IPMACFILTER=\u83b7\u53d6IP/MAC\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_SETCFG_IPMACFILTER=\u8bbe\u7f6eIP/MAC\u8fc7\u6ee4\u914d\u7f6e\u5931\u8d25
+NET_ERROR_OPERATION_OVERTIME=\u5f53\u524d\u64cd\u4f5c\u8d85\u65f6
+NET_ERROR_SENIOR_VALIDATE_FAILED=\u9ad8\u7ea7\u6821\u9a8c\u5931\u8d25
+NET_ERROR_DEVICE_ID_NOT_EXIST=\u8bbe\u5907ID\u4e0d\u5b58\u5728
+NET_ERROR_UNSUPPORTED=\u4e0d\u652f\u6301\u5f53\u524d\u64cd\u4f5c
+NET_ERROR_PROXY_DLLLOAD=\u4ee3\u7406\u5e93\u52a0\u8f7d\u5931\u8d25
+NET_ERROR_PROXY_ILLEGAL_PARAM=\u4ee3\u7406\u7528\u6237\u53c2\u6570\u4e0d\u5408\u6cd5
+NET_ERROR_PROXY_INVALID_HANDLE=\u4ee3\u7406\u53e5\u67c4\u65e0\u6548
+NET_ERROR_PROXY_LOGIN_DEVICE_ERROR=\u4ee3\u7406\u767b\u5165\u524d\u7aef\u8bbe\u5907\u5931\u8d25
+NET_ERROR_PROXY_START_SERVER_ERROR=\u542f\u52a8\u4ee3\u7406\u670d\u52a1\u5931\u8d25
+NET_ERROR_SPEAK_FAILED=\u8bf7\u6c42\u558a\u8bdd\u5931\u8d25
+NET_ERROR_NOT_SUPPORT_F6=\u8bbe\u5907\u4e0d\u652f\u6301\u6b64F6\u63a5\u53e3\u8c03\u7528
+NET_ERROR_CD_UNREADY=\u5149\u76d8\u672a\u5c31\u7eea
+NET_ERROR_DIR_NOT_EXIST=\u76ee\u5f55\u4e0d\u5b58\u5728
+NET_ERROR_UNSUPPORTED_SPLIT_MODE=\u8bbe\u5907\u4e0d\u652f\u6301\u7684\u5206\u5272\u6a21\u5f0f
+NET_ERROR_OPEN_WND_PARAM=\u5f00\u7a97\u53c2\u6570\u4e0d\u5408\u6cd5
+NET_ERROR_LIMITED_WND_COUNT=\u5f00\u7a97\u6570\u91cf\u8d85\u8fc7\u9650\u5236
+NET_ERROR_UNMATCHED_REQUEST=\u8bf7\u6c42\u547d\u4ee4\u4e0e\u5f53\u524d\u6a21\u5f0f\u4e0d\u5339\u914d
+NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR=Render\u5e93\u542f\u7528\u9ad8\u6e05\u56fe\u50cf\u5185\u90e8\u8c03\u6574\u7b56\u7565\u51fa\u9519
+NET_ERROR_UPGRADE_FAILED=\u8bbe\u5907\u5347\u7ea7\u5931\u8d25
+NET_ERROR_NO_TARGET_DEVICE=\u627e\u4e0d\u5230\u76ee\u6807\u8bbe\u5907
+NET_ERROR_NO_VERIFY_DEVICE=\u627e\u4e0d\u5230\u76ee\u6807\u8bbe\u5907
+NET_ERROR_CASCADE_RIGHTLESS=\u65e0\u7ea7\u8054\u6743\u9650
+NET_ERROR_LOW_PRIORITY=\u4f4e\u4f18\u5148\u7ea7
+NET_ERROR_REMOTE_REQUEST_TIMEOUT=\u8fdc\u7a0b\u8bbe\u5907\u8bf7\u6c42\u8d85\u65f6
+NET_ERROR_LIMITED_INPUT_SOURCE=\u8f93\u5165\u6e90\u8d85\u51fa\u6700\u5927\u8def\u6570\u9650\u5236
+NET_ERROR_SET_LOG_PRINT_INFO=\u8bbe\u7f6e\u65e5\u5fd7\u6253\u5370\u5931\u8d25
+NET_ERROR_PARAM_DWSIZE_ERROR=\u5165\u53c2\u7684dwsize\u5b57\u6bb5\u51fa\u9519
+NET_ERROR_LIMITED_MONITORWALL_COUNT=\u7535\u89c6\u5899\u6570\u91cf\u8d85\u8fc7\u4e0a\u9650
+NET_ERROR_PART_PROCESS_FAILED=\u90e8\u5206\u8fc7\u7a0b\u6267\u884c\u5931\u8d25
+NET_ERROR_TARGET_NOT_SUPPORT=\u8be5\u529f\u80fd\u4e0d\u652f\u6301\u8f6c\u53d1
+NET_ERROR_VISITE_FILE=\u8bbf\u95ee\u6587\u4ef6\u5931\u8d25
+NET_ERROR_DEVICE_STATUS_BUSY=\u8bbe\u5907\u5fd9
+NET_USER_PWD_NOT_AUTHORIZED=\u4fee\u6539\u5bc6\u7801\u65e0\u6743\u9650
+NET_USER_PWD_NOT_STRONG=\u5bc6\u7801\u5f3a\u5ea6\u4e0d\u591f
+NET_ERROR_NO_SUCH_CONFIG=\u6ca1\u6709\u5bf9\u5e94\u7684\u914d\u7f6e
+NET_ERROR_AUDIO_RECORD_FAILED=\u5f55\u97f3\u5931\u8d25
+NET_ERROR_SEND_DATA_FAILED=\u6570\u636e\u53d1\u9001\u5931\u8d25
+NET_ERROR_OBSOLESCENT_INTERFACE=\u5e9f\u5f03\u63a5\u53e3
+NET_ERROR_INSUFFICIENT_INTERAL_BUF=\u5185\u90e8\u7f13\u51b2\u4e0d\u8db3
+NET_ERROR_NEED_ENCRYPTION_PASSWORD=\u4fee\u6539\u8bbe\u5907ip\u65f6,\u9700\u8981\u6821\u9a8c\u5bc6\u7801
+NET_ERROR_SERIALIZE_ERROR=\u6570\u636e\u5e8f\u5217\u5316\u9519\u8bef
+NET_ERROR_DESERIALIZE_ERROR=\u6570\u636e\u53cd\u5e8f\u5217\u5316\u9519\u8bef
+NET_ERROR_LOWRATEWPAN_ID_EXISTED=\u8be5\u65e0\u7ebfID\u5df2\u5b58\u5728
+NET_ERROR_LOWRATEWPAN_ID_LIMIT=\u65e0\u7ebfID\u6570\u91cf\u5df2\u8d85\u9650
+NET_ERROR_LOWRATEWPAN_ID_ABNORMAL=\u65e0\u7ebf\u5f02\u5e38\u6dfb\u52a0

+ 7 - 1
src/test/java/com/usoftchina/ss/dahua/Main.java

@@ -1,5 +1,6 @@
 package com.usoftchina.ss.dahua;
 
+import com.usoftchina.ss.dahua.lib.FaceRecognitionService;
 import com.usoftchina.ss.dahua.lib.INetSdk;
 
 /**
@@ -7,11 +8,15 @@ import com.usoftchina.ss.dahua.lib.INetSdk;
  * @date 2019/2/15
  */
 public class Main {
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
         INetSdk sdk = new INetSdk();
+//        System.out.println(sdk.getVersion());
         sdk.init();
+        FaceRecognitionService faceRecognitionService = new FaceRecognitionService(sdk);
         try {
             sdk.login("10.1.80.208", 37777, "admin", "A12345678");
+            System.out.println(faceRecognitionService.add("42900419901021409X", "应鹏",
+                    FaceRecognitionService.Sex.MALE));
         } finally {
             try {
                 sdk.logout();
@@ -20,4 +25,5 @@ public class Main {
             }
         }
     }
+
 }